Establish the SBlk 40-byte record layout

Range measured: level 0 SBlk, 24..19508, aligned at +0 -- 487 whole records.

Method: for each of 40 candidate alignments, count byte positions that are
near-constant across records, and keep the best. Alignment +0 wins with 10.

Four positions are exactly constant and all zero: 7, 11, 31 and 35.
Distinct values per position run from 1 to 155, with position 29 the most
variable by a wide margin -- 155 against 21 to 48 elsewhere -- and positions
2, 10, 27, 34 and 39 low at 2 to 8.

The first record carries the SBlk magic and the DAW tag rather than descriptor
data, so it is a header rather than an entry. That matters before reading any
field at a fixed offset.

Not decoded: the layout is established and the constant positions are known,
but the fields are not named and which of the 40 bytes are an index, a length
and an offset is still open.
This commit is contained in:
2026-10-11 04:06:51 +02:00
parent 0f1a7f27c7
commit e9c927994c
+23
View File
@@ -617,3 +617,26 @@ The earlier "they disagree" framing was wrong in one respect: the marker
spacing never claimed to be the record size. Read as a claim about markers spacing never claimed to be the record size. Read as a claim about markers
inside records rather than about the record itself, the two measurements were inside records rather than about the record itself, the two measurements were
never in conflict. never in conflict.
## SBlk record layout at 40 bytes
**Range measured:** level 0 `SBlk`, 24..19508, aligned at +0 — 487 whole
records.
**Method:** for each of 40 candidate alignments, record the number of byte
positions that are near-constant across records, and keep the best.
**Result:** alignment +0 is best, with 10 near-constant positions. Four are
exactly constant and all zero: positions **7, 11, 31 and 35**.
Distinct values per byte position across the 487 records runs from 1 to 155,
with position 29 the most variable by a wide margin (155 against 21-48
elsewhere) and positions 2, 10, 27, 34 and 39 low (2 to 8).
The first record carries the `SBlk` magic and the `DAW` tag rather than
descriptor data, so it is a header rather than an entry — which is worth
accounting for before reading any field at a fixed offset.
**Not decoded.** The layout is established and the constant positions are
known; the fields are not named, and which of the 40 bytes are an index, a
length and an offset is still open.