Commit graph

2 commits

Author SHA1 Message Date
igneum-labs
febf98e273 Program id derivation: every pack's program.json states its own recipe (the record maker print_every_pack_derivation, ignored in the suite, rebuilds each pack as the pack tests do); the twelve readwidth mix packs keep their text (a class name the parser no longer accepts)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 20:36:54 +00:00
igneum-labs
6f2d63c826 Program id derivation stated exactly (adv-accept-3 documentation finding, 7 October 2026): the id and its printed derivation come from one byte recipe; program.json and spec 1.4.6 name the 'sub/' || sub_version_le16 suffix of generator 4 and the class-rung form; every pinned pack's id re-derived from its own text
generator.rs: IdRecipe (bytes + labelled parts), program_id_recipe and program_id_class_recipe build the bytes the id hashes and the text program.json prints, Program::program_id_derivation picks the form as program_id does. emit.rs prints that text. Spec 01 section 1.4.6 (the "Program id" paragraph) states the suffix, the class v5 form (generator 5, no suffix) and the rung form. tests/derivation.rs re-derives each of the 18 pinned packs' ids from its own derivation string with the pack's fields only (the plain text gives 8aa9f185d63f269e for the devnet v4 pack where the id is a785001687d8688a: the known-failed case). Packs: program.json re-exported for the 7 generator-4 packs and the 9 shadow ladder packs, one line each (the derivation); every other file byte-identical on re-export, ids and fingerprints unchanged. No object change.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-07 20:25:53 +00:00