Skip to content

feat(family): README preview for each of the four outfits - #66

Merged
firejune merged 2 commits into
mainfrom
codex/examples-30-outfit-previews
Oct 24, 2026
Merged

firejune merged 2 commits into
mainfrom
codex/examples-30-outfit-previews

Conversation

@firejune

Copy link
Copy Markdown
Collaborator

The family README showed the office outfit only, while the suite holds
20 rigs in four outfits (#30). Each outfit now has its own animated
WebP at the existing office presentation: 960x832, 67 displayed frames,
the original 49/50 ms duration array totalling 3333 ms, quality 80.
Every preview carries a metadata JSON recording its frames, timing,
sources and loop figures. The office preview is re-rendered by the
same recipe.

Loop bar: the renderer gives no closure verdict, and a physics idle
never returns to a bit-identical first frame (the live track period
differs from the nominal 10/3 s by about 8e-8 s per cycle). The bar is
therefore the measured wrap: the decoded last-to-first step must be no
larger than the largest adjacent-frame step. The one-period endpoint
difference is reported, not gated.

Outfit Bytes wrap MAE max adjacent MAE
office 7,402,158 1.489 2.403
homewear 7,142,300 1.642 2.544
swimwear 7,390,994 2.419 2.635
uniform 6,679,726 2.439 2.616

Rejected: an exact endpoint equality bar (unreachable for physics),
blending or copying endpoint frames, and any change to rigs, physics,
art or the viewer. Nova job 20261024T171943Z-779ea2ca passed; frames
hashed and deleted after the sheet was read.

Closes #30

Verification: targeted Node 3/3 and Python 3/3 tests pass, the whole-chain preflight passes, and Nova job 20261024T171943Z-779ea2ca166a4732afc09061915546c3 passed (result sha256 f6430ffd…). HQ re-hashed all four WebPs against the job output and read the four-outfit sheet.

🤖 Generated with Claude Code

The family README showed the office outfit only, while the suite holds
20 rigs in four outfits (#30). Each outfit now has its own animated
WebP at the existing office presentation: 960x832, 67 displayed frames,
the original 49/50 ms duration array totalling 3333 ms, quality 80.
Every preview carries a metadata JSON recording its frames, timing,
sources and loop figures. The office preview is re-rendered by the
same recipe.

Loop bar: the renderer gives no closure verdict, and a physics idle
never returns to a bit-identical first frame (the live track period
differs from the nominal 10/3 s by about 8e-8 s per cycle). The bar is
therefore the measured wrap: the decoded last-to-first step must be no
larger than the largest adjacent-frame step. The one-period endpoint
difference is reported, not gated.

| Outfit | Bytes | wrap MAE | max adjacent MAE |
| --- | ---: | ---: | ---: |
| office | 7,402,158 | 1.489 | 2.403 |
| homewear | 7,142,300 | 1.642 | 2.544 |
| swimwear | 7,390,994 | 2.419 | 2.635 |
| uniform | 6,679,726 | 2.439 | 2.616 |

Rejected: an exact endpoint equality bar (unreachable for physics),
blending or copying endpoint frames, and any change to rigs, physics,
art or the viewer. Nova job 20261024T171943Z-779ea2ca passed; frames
hashed and deleted after the sheet was read.

Closes #30

Co-Authored-By: Jinni <342598851+fj-jinni[bot]@users.noreply.github.com>
Co-Authored-By: Naru <342599188+fj-naru[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-24T17:34:04.448807Z — 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 chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

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

const mp4 = option('--mp4', null) === null ? null : path.resolve(option('--mp4'));
const output = mp4 !== null && option('--out', null) === null ? null : path.resolve(option('--out', path.join(family, 'docs/family-preview.webp')));
const outfit = option('--outfit', 'office');
const output = mp4 !== null && option('--out', null) === null ? null : path.resolve(option('--out', path.join(family, `docs/family-preview${outfit === 'office' ? '' : '-'+outfit}.webp`)));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep preflight output separate from published previews

Running --preflight with a fresh evidence directory and no explicit --out still selects the published outfit preview here. Although help describes preflight as a bounded 8×8 reader probe, the script passes this destination to preview-loop.py, which overwrites the WebP with the tiny probe, and then replaces its JSON metadata too. Consequently, checking the renderer setup destroys the existing README preview. Default preflight output to the evidence directory, or require an explicit probe destination.

Useful? React with 👍 / 👎.

AI review on #66 (P2): running --preflight without --out wrote the 8x8
reader probe over the published README preview and its metadata, so
checking the renderer setup destroyed the preview. In --preflight mode
the default output is now the evidence directory, and an --out that
resolves inside family/docs is refused by name before anything is
imported or written (PREFLIGHT_OUT_IS_PUBLISHED).

Two tests added: preflight without --out leaves family/docs/family-
preview.webp byte-identical; preflight with --out into family/docs is
refused. Node 5/5 pass. The four committed previews and their JSON are
unchanged (hashes verified).

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

P2 (preflight overwrote the published preview) fixed in 02eed3e: preflight defaults to the evidence directory, and an --out into family/docs is refused as PREFLIGHT_OUT_IS_PUBLISHED. Two regression tests were added. The four previews are byte-unchanged.

@firejune
firejune merged commit f894655 into main Oct 24, 2026
2 checks passed
@firejune
firejune deleted the codex/examples-30-outfit-previews branch October 24, 2026 17:48
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.

Family preview across all four outfits

1 participant