Skip to content

fix(dancer): carry the accepted parts so the rig stage reruns from the tree - #89

Merged
firejune merged 1 commit into
mainfrom
jinni/88-dancer-rig-stage
Oct 31, 2026
Merged

firejune merged 1 commit into
mainfrom
jinni/88-dancer-rig-stage

Conversation

@firejune

@firejune firejune commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #88.

The dancer's rig stage can now run from a clean checkout. The accepted bottomwear was still in the tree, 4 px of padding away from the hash the guard declares, so the guard is unchanged and the art does not move.

Why it broke

  • explicitImageHash hashes the unpadded decoded RGBA buffer, while producer/rig/images/ holds images padded by 4 px. That is why the card saw a third value: 2c9aea37… is the padded PNG's file hash.
  • Assembling on the pinned @rig-c/parts 1.64.0 still gives bf18e918…. Current parts give a9faf2ac…, because assembly now keeps 19 fringe pixels where bottomwear crosses the thighs, as a turn-moving pair.

Verification

HQ ran these from a clean copy of the tracked and new files.

Command Exit Figures
python3 check-inputs.py 0 all three closures pass
Crop 4 px from producer/rig/images/bottomwear.png, hash the RGBA n/a bf18e918…, equal to the guard and to producer/parts/bottomwear.png
rig --config dancer/config.json --parts dancer/producer on 1.64.0 0 31 files, 0 differ from producer/rig/
The same on 2.0.0 0 gate green, images identical, only rig.json differs

Byte identity on the pinned version is what covers the render: the inputs to the accepted dance do not move. The lane also ran the v4 replay, which reproduced its receipt, and node --test tools/verify-producer.test.mjs, which passed.

Rejected

  • Rehashing the guard to a9faf2ac…: that changes the art by 19 pixels and is what the guard exists to refuse.
  • Regenerating the explicit mesh payload: the same art change, for no gain over carrying the accepted parts.
  • Re-assembling config.json directly: it skips the setup-order path and moves sleeve and torso projection ownership.

build.sh now copies the assembled parts to the root of its output, because verify-producer.mjs refuses an output with no parts.json and parts/ there.

🤖 Generated with Claude Code

…e tree

The rig stage had no parts to read in a clean checkout, and a fresh assemble on
current parts refused the guard on bottomwear. The tree held only the padded rig
images, so the accepted input could not be reached.

The accepted part never left the tree: cropping the 4 px padding from
producer/rig/images/bottomwear.png gives the decoded RGBA hash the guard
declares. Current parts differ by 19 fringe pixels because assembly now keeps
fringe between turn-moving pairs, so re-assembling would change the art.

producer/ now carries parts.json and the 28 unpadded parts, and the verifier and
manifests hold them. `rig --parts dancer/producer` on the pinned 1.64.0 writes
all 31 files byte-identical to producer/rig. The guard is unchanged.

Closes #88

Co-Authored-By: Jinni <342598851+fj-jinni[bot]@users.noreply.github.com>
Co-Authored-By: Roa <342598975+fj-roa[bot]@users.noreply.github.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-31T15:58:29.360433Z f890b9e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@firejune
firejune merged commit 9155edf into main Oct 31, 2026
2 checks passed
@firejune
firejune deleted the jinni/88-dancer-rig-stage branch October 31, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

dancer: the rig stage cannot be re-run from the tree

1 participant