Skip to content

fix(family): state the hand mesh repairs of Characters 1, 2, 4 and 5 in their configs - #68

Merged
firejune merged 2 commits into
mainfrom
jinni/examples-31
Oct 24, 2026
Merged

firejune merged 2 commits into
mainfrom
jinni/examples-31

Conversation

@firejune

Copy link
Copy Markdown
Collaborator

The committed Character 1 build carried hand-repaired meshes for bottomwear, topwear and hair_front that its config could not state. @rig-c/parts 1.62.0 carries the explicit mesh payload (rig-c/parts#718), so the config now states all three as meshes.<part>.explicit and the producer output is committed. Bars as amended on #31:

Bar Result
Fresh rig-parts rig --config at 1.62.0 vs committed out/rig/ all 20 producer files byte-identical (re-run by HQ independently)
topwear payload vs accepted repair equal, sha256 741a1b7d…
bottomwear / hair_front payloads equal (uvs, triangles, weights, hull, slot)
other meshes same object as committed
rig.json same object; producer print format adopted (718,344 → 514,965 B)
images 16 byte-identical; topwear.png has identical decoded RGBA (624×458, 0 differing px) and the producer's canonical encoding is adopted
motion.json byte-identical
rig-parts check PASS (10/11 bars measured, 1 skipped)
verify-accepted.mjs PASS on all 20 rigs (5 characters × 4 outfits) at 1.62.0
node --test verify-accepted.test.mjs 13/13

The other four characters keep their existing declared repairs until they get their own migration cards.

Closes #31

🤖 Generated with Claude Code

… the producer output

The committed Character 1 build carried hand-repaired meshes for bottomwear,
topwear and hair_front that its config could not state, so nobody could
rebuild the example and get the example. @rig-c/parts 1.62.0 carries the
explicit mesh payload (#718), so the config now states all three as
meshes.<part>.explicit (uvs, triangles, weights, hull, bone-name segments,
image and region hashes), and the producer output is committed.

A fresh rig-parts rig --config at 1.62.0 reproduces all 20 producer files
byte-for-byte (re-run by HQ). The topwear payload equals the accepted repair
(sha256 741a1b7d...); rig.json is the same object as before in the
producer's print format (718,344 -> 514,965 B); topwear.png has identical
decoded RGBA in the producer's canonical encoding; motion and the other 16
images are byte-identical. check PASS; verify-accepted PASS on all 20 rigs;
13/13 tool tests.

Closes #31

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 24, 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-24T22:08:19.240781Z 926b4b6 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.

@chatgpt-codex-connector

Copy link
Copy Markdown

💡 Codex Review

"explicit": {
"image_sha256": "e4b89aea93b1d5663614db6b847cc441d9c2419e5f4eadd8ebeb1e781dbbc0fa",
"region_sha256": "5b320ce780bab8b71571ffb59ba2cb47a88565cf51748a93778950c59de92960",

P2 Badge Preserve bust-region editing when migrating topwear to explicit meshes

Replacing topwear.contour without updating its consumers breaks Roa's existing bust-region editor. In the Python-backed viewer, read_all_regions() now returns an empty object for Roa's office regions, while syncBustEditorInputs() in family/viewer/index.html dereferences regs.bust_r.cx. Rebuilding Roa from any outfit also fails: rebuild_all_outfits_for_character() processes office first, and rebuild_single_outfit_topwear() unconditionally accesses cfg["meshes"]["topwear"]["contour"] at family/tools/bust-region-rebuild.py:163, raising KeyError: 'contour' (reproduced with the new config). Adapt the region reader and rebuild path to the explicit representation alongside this migration so the existing editor remains usable.

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@firejune

Copy link
Copy Markdown
Collaborator Author

HQ: the Codex P2 is adopted as a real defect, since it reproduced the KeyError and the viewer dereference. The fix goes into the stacked #69 work: every reader of meshes.<part>.contour must handle an explicit mesh. Holding this PR until then.

…ion tools working on explicit meshes

Characters 2, 4 and 5 now state their hand mesh repairs as
meshes.<part>.explicit at @rig-c/parts 1.62.0, and a fresh producer build
reproduces every producer file (HQ re-ran all three: 0 differing files).
Character 4's hair_back adopts the producer's _d bindings: its config
declares stops on hairback_r/l and the committed weights had been pasted
from before applyStops, so the declaration wins (check PASS, 10/10 bars).
Character 5's config drops four cuff physics constraints the accepted rig
and cuff-physics.json never had. Character 3 stays on declared repairs:
its parts split across island slots, which explicit cannot state yet
(rig-c/parts#734).

Review fix (Codex P2 on #68): moving topwear off contour broke the
repository's region tooling. read_all_regions returned {} and the rebuild
raised KeyError('contour'). Each reader now resolves the pre-explicit
contour from declared-repairs.json (regenerated.meshConfig), the rebuild and
wave-author tools refuse an explicit mesh by name
(FAMILY_EXPLICIT_MESH_REFUSED, naming what to edit instead), and the viewer
no longer dereferences a missing region. 51/51 tool and viewer tests;
verify-accepted PASS on all 20 rigs.

Refs #69

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

Copy link
Copy Markdown
Collaborator Author

HQ: this PR now carries #69 as well (899df7a, stacked on 926b4b6). Characters 2, 4 and 5 are migrated the same way as Character 1. HQ independently rebuilt all four: 0 differing producer files. Character 3 is blocked on rig-c/parts#734 (a part split across island slots), so #69 stays open for it.

The Codex P2 above is fixed in 899df7a:

  • Each reader of meshes.*.contour now resolves the pre-explicit contour from declared-repairs.json.
  • The rebuild and wave-author tools refuse an explicit mesh by name: FAMILY_EXPLICIT_MESH_REFUSED, which says what to edit instead.
  • The viewer no longer dereferences a missing region.

The KeyError was reproduced before the fix and is gone after it. Tool and viewer tests: 51/51. verify-accepted: PASS on all 20 rigs.

@firejune firejune changed the title fix(family): state Character 1's mesh repairs in its config and adopt the producer output fix(family): state the hand mesh repairs of Characters 1, 2, 4 and 5 in their configs Oct 24, 2026
@firejune
firejune merged commit a575f92 into main Oct 24, 2026
2 checks passed
@firejune
firejune deleted the jinni/examples-31 branch October 24, 2026 23:19
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.

Character 1: the committed build carries a hand repair the config does not reproduce

1 participant