Skip to content

Superframe 0.2.0

Latest

Choose a tag to compare

@HarperZ9 HarperZ9 released this 28 Oct 08:22
· 9 commits to main since this release
adc0836

Superframe is one part of a larger creative and study platform: the engine part, with the laws, media and measures the other tools draw on. This release adds a study generator for any image and nine measured libraries. Each library was written against a pre-registration. Its README keeps the PREREG and the RESULTS, and the misses stay in the record.

node superframe/tools/study.mjs picture.png --out out/study/picture
python -I superframe/tools/study_verify.py out/study/picture/study.json superframe/schemas/study.schema.json
npm test

New libraries and what their tests hold

Library Tested claim Recorded misses and limits
lib/study Colour shares come within 0.5% on known images. A uniform grey gives one swatch. Shuffled pixels keep the palette while coherence falls. Repeats are byte-identical. A stdlib Python checker confirms the canonical bytes, the receipt, the schema and the plate hashes, and it rejects a tampered copy. Colour is the only criterion so far.
lib/body Knee lock and screw-home hold. Planted jaw breaks are found at 19.70 and 13.15 mm. Contrapposto reads on 98% of 200 poses, and plain hinges fail as they must. The whole jaw path is 0.475 mm RMS off one circle, where over 1 mm was predicted. Same-direction stances are flagged in 98.5% of cases against a 99% line.
lib/compose The vanishing point lands within 0.25% of width in 12 of 12 scenes. Shuffled directions find no point. The 200 mm control holds but is fragile. The anchor test is weak.
lib/stack Streak length equals speed times shutter. Lag peaks sit at the planted offset. A cadence of twos reads 15.00 Hz. The motion lens reads threes as still. The lens is not in this repository.
lib/value Every pixel above 0.95 is specular. The illuminant-swap pair matches at dE 0.000 under D65 and splits by 30 under A. The bright-pixel floor missed (0.0089% against 0.05%). Grazing gold reads 0.9696 against 0.97.
lib/quantize CIEDE2000 matches published pairs to 4.2e-5. Dither stays under 3 dE00 at 60 ppd. The area-true screen lands within 0.14%. Nearest mapping on red-cyan reads 5.68 against 6. Bayer 4x4 banding reads 5.14 against 3. The duotone 8-bit residual is 0.0059 against 0.004.
lib/marble, lib/fluid The marbling inverse is exact, and each source keeps a share equal to its weight. A thin-layer Stokes flow with floor friction gives the tine map, with nothing fitted. Concept-ink tests skip without the reference library.
lib/medium The rainbow sits on Descartes' angle. Thick-plate rings match Newton's diameters within 1.5% and 2%. MaxEnt-2 light never goes negative. A hidden picture matches within dE 0.5 in daylight and appears by candlelight. Light-table and native-kernel tests skip until built.
lib/bio A hard-core packing reproduces tissue spacing, and random placement fails it.

Also new: the native light kernel as source, the pre-registrations in superframe/docs/prereg/, adapters for bio, marble, spectral and study, and a generated node reference (superframe/docs/NODES.md, 171 technique nodes and 31 converters).

Tests

461 tests. A clean clone passes 446 and skips 15. The skipped tests need a render, a light table, the reference library or a native build, and none of these ship here. CI runs the suite on every pull request.

Changed

Node 24 or later is now required. 0.1.0 said Node 22, but six of its golden hashes fail on Node 22. The suite passes on Node 24 and 25. The cause has not been traced; a change in the engine's floating-point maths is the likely candidate.

Limits

Renders, clips and plates are written under out/ and are not in the repository. Tools that need outside data or programs read their paths from settings (SUPERFRAME_PY, SUPERFRAME_DECOMPOSE, SUPERFRAME_LIBRARY, SUPERFRAME_CIE, FFMPEG). The README lists them.