Skip to content

docs(adr-0012): re-affirm portable zstd-encode deficit via RM-309 survey [RM-309]#72

Merged
P4suta merged 1 commit into
mainfrom
feature/dev-123-rm-309-zstd-encoder-survey
Jul 23, 2026
Merged

docs(adr-0012): re-affirm portable zstd-encode deficit via RM-309 survey [RM-309]#72
P4suta merged 1 commit into
mainfrom
feature/dev-123-rm-309-zstd-encoder-survey

Conversation

@P4suta

@P4suta P4suta commented Jul 23, 2026

Copy link
Copy Markdown
Owner

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:

  • ruzstd 0.8.3 (pinned) exposes only compress_to_vec (one-shot) and FrameCompressor (pull-based set_source(Read)set_drain(Write), one blocking compress() 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.
  • structured-zstd (ruzstd fork) inherits the same architecture; zstd/zstd-safe are C zstd-sys wrappers, disqualified from portable-codecs.

So the native-codecs-only ZIP method-93 write stays a legitimate tracked interim per ADR-0012. The Portable streaming zstd encode ledger row is sharpened (pull-vs-push distinction, FrameCompressor cited) and now records the concrete adoption seam for a future crate. No core invariant changes.

🤖 Generated with Claude Code

…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
P4suta enabled auto-merge (squash) July 23, 2026 21:38
@P4suta
P4suta merged commit 7f91931 into main Jul 23, 2026
22 checks passed
@P4suta
P4suta deleted the feature/dev-123-rm-309-zstd-encoder-survey branch July 23, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant