From eac6759f2519531f4d6cfdcf8cf8905ed9c1b528 Mon Sep 17 00:00:00 2001 From: Sylpheed RE agent Date: Fri, 28 Aug 2026 02:20:15 +0000 Subject: [PATCH] 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. --- docs/re/BACKLOG.md | 45 +++++++++++++++++++++ docs/re/structures/asteroid-fields.md | 13 +++++- docs/re/structures/stage-mission-tables.md | 46 ++++++++++++++++++++++ 3 files changed, 102 insertions(+), 2 deletions(-) diff --git a/docs/re/BACKLOG.md b/docs/re/BACKLOG.md index 5f2963e..d506dfd 100644 --- a/docs/re/BACKLOG.md +++ b/docs/re/BACKLOG.md @@ -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…N−1` 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. diff --git a/docs/re/structures/asteroid-fields.md b/docs/re/structures/asteroid-fields.md index 8f263af..4498092 100644 --- a/docs/re/structures/asteroid-fields.md +++ b/docs/re/structures/asteroid-fields.md @@ -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` | diff --git a/docs/re/structures/stage-mission-tables.md b/docs/re/structures/stage-mission-tables.md index f30e1b6..fd7ae6b 100644 --- a/docs/re/structures/stage-mission-tables.md +++ b/docs/re/structures/stage-mission-tables.md @@ -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.tbl` — the sub-objectives Stage 02 declares nine (`SUBOBJ_005`…`SUBOBJ_014`), each with: