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:
@@ -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…N−1` | **37 518 / 37 518**, max **587** — and the largest `EnumAsteroid`/`FrameCount` is **588**, so the last index is `N−1` |
|
||||
| 0 | equals the running index `0…N−1` | **37 518 / 37 518**, max **587** — and the largest `EnumAsteroid`/`FrameCount` is **588**, so the last index is `N−1`. ⚠️ 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 |
|
||||
| 1–4 | 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)` |
|
||||
| 5–7 | 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` |
|
||||
|
||||
@@ -99,6 +99,52 @@ and S; A and B appear only in phases 1–2.
|
||||
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…N−1` | `\|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 1–4 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…N−1` 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:
|
||||
|
||||
Reference in New Issue
Block a user