pdftract/notes
jedarden 1959ff2446 feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter
- Add LZWDecoder filter using lzw crate v0.10
- Support /EarlyChange parameter (default 1, late 0)
  - Early change (1): Adobe/TIFF variant, code size increases BEFORE
  - Late change (0): GIF variant, code size increases AFTER
- Full predictor support (TIFF predictor 2, PNG predictors 10-15)
- Bomb limit protection with partial bytes on exceed
- INV-8 maintained: partial bytes returned on decode errors
- 23 tests pass (19 unit tests + 4 proptests)
- Fixtures generated using lzw crate for verification

Acceptance criteria:
- Critical test /EarlyChange=0 byte-perfect: PASS
- LZWDecode without /DecodeParms defaults: PASS
- LZWDecode + /Predictor 12: PASS
- Truncated stream partial bytes: PASS
- Bomb limit honored: PASS
- proptest no panic: PASS
- INV-8 maintained: PASS

Refs: Plan Phase 1.5 line 1142, PDF spec 7.4.4

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-05-22 22:38:31 -04:00
..
bf-5en1a.md docs(bf-5en1a): add verification note for max_decompress_bytes default 2026-05-22 17:29:02 -04:00
bf-49wmw.md fix(bf-49wmw): fix PNG-predictor unbounded pre-allocation 2026-05-22 17:26:27 -04:00
pdftract-1bn.md feat(pdftract-1bn): implement cross-compilation build matrix for 5 target triples 2026-05-18 00:06:55 -04:00
pdftract-1g87.md feat(pdftract-q15sh): implement v1 fingerprint algorithm 2026-05-18 01:02:30 -04:00
pdftract-1lw3.md docs(pdftract-1lw3): add verification note for release cascade workflow 2026-05-20 19:33:35 -04:00
pdftract-1wqec.md docs(pdftract-1wqec): verify CI scaffolding acceptance criteria 2026-05-17 07:12:16 -04:00
pdftract-1yad.md fix(pdftract-1yad): enable proptest tests and update verification note 2026-05-18 00:15:00 -04:00
pdftract-1zhu.md docs(pdftract-1zhu): add verification note for /Prev chain handler 2026-05-22 19:15:47 -04:00
pdftract-2a6rk.md fix(pdftract-2a6rk): fix xref.rs u64 literal overflow in proptest 2026-05-22 17:26:27 -04:00
pdftract-2bpf6.md test(pdftract-2bpf6): add FlateDecode predictor tests and proptests 2026-05-18 01:08:21 -04:00
pdftract-2bsfc.md docs(pdftract-2bsfc): add verification note 2026-05-17 23:57:00 -04:00
pdftract-2gbu9.md feat(pdftract-2gbu9): enhance linearization detection with robust substring matching 2026-05-22 19:15:47 -04:00
pdftract-2hm4.md fix(pdftract-2hm4): fix keyword lexer to use Vec<u8> and improve diagnostics 2026-05-18 02:11:40 -04:00
pdftract-2ka7.md feat(pdftract-2ka7): implement secure password ingress channels 2026-05-18 02:20:02 -04:00
pdftract-2pyln.md docs(pdftract-2pyln): update verification note with bug fix details 2026-05-20 19:09:49 -04:00
pdftract-2t9.md docs(pdftract-2t9): add verification note 2026-05-18 01:22:44 -04:00
pdftract-2w02.md feat(pdftract-2w02): implement MSRV gate with CI check 2026-05-20 19:03:53 -04:00
pdftract-2x7y.md docs(pdftract-2x7y): add verification note for pdftract-github-release 2026-05-20 19:23:39 -04:00
pdftract-2xei.md docs(pdftract-2xei): add verification note for pdftract-docs-build template 2026-05-20 19:24:14 -04:00
pdftract-3gk5.md feat(pdftract-3gk5): add SLSA Level 3 provenance generation 2026-05-20 21:55:55 -04:00
pdftract-3gq3.md feat(pdftract-1534): complete Tera-template-driven code generator 2026-05-18 01:55:27 -04:00
pdftract-3nnqy.md feat(pdftract-3nnqy): implement StreamDecoder trait, filter pipeline, and bomb limit 2026-05-18 00:34:28 -04:00
pdftract-3uu6v.md feat(pdftract-3uu6v): implement LZWDecode with /EarlyChange parameter 2026-05-22 22:38:31 -04:00
pdftract-4b0z.md docs(pdftract-4b0z): add verification note 2026-05-20 19:06:36 -04:00
pdftract-4hn1.md feat(pdftract-4hn1): use Cow<'static, str> for diagnostic messages 2026-05-17 23:23:38 -04:00
pdftract-4iier.md docs(pdftract-4iier): complete per-profile README documentation 2026-05-18 00:32:06 -04:00
pdftract-4ymy.md docs(pdftract-4ymy): add verification note for indirect object parser 2026-05-18 01:08:39 -04:00
pdftract-5calf.md feat(pdftract-5calf): implement outline traversal with UTF-16BE BOM detection 2026-05-20 18:49:52 -04:00
pdftract-5cqy.md docs(pdftract-5cqy): add xref stream parser verification note 2026-05-22 15:30:02 -04:00
pdftract-5dng.md docs(pdftract-5dng): add verification note for name object lexer 2026-05-18 02:00:14 -04:00
pdftract-5l9m.md docs(pdftract-5l9m): add CI validation script and verification note 2026-05-18 01:05:33 -04:00
pdftract-5og4.md feat(pdftract-5og4): add comprehensive proptest for hybrid xref handler 2026-05-22 17:26:27 -04:00
pdftract-5omc.md feat(pdftract-5omc): implement per-language conformance test runner pattern 2026-05-18 01:32:24 -04:00
pdftract-5tmcg.md test(pdftract-5tmcg): add cycle detection test for page tree flattener 2026-05-18 00:38:44 -04:00
pdftract-5upi.md docs(pdftract-5upi): update verification note with additional bug fix 2026-05-20 22:05:17 -04:00
pdftract-5x3u.md docs(pdftract-5x3u): add verification note for pdftract-crates-publish 2026-05-20 19:17:44 -04:00
pdftract-5z5d8.md fix(pdftract-5z5d8): fix provenance validation script 2026-05-17 23:43:37 -04:00
pdftract-6bxw.md docs(pdftract-6bxw): add ObjStm parser verification note 2026-05-22 15:00:32 -04:00
pdftract-7nav.md docs(pdftract-2bsfc): add verification note 2026-05-17 23:57:00 -04:00
pdftract-8eo1.md docs(pdftract-8eo1): add verification note for cosign keyless signing implementation 2026-05-20 19:36:09 -04:00
pdftract-8zbd.md docs(pdftract-8zbd): add SBOM generation verification note 2026-05-20 19:38:25 -04:00
pdftract-15cs8.md docs(pdftract-15cs8): add verification note for Crypt filter implementation 2026-05-20 18:17:34 -04:00
pdftract-23k1.md docs(pdftract-23k1): add verification note for pdftract-py-ci stub 2026-05-20 18:43:29 -04:00
pdftract-32qkr.md docs(pdftract-dejqs): add verification note for per-page resource inheritance 2026-05-20 22:35:43 -04:00
pdftract-33v.md feat(pdftract-33v): add property tests and nightly fuzz job 2026-05-20 19:18:03 -04:00
pdftract-46lw.md docs(pdftract-46lw): add forward_scan_xref verification note 2026-05-20 18:52:07 -04:00
pdftract-49f8.md docs(pdftract-49f8): finalize Cargo.lock policy with weekly Renovate schedule 2026-05-20 18:22:03 -04:00
pdftract-58kz.md docs(pdftract-58kz): add verification note 2026-05-20 19:39:55 -04:00
pdftract-59zz.md feat(pdftract-59zz): implement MCP bearer token ingress channels and TH-03 enforcement 2026-05-18 02:47:54 -04:00
pdftract-60h.md docs(pdftract-60h): update verification note with detailed acceptance criteria 2026-05-18 01:27:15 -04:00
pdftract-68pe.md docs(pdftract-68pe): update verification note with SLSA attestation 2026-05-20 19:35:51 -04:00
pdftract-147a.md docs(pdftract-147a): author SDK contract specification 2026-05-17 23:13:55 -04:00
pdftract-154mz.md feat(pdftract-154mz): fix canonicalization module compilation 2026-05-20 19:24:38 -04:00
pdftract-220e.md docs(pdftract-220e): add verification note for pdftract-build-binaries template 2026-05-20 19:08:02 -04:00
pdftract-245s.md docs(pdftract-245s): add verification note for pdftract-py-ci WorkflowTemplate 2026-05-20 19:12:56 -04:00
pdftract-279.md feat(pdftract-279): stand up Cargo workspace with three member crates 2026-05-20 18:09:34 -04:00
pdftract-469s.md feat(pdftract-59zz): implement MCP bearer token ingress channels and TH-03 enforcement 2026-05-18 02:47:54 -04:00
pdftract-1527.md test(pdftract-1527): add shared SDK conformance suite with 32 test cases 2026-05-18 01:17:42 -04:00
pdftract-1534.md feat(pdftract-1534): complete Tera-template-driven code generator 2026-05-18 01:48:27 -04:00
pdftract-dejqs.md docs(pdftract-dejqs): update verification note with 2026-05-22 test results 2026-05-22 19:21:39 -04:00
pdftract-l993m.md feat(pdftract-l993m): complete per-language Tera template scaffolding 2026-05-18 02:01:46 -04:00
pdftract-q15sh.md feat(pdftract-q15sh): implement v1 fingerprint algorithm 2026-05-18 01:02:30 -04:00