Skip to content

docs(media): shrink assets/feature-noderoom-hero.gif (2843694 -> 2154783 bytes) - #25

Merged
HomenShum merged 3 commits into
mainfrom
claude/gif-weight
Oct 10, 2026
Merged

HomenShum merged 3 commits into
mainfrom
claude/gif-weight

Conversation

@HomenShum

@HomenShum HomenShum commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Shrinks the README hero GIF (README.md line 28 embeds it). Path and name unchanged; README untouched.

before after
bytes 2843694 2154783 (-24.2%)
frames 188 188
size 720x405 720x405
delays 126 x 0.08s + 62 x 0.09s, total 15.66s identical (per-frame delay list cmp-identical)
loop forever forever

Method: gifsicle@7.0.1 -O3 --lossy=3. Bound: the 2,000,000-byte target was NOT reachable at SSIM >= 0.98. Sweep (ffmpeg ssim, all 188 frames, original vs shrunk):

--lossy bytes min per-frame SSIM frames < 0.98
0 (lossless -O3) 2748600 1.000000 0
1 2450273 0.996937 0
2 2270238 0.993782 0
3 2154783 0.983813 0
4 2089810 0.978672 1
6 1981518 0.969061 186
20 1664922 0.929855 188

So lossy=3 is the highest setting that keeps every frame >= 0.98; the first setting under 2 MB (lossy=6) fails the bar on 186 of 188 frames.

6 evenly spaced frames (index: ffmpeg SSIM / ImageMagick dissimilarity):
0: 0.985513 / 0.00533; 37: 0.988253 / 0.00452; 75: 0.987387 / 0.00474; 112: 0.985788 / 0.00536; 150: 0.987881 / 0.00459; 187: 0.988570 / 0.00438.

Out of scope: assets/feature-trialscope.gif (5.8 MB) is not embedded in the README.

Codex read-only review (codex-cli 0.162.0-alpha.17.2, -s read-only): VERDICT: APPROVED. Diff is exactly assets/feature-noderoom-hero.gif; 188 frames, 720x405, infinite loop, delays unchanged (126 x 80ms, 62 x 90ms); independent Pillow/skimage SSIM all 188 >= 0.98 (min 0.983458, mean 0.987648); author email and Co-Authored-By trailer present. No files modified.

Evidence manifest re-pin (needed for the required check). npm run check runs node scripts/featureclip-evidence.mjs proof, which compares proof/nodekit-present.evidence-index.json and proof/featureclip-evidence.receipt.json with evidence/nodekit-present.manifest.json; the manifest pinned the old GIF bytes, so check-and-smoke-render failed. Fix, using the script's own project --write (no change to scripts/, .github/, package.json or any threshold):

artifact noderoom-hero-walkthrough sha256 bytes
old b443e36ac89a215027104576eb29c8bc4b258660872a43775390b6ab0f6a1673 2843694
new ec0addd6a402f60e23c0ad8cf7016d260c46cfe9c81f9f4d8fbf64df580dc244 2154783

Manifest change: sha256 + bytes, plus one appended limitation recording the re-encode (gifsicle@7.0.1 -O3 --lossy=3, lossy, min per-frame SSIM 0.983813, old pin kept as provenance); existing limitations, dimensions, sourceTruth and basis untouched. Projection and receipt regenerated by project --write. Local: node scripts/featureclip-evidence.mjs proof exit 0, npm ci && npm run check exit 0 (20/20 tests).

Codex read-only re-review of head 047bef4 (-s read-only): VERDICT: APPROVED on (a) gate files unchanged, (b) manifest change limited to the one artifact + appended limitation, (c) proof files match script regeneration.

🤖 Generated with Claude Code

HomenShum and others added 3 commits October 9, 2026 16:24
…ss gifsicle (2843694 -> 2154783 bytes)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Manifest artifact noderoom-hero-walkthrough now pins sha256 ec0addd6...244 / 2154783 bytes
(was b443e36a...673 / 2843694 bytes, kept as provenance in the appended limitation).
Projection and receipt regenerated with `node scripts/featureclip-evidence.mjs project --write`;
gate script, CI workflow and package.json are untouched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The shrink used gifsicle@7.0.1 -O3 --lossy=3 (lossy, min per-frame SSIM 0.983813 per the PR body),
not a lossless pass; correct the provenance string and regenerate projection and receipt via
`node scripts/featureclip-evidence.mjs project --write`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@HomenShum
HomenShum merged commit e0a373c into main Oct 10, 2026
2 checks passed
@HomenShum
HomenShum deleted the claude/gif-weight branch October 10, 2026 08:42
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.

1 participant