Skip to content

+ SeqBox (.sbx) container: read and create - #503

Open
Hawkynt wants to merge 3 commits into
mainfrom
feat/seqbox
Open

Hawkynt wants to merge 3 commits into
mainfrom
feat/seqbox

Conversation

@Hawkynt

@Hawkynt Hawkynt commented Oct 23, 2026

Copy link
Copy Markdown
Owner

SeqBox (Marco Pontello's recoverable single-file container) had no descriptor. Reader verifies every block (signature, version, UID, CRC-16/CCITT seeded with the version, contiguous sequence), trims to the FSZ metadata and checks the SHA-256; writer emits the sbxenc layout with full metadata at versions 1-4. Single-file only (multi-file create refused; conversion-matrix KnownGap added).

Verified: containers written by the reference sbxenc 1.0.2 (all versions, with/without metadata, empty file) are committed and decode byte for byte; the reference sbxdec decodes what we write at every version and reports "hash match!" (tool-gated). Rung 3: author's README; reference scripts used only as a black-box oracle.

Hawkynt and others added 3 commits October 23, 2026 14:44
SeqBox had no descriptor. It is Marco Pontello's recoverable single-file
container: the file is cut into 512/128/4096/488-byte blocks (versions 1-4),
each carrying "SBx", version, CRC-16, a 6-byte file UID and a sequence number,
so it survives on a damaged or unindexed disk; block 0 holds optional TLV
metadata (name, size, times, SHA-256 multihash).

The reader verifies every block (signature, version, UID, CRC-16/CCITT seeded
with the version, contiguous sequence), trims to FSZ and checks the SHA-256;
without metadata it keeps the 0x1A padding as sbxdec does. The writer emits
the sbxenc layout with full metadata. Lists as one entry named by FNM; creating
from more than one file or with a password is refused.

Oracle: containers written by the reference sbxenc 1.0.2 at every version
(with and without metadata, empty file) are committed and decoded byte for
byte; the reference sbxdec decodes what we write at every version and reports
"hash match!" (tool-gated, SEQBOX_HOME or /opt/seqbox).

Sourcing: rung 3 - layout from the format author's README; the reference
scripts (whose headers say AGPL-3.0 while the repository says MIT) were used
only as a black-box oracle, no code taken.
Retain SeqBox and main fixture resources together, preserve current archive support descriptions, and regenerate Archives API documentation for the container.

Verified: Release solution build, 64 focused format/documentation/provenance tests passed with 8 skips, documentation generation completed without errors.
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