Skip to content

P2: Add Zstd-coded 7Z decoding after confirmed compatibility gap #316

Closed

Description

@skyswordw

Verification result — 2026-11-06

Confirmed decoder gap; dedicated support is recommended. Stow's pinned stock 7-Zip 26.04 lists ordinary, Delta-filtered, encrypted, split and encrypted-split Zstd-coded 7Z archives, but payload test/read/extraction returns exit 2 with Unsupported Method. File-list success does not establish readable contents.

Fixtures were independently generated by py7zr 1.1.4 and 7-Zip-zstd commit bc1fb8a66d4ef549b6ac9bbc1bd660fecd2a572f, then extracted by their producing implementations with exact-byte comparison. The synthetic payload is 20,000 bytes; SHA-256 478007740bc18d4c4194865ad9944f46e82904030c69fda4a5e20a9ff145926a. Ordinary .zst/.tar.zst support is unrelated. The alternate engine was used only as a fixture producer and is not bundled.

PR #319 retains reproducible fixtures and safe-failure tests. All five cases were exercised through Stow’s sandboxed engine for selected and all-content extraction. Originals and destination contents were preserved on failure. Complete split archives initially misreported codec failure as missing volumes; #319 fixes that diagnostic. The final 740-test suite passes, including these explicit known-gap tests; this is not decoder support. Decoder implementation should be a dedicated P2 compatibility change, preserving sandbox, bounded resource/cancellation behavior, checksums, signing, Universal 2 and licensing. Validate solid/multi-file, corrupt input and passwords in addition to this corpus. Do not mark this issue closed on safe-failure test success.


Standalone Zstd/TAR.ZST support does not prove support for the Zstd coder in 7Z. Pinned 7-Zip 26.04 capability output lacks that coder.

  • Produce independently generated ordinary, Delta, encrypted and split Zstd-in-7Z samples.
  • Compare listing, reading/preview and extraction with exact-byte checks through Stow where practical.
  • Record reproducible success/failure and decide whether a decoder change is warranted.
  • Do not replace the official engine or weaken the sandbox without evaluating maintenance, licensing and signed distribution implications.
  • This issue starts as validation, not an implementation or parity claim.

Ownership and validation

Codex / Grok Bot owns functional correctness, state, security, cancellation and tests. Claude Code owns visual design and motion; functional controls may be implemented now, with visual treatment pending review. No Claude Code assignment or acceptance is claimed. Preserve keyboard access and existing accessibility semantics; full VoiceOver acceptance remains deferred under AGENTS.md. Add Simplified Chinese for user-facing strings. Validate focused regressions and the full required build/test/localization checks.

Approved by the user on 2026-11-06 (Pacific/Honolulu), following the ArcZip 1.1.5–1.2.2 assessment. Parent roadmap: #39. Reference: https://arczip.app/changelog/?lang=zh

Activity

  1. changed the title [-]P1 investigation: Verify Zstd-in-7Z compatibility and scope decoder support[/-] [+]P2: Add Zstd-coded 7Z decoding after confirmed compatibility gap[/+] on Nov 7, 2026
  2. skyswordw commented on Nov 8, 2026

    @skyswordw
    MemberAuthor

    Implementation is now in #342, based on the official 26.04 source with a small decoder-only registration of its existing Zstd decoder. It adds a 512 MiB per-window bound, known-property validation and full corresponding-source packaging/offline build; it does not import the full 7-Zip-zstd fork, add an encoder or weaken the sandbox.

    Final local integration: 771 tests passed with zero failures/skips. Exact-byte verify/preview/selected/all extraction, encrypted/split/Delta, solid/non-solid inputs, staged Save mutations, corrupt inputs, wrong passwords and cancellation after intermediate progress passed. Both executable slices and an offline source rebuild were checked. Ad-hoc package structure/signatures/DMG checks passed with 12 universal binaries.

    Keep this issue open until review and fresh CI complete. Local fresh-window smoke fails identically on the unchanged baseline and candidate; the strict gate remains enabled and the clean CI package/snapshot runs are pending. Developer ID/notarization and physical Finder installation remain separate release acceptance. This supersedes the gap as the current implementation status, while retaining #319's original reproduction evidence.

  3. skyswordw commented on Nov 8, 2026

    @skyswordw
    MemberAuthor

    Resolved by merged #342 after independent functional reviews and all four clean CI checks (build-test, Universal 2, snapshots and Release package). The package log explicitly records a fresh Welcome render and zero ad-hoc verification problems. Final local integration passed 771 tests with zero failures/skips.

    Acceptance now includes exact-byte verification, preview, selected/all extraction, encrypted/split/Delta and solid/non-solid inputs, staged Save mutations, corruption/property/window rejection and active cancellation. The official-source patch adds only a decoder, caps each 7Z Zstd window at 512 MiB, preserves sandboxing and ships complete offline-rebuildable source. These documented limits replace the old safe-failure-only status; signed/notarized release acceptance remains separate. #317 is still open for FSKit exFAT publication.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions