From e9c927994c671bed10fe38c38265f45eac72c2e2 Mon Sep 17 00:00:00 2001 From: ReaperOfVeriod Date: Sun, 11 Oct 2026 04:06:51 +0200 Subject: [PATCH] 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. --- docs/formats/core-data-regions.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/formats/core-data-regions.md b/docs/formats/core-data-regions.md index 4c8557f..5cf12b9 100644 --- a/docs/formats/core-data-regions.md +++ b/docs/formats/core-data-regions.md @@ -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 inside records rather than about the record itself, the two measurements were 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.