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 01fbb42eb6
commit eaab3b1ead
3 changed files with 102 additions and 2 deletions

View File

@@ -5825,3 +5825,48 @@ list*, and why the group table needed both fields.
🟡 Not settled: whether the quaternion is object→world or world→object, and its
handedness — a norm test cannot separate those. And still: why `S28_p1` has an
asteroid volume with no definition.
---
## 🔴✅ 2026-08-28 — the eight-value frame, censused disc-wide (and my novelty claim withdrawn)
Item (a): apply the placement shape elsewhere. **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, quat.y, quat.z, quat.w, pos.x, pos.y, pos.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 that carries a
`FrameCount`:
* **10 986** records carry one; **10 974** have `anon == 8 × FrameCount`.
* **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 [[stage-mission-tables]] already names are the only two on the
disc.** "The common case, not universal" is now `10 974 / 10 986`.
**The quaternion is measured, not asserted.** Over **78 762 frames** in five
families, `|q|` is within 1e-4 of 1.0 on **78 762 / 78 762**. An arbitrary
4-tuple has no reason to land on the unit sphere.
🔑 **Slot 0 is `time` only where something moves.** It equals the running ordinal
`0…N1` in **every** formation (2 196/2 196), asteroid (384/384), placement
(36/36) and test-route (24/24) record — and in only **6 228 of 8 334** real
routes, which are exactly the family that stores true timestamps there
(`Route_ADN101_p1F`: t = 0, 20, 30). Read the slot as *time*; expect static
tables to degenerate it to an index.
**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. Nothing yet ties them to
a reader.
Written up in `docs/re/structures/stage-mission-tables.md`; `asteroid-fields.md`
carries the correction.

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: