Repository navigation
·
59 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
- ci(release): fix zombie formula PRs — remove [skip ci], apply v0.8.0 SHA256s by @JackDanger in #112
- docs: add 7-zippy family banner to README by @JackDanger in #114
- ci: igzip T>1 guards and fix benchmark guard aggregation by @JackDanger in #113
- fix: correct parallel single-member decompression (v0.5.1) — supersedes #85 by @JackDanger in #90
- Implement single-member single- and parallel-decode with ISA-L optimizations in pure Rust by @JackDanger in #116
- Pure-Rust encoder: sole compress path, SF-chain speed levers, parallel T>1, zopfli crown engine by @JackDanger in #138
- Level-curve ratio holes: real L0 compressor + L1 insert-depth ratio win by @JackDanger in #139
- Unified compressor Stage A: crown engine relocates into compress::deflate by @JackDanger in #140
- Unified compressor Stage B: one bitwriter for every tier (+ latent align_to_byte bug fix) by @JackDanger in #141
- Unified compressor Stage C: one Huffman module tree by @JackDanger in #142
- Unified compressor Stage D: matchfinder tier vocabulary (legacy seed finder measured and kept) by @JackDanger in #143
- Unified compressor Stage E: deflate64 on shared modules, dead-code audit, outcome accounting by @JackDanger in #144
- Level-curve levers: L0 ACCEL retune + L1 short-match lazy-peek by @JackDanger in #145
- Near-optimal DP: strip bounds-check tax from find_min_cost_path (byte-identical) by @JackDanger in #146
- Near-optimal unchecked tranche 2: BT advance + tally + cache-fill (byte-identical) by @JackDanger in #147
- Tranche 3: huffman fast/header unchecked (kept cuts only; LTO-inliner finding documented) by @JackDanger in #148
- Fast-path K=2 software pipelining: overlap head-table loads (byte-identical) by @JackDanger in #149
- docs: FALSIFIED record — scalar-form emit batching (reopen trigger: real AVX2 intrinsics) by @JackDanger in #150
- anatomy-counters: exact semantic work-unit instrumentation (default-off, zero-cost) by @JackDanger in #151
- anatomy-counters: fast-path coverage (exact L0/L1 structural profile) by @JackDanger in #152
- docs: AVX2-intrinsics emit FALSIFIED (Gate-2 root-caused; ICF-architecture hypothesis recorded) by @JackDanger in #153
- docs: ICF uniform-record emit FALSIFIED (mechanism inverts hypothesis; third emit-graft record) by @JackDanger in #154
- emit counters + fourth FALSIFIED record: batched flush cadence (worst-case-bound mechanism) by @JackDanger in #155
- Allocation tranche: pre-sized input read + reused near-optimal Sink (byte-identical) by @JackDanger in #156
- l1-tune: runtime-tunable fast-path config + in-process Pareto search harness by @JackDanger in #157
- docs: pre-emption record — two-pass Inc1 reproduces falsified ICF+flush designs by @JackDanger in #158
- l1-tune: content-adaptive chain-matching lever + adversarial finder-switch test by @JackDanger in #159
- docs: emit FALSIFY chain complete 5-for-5 (amortized running-budget flush measured out) by @JackDanger in #160
- l1-tune: hash3 probe — length-3 visibility reverses the pigz-bin deficit by @JackDanger in #161
- l1-tune: HASH3-GATE — detector-composed length-3 probe reaches the ideal frontier by @JackDanger in #162
- zopfli squeeze: SIMD vector-min DP relax (ECT PR #146 port, byte-identical, +6% x86) by @JackDanger in #163
- l1-tune: bin6 blocker root-caused — threshold knife-edge + per-chunk T>1 reset (fixed config wins everywhere) by @JackDanger in #164
- Promote hash3-gate to default L1: smaller AND faster than pigz/gzip at every thread count by @JackDanger in #165
- Enforce the measurement-tooling boundary: migrate/delete all examples/ drivers (net −3,788 LOC) by @JackDanger in #166
- Promote lazy-peek widening: data.sqlite flips to a decisive win — family sweep extends to full breadth by @JackDanger in #167
- l1-tune: cost-gate peek tie-break measured out (grid-mismatch artifact named; falsify record + harness axis) by @JackDanger in #168
- l3-tune: lazy-at-L3 experiment record (66-82% of pigz-3 bin gap closed, not promoted under flip rule) by @JackDanger in #169
- docs: lazy-L3 strict-Pareto re-gate verdict (2/21 deterministic regressions block; detector-gating named next) by @JackDanger in #170
- l3-tune: LazyGated — first strict-Pareto-on-size config (21/21), wall adjudication to frozen cell gate by @JackDanger in #171
- Promote LazyGated to the default L3 strategy by @JackDanger in #172
- docs: pre-empt the two-pass ICF proposal (premise void — we are already two-pass) by @JackDanger in #173
- L1: frozen gate verdicts (insert-depth+bucket2 reverted; peek-gate falsified) + the LOSS-cell mechanism by @JackDanger in #174
- L1: keep the lean (HASH3-free) fastloop for text-classified blocks — byte-identical, faster on both arches by @JackDanger in #175
- T1 encoder: fix the RSS drop-in break, replace the vendor-parity oracle, and close 11 per-label cells by @JackDanger in #176
- T1 encoder: write sequences through reserved capacity (and fix the unsound bound the parked patch shipped with) by @JackDanger in #177
- FALSIFY: the window-wrap hoist wins L2 and regresses L6/L9 — reverted, measurements kept in the code by @JackDanger in #178
- Rules: convert ignored exhortations into hard stops; retract the T1==T4 cage at the root; land the campaign docs by @JackDanger in #179
- L3: delete the content detector (ordered 07-27) — smaller on every file, wall-neutral by @JackDanger in #180
- Campaign plan + block-budget falsification (docs and hook fix; no encoder behaviour change) by @JackDanger in #181
- tooling: a committed, guarded measurement loop for the encoder — plus the FALSIFY records that were never landed by @JackDanger in #182
- L1 vendor diff: port libdeflate's 2-way ht_matchfinder — 9 cells closed, 7 opened, NO-SHIP, and it locates the real lever by @JackDanger in #183
- L1 vendor-diff campaign: 2-way buckets + length-3 table — size PASSES, WALL KILLS IT (NO-SHIP, recorded) by @JackDanger in #184
- tooling: define and pin sil40 — the MIN_CORPORA member that had no definition anywhere by @JackDanger in #186
- fix(deflate): stored-block cost model over-charged by a sub-block; two formulas disagreed by @JackDanger in #187
- FALSIFY: lowering SOFT_MAX_BLOCK_LENGTH is worse too — the dial is closed both ways by @JackDanger in #188
- docs: the measured board decomposes by THREAD COUNT — 60% of failures are T4-only by @JackDanger in #190
- docs: DEFER the encoder campaign explicitly — blocked on decision D3, not on engineering by @JackDanger in #191
- probe(T>1): thread-aware chunk grid — 29 cells closed, 9 opened, NO-SHIP on clause 3 by @JackDanger in #189
- docs: the encoder we SHOULD be building, and every gap between it and what ships by @JackDanger in #192
- docs(G1): we are the INSTRUCTION CHAMPION at L1 and still lose on ratio — reframe by @JackDanger in #193
- perf(L1): close the micro-optimisation search on the ht finder — LLVM already did all of it by @JackDanger in #194
- perf(T>1): chunks-per-thread 4 → 2 — halve the seams again, board 203 → 198 by @JackDanger in #195
- docs: the WALL board exists at last — the only wall front is libdeflate, and only at T1 by @JackDanger in #196
- docs: the wall board is COMPLETE — we lose to nobody except libdeflate at T1 by @JackDanger in #197
- fix(rules): THIRTEEN falsification records were invisible to the machinery that reads them by @JackDanger in #198
- docs(G0): the L6 T1 wall gap is REGISTER SPILL in the chain walk — located per line by @JackDanger in #199
- docs(G0): vendor-anchored — we issue 1.88× libdeflate's READS in the matchfinder by @JackDanger in #201
- perf(hc): chain-base hoist WINS on the length-4 walk and LOSES one loop lower — both recorded by @JackDanger in #202
- tools(wall): the WALL board had no wrapper, and the binary would not admit it was instrumented by @JackDanger in #203
- FALSIFY(block-split): route (b) — delete the drift detector for a fixed quantum — costs 1.4-2.3% on the hardest size files by @JackDanger in #204
- board(wall): first guarded L6 T1 board — 8 of 8 libdeflate cells fail — and I headlined a GATE file by @JackDanger in #205
- FALSIFY(hc): the addressing-mode fix IS the deferral — two source mechanisms, one machine change by @JackDanger in #206
- structure(huffman): stop allocating two Vecs per Huffman code per block — 261 -> 161 allocs by @JackDanger in #207
- structure(sink): pool the 2.8 MB Sink like the matchfinder — T16 allocates 83.9 MB -> 30.8 MB by @JackDanger in #208
- chore(encoder): the T>1 driver re-asserted the RETRACTED byte-identity rule, and two doc comments contradicted their own constants by @JackDanger in #209
- docs(G8): T>1 copies the entire input for BUF_PAD it already has — verified, not built by @JackDanger in #210
- structure(statics): the RFC 1951 FIXED Huffman code was rebuilt on every parser entry by @JackDanger in #211
- docs(G9): the full board says L1 IS the campaign — and locates the one sanctioned reopen by @JackDanger in #212
- fix(cage): a unit test pinned the level map CLAUDE.md declares "free to change" — and a record violated a hard stop and survived by @JackDanger in #213
- docs(G10): the L5-L7 depth lever is blocked by the COST MODEL, not by search by @JackDanger in #215
- FALSIFY(lazy): extending the too-far rejection to length-4 loses 14.7 KB on dickens by @JackDanger in #216
- docs(G11): the missing middle is zlib-ng's fizzle_matches — located, and the near-optimal headroom is PROVEN by @JackDanger in #217
- docs(G14): 77% of the failing board is the T>1 path, not the parse by @JackDanger in #218
- docs: nine rules for finding structure instead of chasing a number by @JackDanger in #221
- measure+fix: matchfinder is at PARITY, reads are not the wall quantity, and the seam cannot be closed by grid tuning (+ -b actually works now) by @JackDanger in #219
- docs: zsh does not word-split unquoted parameters — four phantom findings in one session by @JackDanger in #225
- tools: tie-guard — the cheapest falsifier for any T1-altering change (~2 min vs ~20) by @JackDanger in #226
- tools(blockcensus,blockspans): BTYPE + block-span census over the existing block_walker by @JackDanger in #228
- docs(ROOT): the T>1 seam leg is a STEP FUNCTION — "make seams smaller" closes 0 of 109 cells by @JackDanger in #229
- tools(falsified):
make falsified— the 42 FALSIFY records as a 2-second index by @JackDanger in #230 - measure: the drop-in axis (green), four residual mechanisms, and five falsifications by @JackDanger in #224
- measure(board): decomposed by LEVEL x RIVAL — L1 is the largest failing class, and it is not the seam by @JackDanger in #231
- tools(lever): clause 3 is BLIND outside the sampled levels — #227 nearly shipped a violation at L8 by @JackDanger in #233
- PARK (no behaviour change): L4 Lazy(10,30) wins SIZE 11/11 and is blocked only by clause 5 by @JackDanger in #235
- measure: the wall board is ONE class, the instruments were lying, and the deficit is codegen by @JackDanger in #234
- fix(T>1): remove the UNGATED PROBE_CPT env read from the shipped chunk grid — non-negotiable #3 by @JackDanger in #236
- tools(lever): the level sampling is not a coverage gap — it fails the promotion rule's OWN Scope clause by @JackDanger in #237
- measure(meta): only 5 of 42 FALSIFY records carry a multi-arch verdict — 28 name no machine by @JackDanger in #238
- refactor(parse): one ParseState root into run_block; fix the retraction sweep that let the byte-identity cage survive in a memory leaf by @JackDanger in #239
- fix(falsified): index PARK records too — the anti-re-derivation command could not see them by @JackDanger in #240
- SHIP (size): T>1 depth + T>1-only exact-Huffman — 91 of 200 board cells closed, 0 opened, T1 untouched by @JackDanger in #227
- docs(root): delete the rule that mandated its own failure mode, and stop chilling instruments by @JackDanger in #241
- park(header): RLE-shaped histogram at T>1 — 23 size cells closed, NO-SHIP on clause 5 by @JackDanger in #242
- harness(board-wall): W4 freezes the subject binary — a cargo build mid-run silently swapped the compressor being measured by @JackDanger in #243
- fix(record): the L1 "2.19x gap" was never a vendor diff — our port is 1.6% FASTER than libdeflate on byte-identical output by @JackDanger in #245
- measure(L2/T1): the PARSE LOOP is 81.8% of our instruction excess; the matchfinder gives 12.1% BACK by @JackDanger in #244
- record(L1): scope the 2-way-bucket falsification to T1, M1, hyperfine — it is closing a class it never measured by @JackDanger in #247
- chore: delete every in-code FALSIFY record (user instruction) by @JackDanger in #250
- tools(fingerprint): mechanism fingerprints, a won-cells ledger, and a gap report — the campaign goal as executable tests by @JackDanger in #252
- test(ir-budget): instruction-per-byte ratchets — the wall axis's calibrated deterministic proxy by @JackDanger in #253
- test(anatomy): L0 is stored-only — assert the shipped contract, not the unreachable Fast0 path by @JackDanger in #254
- tools(trace): encoder-side span emitter — and it named PR #251's blocking mechanism on first contact by @JackDanger in #255
- test(anatomy): exact T1 pin suite over all 51 anatomy counters (fixtures x L{1,2,6,9}) by @JackDanger in #262
- test(encoder): property-based roundtrip suite over the encoder's edge geometry by @JackDanger in #261
- tools(ldx): per-decision divergence oracle — first divergent decision, not just "+N bytes" by @JackDanger in #264
- test(fingerprint): per-block pins — a size change names the exact block that moved by @JackDanger in #263
- test(cli): pin the gzip(1) drop-in CLI contract — 18 behaviours, 1 divergence quarantined by @JackDanger in #267
- test(size): fail-closed ladder-monotonicity and incompressible-expansion invariants by @JackDanger in #269
- test(ldx): pin the L1 divergence census — parse movement becomes deliberate and visible by @JackDanger in #270
- test(T4): pin the parallel path and the seam tax itself — the T>1 size class now fails a laptop test by name by @JackDanger in #271
- test(L1): exact bit accounting of the ours-vs-ldx gap, pinned — residual EXACTLY 0 by test by @JackDanger in #272
- test(ir): the per-label CPU goal as a failing-closed test — Ir/B vs ldx and vs every rival binary by @JackDanger in #274
- test(perf-shape): pin the T4/T1 work ratio and the allocation shape by @JackDanger in #273
- test(canary): pin 1-byte startup cost (L{1,6,9} x T{1,4}) and 12 hot-symbol sizes, both laptop-visible by @JackDanger in #275
- lever(L1 streaming): resumable Fast + mmap file route — byte-identical, 10x less memory by @JackDanger in #279
- lever(L1 @t>1): bucket2 via params_parallel — tabular+text T4 wins, defer preserved by @JackDanger in #280
- lever(L1 @t>1): bucket2 gate=64 — tabular T4 −1015 B more by @JackDanger in #281
- lever(T4 bitsplice): delete the T>1 chunk seam — one continuous DEFLATE stream, spliced at bit offsets by @JackDanger in #257
- lever(L1 @t>1): vendor 2-way bucket every lookup — fail-gap −2.1% by @JackDanger in #283
- lever(L1 @t>1): hash insert depth 8 — closes 5 libdeflate L1:T4 cells by @JackDanger in #284
- lever(L1 @t>1): stack COST-GATE on bucket2+depth-8 — closes movie.mp4 L1:T4 by @JackDanger in #285
- lever(L1 T1): wire bucket2/COST-GATE through run_resumable — 8 libdeflate cells by @JackDanger in #286
- lever(T>1): RLE-shaped Huffman header — 3 libdeflate T4 cells by @JackDanger in #287
- lever(T>1): exact package-merge on shaped histogram — 2 libdeflate T4 cells by @JackDanger in #288
- lever(T>1 L8): pick-min chunked vs stateful — 4 libdeflate T4 cells by @JackDanger in #289
- lever(T>1 L8/L9): triple pick-min — libdeflate T4 cells by @JackDanger in #290
- fix(T>1): minimal gzip header — libdeflate:data.csv:L9:T4 by @JackDanger in #291
- lever(T1 L5-L7): zlib good_match + pick-min — closes gzip/pigz text class by @JackDanger in #292
- fix(T1 L5-L7): parallelize zlib pick-min — ~2× wall regression from #292 by @JackDanger in #293
- test(pins): regenerate the four gated pin suites for the #279-#293 lever wave by @JackDanger in #294
- ci: run the feature-gated suites in the gate (anatomy pins required, valgrind Ir informational) by @JackDanger in #276
- test(pins): add x86_64-unknown-linux-gnu hot-symbol size rows by @JackDanger in #298
- docs(legal): add THIRD_PARTY_NOTICES.md — license attribution for ported code by @JackDanger in #300
- test(failure-ux): pin gzip's failure + metadata contract; add Python ecosystem-decoder leg by @JackDanger in #301
- test(cli): pin the pigz/igzip/libdeflate-gzip flag surfaces by @JackDanger in #306
- test(stdin+smallfile): guard redirect-stdin parallelism, pin the live FIFO-pipe T1 bug, grade sub-1MiB sizes by @JackDanger in #307
- fix(cli): make every silent-wrong rival flag loud (mitigates #302-#305) by @JackDanger in #308
- docs(promotion-rule): clause 5 margin-floor — confirmed convictions, margin as capital (fulcrum#25) by @JackDanger in #311
- docs(promotion-rule): clause 6 prices only residual harm (fulcrum#26) by @JackDanger in #312
- fix(cli): store FNAME+MTIME on the T1 file path (#309) + anatomy-matrix stderr fix by @JackDanger in #315
- lever(L2 len3): cost-aware far-len-3 accept + greedy shadow probe — halves the dd79_bin6 L2 gap, 0 tie flips by @JackDanger in #299
- fix(#266 L1): coalesce stored spans — maximal 65,535-byte stored blocks (noise L1: 32 -> 17 blocks, -75 B) by @JackDanger in #295
- lever(L1 wall/Ir): elide the measured bounds guards in the shipped L1 hot path by @JackDanger in #314
- lever(T>1 L9): near-optimal parse via params_parallel(9) — ready to adjudicate by @JackDanger in #297
- lever(T>1 L8): extend #297's near-optimal routing to L8 — ready to adjudicate after #297 by @JackDanger in #313
- docs(rig): ARM (M1) wall leg — box roles, pinned rivals, quiet-window rule by @JackDanger in #316
- test(generalization): NEVER-TUNE holdout corpus + content response surface by @JackDanger in #318
- lever(L1 T1): route the match-reach fix at T1 only — closes the two record-file T1 size cells, T>1 stays main byte-for-byte by @JackDanger in #320
- lever(L3): extend far-len-3 cost gate to lazy parser by @JackDanger in #321
- lever(L1 T>1): compose interleaved bucket with T1 REACH (#310 rebased) by @JackDanger in #322
- L3 ultra-sparse lazy len-3 guard (M=224) — closes 4 weights L3 cells by @JackDanger in #325
- lever(L3): latch sparse-split hold for FASTQ over-split by @JackDanger in #326
- lever(L1): ultra-sparse lazy-peek COST-GATE for weights.safetensors by @JackDanger in #327
- lever(L2): gzip-style shadow len-3 on dense inert blocks by @JackDanger in #328
- lever(L2): greedy-only all-expensive trigram slack for far len-3 by @JackDanger in #329
- lever(L4): T1 mmap Greedy/Lazy pick-min for data.sqlite by @JackDanger in #330
- lever(L1): T1 mmap igzip/gzip-primary pick-min for photo.jpg by @JackDanger in #331
- lever(L2): hash3 chain + gzip deflate_fast pick-min by @JackDanger in #332
- docs(charter): hard stops 8-10 + STRUCTURE #10 from a full-session retrospective by @JackDanger in #334
- chore(lint): unblock CI after the clippy 1.98 roll by @JackDanger in #336
- tools(fingerprint): rank report axes by ABSOLUTE delta, not relative by @JackDanger in #335
- fix(arch): a level that runs whole-buffer PICK-MIN must not stream by @JackDanger in #337
- fix(cli): -p1 must use ONE core — T1 pick-min arms run sequentially by @JackDanger in #338
- lever(L2): delete the dead third pick-min arm — 1.53x T1 wall, 0 flips by @JackDanger in #339
- fix(arch): one gzip entry point — encode_gzip_bytes_to_vec delegates by @JackDanger in #340
- fix(rss): parse the mmap IN PLACE instead of copying the whole input by @JackDanger in #341
- probe(stored): stored-block decision is reachable + optimal; fix an inflate desync it exposed by @JackDanger in #345
- measure(split): the block-PLACEMENT denominator — 0.126% (L3) / 0.133% (L9) by @JackDanger in #344
- measure(split): the SAD proposer's recall is 3% — and it is worth 0.10% by @JackDanger in #343
- fix(ci): the non-portable Ir pin was masking the portable one — unmask it by @JackDanger in #349
- chore(repo): untrack 73 MB of committed build artifacts by @JackDanger in #351
- chore(campaign): make the drop-in axis runnable as a gate by @JackDanger in #353
- fix(structure): one pick-min dispatch site, not four by @JackDanger in #355
- lever(wall): make our libdeflate port the production encoder — 1.4-3.2x faster at L1-L7 by @JackDanger in #357
- perf(ldx): structural parity with libdeflate — outline lazy/lazy2, remove 79 panic paths by @JackDanger in #358
- instrument(ldx): give the port the anatomy counters — it was unmeasurable by @JackDanger in #360
- lever(structure): route L0/L8/L9 to the libdeflate port — the port now RUNS in production by @JackDanger in #359
- perf(ldx): SIMD match extension + prefetch — zero-output codegen slice 1 by @JackDanger in #366
- docs(campaign): charter reset to the one-encoder plan; census instruments; branch-garden batch 1 by @JackDanger in #365
- rules(campaign): clause-5 size spend — <=1% per-cell acquittal (owner 2026-09-05); wall bar untouched by @JackDanger in #370
- lever(structure): one encode per input + port routing — board measured 30/1320 (from 200), 0 roundtrip failures by @JackDanger in #367
- chore(ir): re-pin absolute Ir budgets + ldx ratio sheet to the post-one-encoder trunk by @JackDanger in #371
- chore: merge the campaign records + brain-library into main (campaign cleanup) by @JackDanger in #372
- sprint: L9-only near-opt passes=2 retune (per-cell census +0.0061%) + pin regeneration + red-first parity gates by @JackDanger in #373
- PR-2: thread-free chunk grid — cross-(-p) byte parity at every level (T2==T4==T8==T16) by @JackDanger in #374
- runbook: refresh the lap to adjudicate trunk a29b87b (retune + grid pin merged); ABORT consequence per v3.1 by @JackDanger in #375
- records: the retune wall lap adjudication — SHIP trunk a29b87b; three named losses priced by @JackDanger in #376
- lever-0: near-opt fill/flush anatomy regions + the stale parse_match canary ignored with the hole named by @JackDanger in #377
- lever-#3: pipelined near-opt flush (feature-gated) — flush share 0.71-0.74x, byte-identical on zero-flip corpora by @JackDanger in #379
- sprint doc: lever #3 landed note — the pipelined flush + the remaining stacked box leg by @JackDanger in #380
- runbook: the stacked box leg (near-opt-parallel-flush + d1 depth knob) by @JackDanger in #382
- comment hygiene: delete the wrong/stale/narrating comments (12 deletions, 2 trimmed, -9 net) by @JackDanger in #385
- audit: consolidated six-agent maintainability audit (2026-09-26) by @JackDanger in #384
- audit test-gaps: L10-12 parity pin, near-opt flush CI line, anatomy regions test (which caught a real double-count) by @JackDanger in #386
- audit safe-deletions: 6 dead Cargo features, the WriteAhead module, dead utils/format helpers, fixtures dead bits (-326 lines) by @JackDanger in #387
- audit: dupes + stale-text (D1 dup-suite deletion; S1/S2 parity-doc refreshes; full sweep green) by @JackDanger in #388
- audit comment-truths: the decode-side stale C-FFI claims corrected (bgzf bench badge + consume-first bench premise) by @JackDanger in #389
- audit vocabulary: the orphan routing sentence moved to the pointer form; the census 'legacy' name justified and kept by @JackDanger in #390
- refactor: delete the bgzf dead-strategy museum (−2082 lines; zero callers verified per-name) by @JackDanger in #391
- bgzf split: bgzf.rs (5530 post-museum) -> bgzf/{mod,multi_member,tests} (895 + 461 + 4628 lines), pure moves + re-exports by @JackDanger in #392
- records: the lever-3 stacked-leg receipt (pigz rival fix + real-corpus guard-trip evidence) by @JackDanger in #393
- records: NO-SHIP adjudication — pigz L9/T4 worsened under d1+flush, trunk stands, d3 named the next lever by @JackDanger in #395
- d3 probe verdict: convicted at the probe stage (chain fill 2.70x bt wall, +0.54% bytes) — no census run justified by @JackDanger in #396
- refactor: ChunkFillState — the near-opt fill loop's 14 loose locals hoisted into a documented struct (agent-33 item #8) by @JackDanger in #397
- lib.rs: fixture/holdout behind doc(hidden) — audit item #10 by @JackDanger in #398
- refactor: parallel.rs tri-modal extraction (audit item #3) — gzip_header.rs + rsyncable.rs standalone, oracle stays gated by @JackDanger in #399
- audit item #5: ladder/test renames — names now name what their tests test by @JackDanger in #400
- The bt-descent probe budget: the record's last un-priced wall lever (GO, default 48) by @JackDanger in #401
- BT-probebudget census verdicts: gate MET (−1.9% wall, −1,251 B); lever-#3 promotion refused at production shape by @JackDanger in #402
- Close-out runbook for the 403/363 tail by @JackDanger in #404
- Promote the bt-descent probe budget (48) to shipped default — census 0.981x at −1,251 B by @JackDanger in #403
- The campaign's closing state: row 7 PROMOTED, one-encoder record, residual board by @JackDanger in #405
- lever(ldx): port the zlib good_match knob — retire the L6/L7 routing exceptions with zero size change by @JackDanger in #363
- lever(ldx): port the L3 len-3 machinery — retire the L3 routing exception by @JackDanger in #364
- The residual board: 12 failing cells of 1,006 on the shipped trunk by @JackDanger in #407
- Garden Batch 2 resolved: the open-PR census dispositions by @JackDanger in #406
- The cadence card priced: a real size lever at L5 that the wall bar holds out by @JackDanger in #408
- Step-0 attribution: the two worst residual cells have named mechanisms by @JackDanger in #409
- The len-3 probes at L5, corrected: the cost-gate is inert there, the blanket floor is negative — the priced record by @JackDanger in #410
- The split-cadence lever priced: the tiny-block cadence wins, the crude merge is negative by @JackDanger in #411
- The hc chain walk, software-pipelined + read-intent prefetch (the nd hardware lever) by @JackDanger in #412
- NEON lz_extend: exact-mismatch locate (wall −5-6% at L5-T1, byte-identical) by @JackDanger in #413
- The L4/L5 Ir instrument rows: the residual cells unblinded by @JackDanger in #414
- The hardware stack's frozen-box verdict: shipped wall parity; the cadence bar holds by @JackDanger in #415
- zopfli #119's graded len-3 gate priced: NO-SHIP — the access.log deficit is not candidate-scarcity by @JackDanger in #416
- Release wave-1: the README rewritten for v1.0 by @JackDanger in #417
- Release wave-1: src/compress/ldx comment polish (+154/−186, comment-only) by @JackDanger in #418
- Release wave-1: stale references sweep (22 files, +57/−48) by @JackDanger in #420
- Release wave-2: the man page's routing facts, the board's merge marker, the lib.rs/decompress doc contradictions by @JackDanger in #422
- v1.0.0 — the first release of the one-encoder trunk by @JackDanger in #423
Full Changelog: v0.8.0...v1.0.0