docs(adr-0012): re-affirm portable zstd-encode deficit via RM-309 survey [RM-309]#72
Merged
Merged
Conversation
…vey [RM-309] Survey the pure-Rust streaming zstd encoder landscape for DEV-123. Latest ruzstd (0.8.3, pinned) exposes only compress_to_vec (one-shot) and the pull-based FrameCompressor (set_source(Read)/set_drain(Write)/blocking compress()); neither is push-drivable for the engine's bounded ZIP-member write loop without whole-member buffering or a thread, both barred by core invariants. structured-zstd (fork) has the same architecture; zstd/zstd-safe are C/zstd-sys (native-only). No suitable portable crate exists. Record the survey and re-affirmed resolution path in the ADR-0012 deficit ledger, sharpen the deficit row's "why" (pull vs push) and document the concrete adoption seam (provider.rs map_zip_method arm + zip_stream.rs zstd_step, ADR-0011 interop evidence before any support-matrix flip). No src/ change; native-codecs-only method-93 write stays a tracked interim. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
P4suta
enabled auto-merge (squash)
July 23, 2026 21:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documents the RM-309 (DEV-123) survey of the portable pure-Rust streaming zstd encoder landscape. Docs-only — no
src/change, no support-matrix cell flipped.Survey verdict: deficit re-affirmed
No suitable portable, C/FFI-free,
forbid(unsafe)-compatible streaming zstd encoder exists:compress_to_vec(one-shot) andFrameCompressor(pull-basedset_source(Read)→set_drain(Write), one blockingcompress()to EOF). Neither can be driven by the engine's push-based, bounded ZIP-member write loop without inverting control (whole-member buffering or a thread) — which would break the core bounded-memory guarantee.zstd-syswrappers, disqualified fromportable-codecs.So the
native-codecs-only ZIP method-93 write stays a legitimate tracked interim per ADR-0012. ThePortable streaming zstd encodeledger row is sharpened (pull-vs-push distinction,FrameCompressorcited) and now records the concrete adoption seam for a future crate. No core invariant changes.🤖 Generated with Claude Code