re: the eight-value frame censused disc-wide, and my novelty claim withdrawn

Grepping FrameCount first would have saved the previous iteration an overclaim.

Withdrawn: the 8-value layout was not a discovery. stage-mission-tables already
documents Route_* records as (time, quat.x,y,z,w, pos.x,y,z) with
len(fields) == 8*FrameCount + 1 holding 1449 of 1449, and unit-group-table
already documents 1 + 8*FrameCount for formation slot lists. I re-derived the
shape from the asteroid tables and called slot 0 an "index" - it is the
corpus's time slot. Corrected in asteroid-fields.md. What the asteroid pass did
add is the norm test.

The census the corpus was missing: both prior statements were measured on one
table family each. Sweeping every IDXD record on the disc carrying a
FrameCount - 10986 records, 10974 with anon == 8 * FrameCount, and the entire
residual is 12 records: Formation_Fleet_01 (ratio 136) and Formation_Fleet_02
(ratio 4), six each, one per language pack. The two exceptions the doc already
names are the only two on the disc.

The quaternion is now measured, not asserted: over 78762 frames in five
families, |q| is within 1e-4 of 1.0 on 78762 / 78762.

Slot 0 is time only where something moves. It equals the running ordinal
0..N-1 in every formation (2196/2196), asteroid (384/384), placement (36/36)
and test-route (24/24) record, and in only 6228 of 8334 real routes - the one
family that stores true timestamps there.

Two record families new to the corpus: Placement_00..02 and RouteTest_00..01,
sharing a six-record template object whose sixth record is named Enumeration,
two such objects per language pack.

All fifteen artefacts byte-identical.
This commit is contained in:
Sylpheed RE agent
2026-08-28 02:20:15 +00:00
parent 1f0f90e304
commit eac6759f25
3 changed files with 102 additions and 2 deletions

View File

@@ -116,7 +116,16 @@ unreferenced.
Measured over every `Frame_*Asteroid*` record on the disc — **384 records,
37 518 items** (6 253 per language pack × 6; the other 380 per pack belong to the
seven record-less `Alpha` frames). One raw item, for shape:
seven record-less `Alpha` frames).
🔴 **The layout itself is not new** — [[stage-mission-tables]] already documents
`(time, quat.x, quat.y, quat.z, quat.w, pos.x, pos.y, pos.z)` for `Route_*`, and
[[unit-group-table]] already documents `1 + 8·FrameCount` for formations. I wrote
this up as if the shape were a discovery and called slot 0 an "index" without
checking; the correction and the disc-wide census are in
[[stage-mission-tables]]. What the asteroid measurement does add is the **norm
test** and the fact that this family sets `time` to the ordinal. One raw item,
for shape:
```
0 0.268744 0.505919 0.579670 0.579487 15667.14 -7199.61 -58794.88
@@ -126,7 +135,7 @@ seven record-less `Alpha` frames). One raw item, for shape:
| slot | test | result |
|---|---|---|
| 0 | equals the running index `0…N1` | **37 518 / 37 518**, max **587** — and the largest `EnumAsteroid`/`FrameCount` is **588**, so the last index is `N1` |
| 0 | equals the running index `0…N1` | **37 518 / 37 518**, max **587** — and the largest `EnumAsteroid`/`FrameCount` is **588**, so the last index is `N1`. ⚠️ This slot is the **`time`** of the shared keyframe layout ([[stage-mission-tables]]); the asteroid tables, having nothing that moves, set it to the ordinal — see the disc-wide census there |
| 14 | is it a **unit quaternion**? `\|q\|` | **37 518 / 37 518 within 1e-4 of 1.0** (min 0.999999, max 1.000001) |
| 4 | sign of the real part | min **+0.001**, never negative — the canonical **w-last** form, so the order is `(x, y, z, w)` |
| 57 | position, metres | ranges **163 858…+79 572**, **114 308…+76 422**, **105 224…+110 263** — inside the ±250 km half-extent of `mapmesh_box_500km` |

View File

@@ -99,6 +99,52 @@ and S; A and B appear only in phases 12.
parser must not assume it. `Formation_100` (100 frames, 800 fields) and all of
`FormationSet_S02` do follow the 8-value layout.
### ✅ The eight-value frame, censused disc-wide (2026-08-28)
The two statements above — `len(fields) == 8·FrameCount + 1`, and the exceptions
in `Formation_Test.tbl` — were each measured on one table family. Sweeping
**every IDXD record on the disc that carries a `FrameCount` field**:
```
records with a FrameCount field 10 986
anon fields == 8 x FrameCount 10 974
the entire residual 12
Formation_Fleet_01 ratio 136 x6 (one per language pack)
Formation_Fleet_02 ratio 4 x6
```
**Nothing else on the disc breaks the rule.** The two exceptions this document
already names are the *only* two, and each is simply present once per language
pack. "The common case, not universal" is now a number: **10 974 of 10 986.**
By family, with two tests run over all **78 762 frames**:
| family | records | frames | slot 0 == `0…N1` | `\|quat\| = 1` |
|---|---:|---:|---|---|
| `Route_*` | 8 334 | 14 970 | **6 228 / 8 334** | 14 970 / 14 970 |
| `Formation*` | 2 196 | 26 142 | 2 196 / 2 196 | 26 142 / 26 142 |
| `Frame_*Asteroid*` | 384 | 37 518 | 384 / 384 | 37 518 / 37 518 |
| `Placement_0N` | 36 | 84 | 36 / 36 | 84 / 84 |
| `RouteTest_0N` | 24 | 48 | 24 / 24 | 48 / 48 |
🔑 **The quaternion is now measured, not just asserted: `\|q\|` is within 1e-4 of
1.0 on 78 762 of 78 762 frames**, every family. An arbitrary 4-tuple has no
reason to land on the unit sphere, so this confirms slots 14 across the whole
disc. (The real part is never negative in the asteroid family, i.e. w-last; not
checked here for the others.)
🔑 **Slot 0 is `time` only where something moves.** It equals the running ordinal
`0…N1` in **every** formation, asteroid, placement and test-route record, and in
only **6 228 of 8 334** actual routes — the routes are exactly the family that
puts real timestamps there (`Route_ADN101_p1F`: t = 0, 20, 30). So a parser
should read the slot as *time*, and not be surprised when a static table
degenerates it to an index.
**Two record families new to the corpus**: `Placement_00…02` and
`RouteTest_00…01` share a **six-record template object** — the sixth record is
named `Enumeration` — and there are two such objects per language pack. Small,
`_Test`-shaped, and not yet tied to anything that reads them.
## ✅ `SUBObjectiveSettings_S<NN>.tbl` — the sub-objectives
Stage 02 declares nine (`SUBOBJ_005``SUBOBJ_014`), each with: