Changelog: v0.9.1-pre published
Changelog: Windows >2 GB write fix
Changelog: record-count cap fix
Changelog: v0.9.0-pre published
Legacy bridge removed; status note
Changelog: command and switch audit
Changelog: v0.8.0-pre published
Changelog: console 1:1 with the original
Changelog: v0.7.0-pre published
param15 pre-post-filter stream fix (65a00a5); v0.6.0-pre pending list corrected
Changelog: v0.6.0-pre published
Image model ported: decr_param 3 = NzImageModel, wide corpus 1240/1240; two new -co/-cO open items
docs: BMP image model scoped
docs: -cd/-cD cluster fully closed; 1233/1240
changelog: parallel ring sizing from p1
changelog: v0.5.0-pre
docs: -cd/-cD cluster resolved into three causes, two closed
docs: the -cO ring-lifetime bugs, and the two decode gaps left
docs: text-transform bit 0x40 ported
docs: text-transform bit 0x40 decoded from data
docs: -cO is ~7.5% on real files; text-transform bit 0x40 unported
docs: -cc declined by default for every user; the suites could not see it
docs: fuzzing corrupt input found an OOB write, a crash and a DoS
docs: four decode gaps closed; one failure left
docs: multi-file metadata records, and what closing them fixed
docs: retract two conclusions about the last failure; it is not inherited state Classifying every differing word shows the "580 bytes of model divergence at block-2 entry" is almost entirely pointer fields baked into the captured cold blob plus a per-slot statistic counter. The state effectively matches, so the divergence is introduced inside block 2 and the next step is a chunk-boundary comparison -- which needs the real chunk-loop address, since the real engine does not copy per chunk. Adds two method notes: classify differing words before reading a memory diff as drift, and a data watchpoint only fires when the value changes.
docs: reframe the last failure -- it is an address-mapping question, not a value one Measured the model memory against the binary's: 580 differing bytes of 17.3M at block-2 entry, 474 of them from the cold state. But overwriting the cold state with the binary's values breaks block 1, and the tier2 align table's apparent mismatch is an artefact of a port-invented address. So the question is which cells this port places where the original does not. Adds two method notes, including: a port-invented address is not evidence about the original, and run the suite before believing a measured fix.
docs: synthetic suite 88/88 (100%); the audio defect is fully closed FUN_0809bdc0 is ported, which closes decr_param==2 audio for all three codecs. Every synthetic fixture now decodes natively for all eight methods with zero bridge, and the real corpus is 479/480 -- one file left in the whole project, the already-localised -cO literal bit. Also records that the notes' "Fenwick tree" description of FUN_0809bdc0 did not survive reading it, and how the initial tables were derived when the builder had no decompile either.
docs: -cc at 60/60; open work down to two defects The last -cc failure was our own verification gate declining a byte-exact decode, because the entry's checksum is a type-5 chunk record that need not sit in the front metadata run. Seven of eight codecs are now perfect on the real corpus and the three leftovers are two independent defects. Adds two method notes: check whether the decode is actually wrong before investigating the decoder, and a correct decode is its own oracle for locating metadata in the container.
docs: audio defect closed for -cc/-cO -- it was per-codec constants, not algorithm The largest open item is resolved for two of its three codecs, and the cause was three constants hardcoded to -cO's values rather than any missing algorithm. Open work is down to four corpus failures across three independent defects, with -co's unported bit-count decoder class the only genuinely unported code left. Adds three method notes, the sharpest being: a hand-derivation that contradicts a measurement is wrong, even twice in a row.