|
| 1 | +# Erratum to arXiv:2606.09686 (Catalog Count Reconciliation) |
| 2 | + |
| 3 | +**Paper:** "An 84-Format Numeric Catalog with Bit-Exact Conformance Vectors: |
| 4 | +A Vendor-Neutral Reference for FP8, BF16, MXFP4, and Microscaling Formats" |
| 5 | +(arXiv:2606.09686v1, 8 Jun 2026). |
| 6 | + |
| 7 | +**Date of erratum:** 2026-06-14 |
| 8 | +**Canonical source of truth:** `specs/numeric/formats_catalog.t27` in |
| 9 | +`github.com/gHashTag/t27` (verified live by fresh clone, HEAD `16042f4`). |
| 10 | + |
| 11 | +--- |
| 12 | + |
| 13 | +## Summary |
| 14 | + |
| 15 | +The paper title and Table 1 state the catalog contains **exactly 84 formats** |
| 16 | +in 13 clusters. The live single-source-of-truth (SSOT) catalog contains |
| 17 | +**83 formats** in 13 clusters. This erratum reconciles the divergence honestly, |
| 18 | +states the canonical number, and records the CI invariant now added to prevent |
| 19 | +recurrence. No conformance pack, SHA-256, or bit-exact vector is affected; the |
| 20 | +divergence is purely in the catalog row count, not in any shipped vector. |
| 21 | + |
| 22 | +**Canonical count going forward: 83.** The number 84 in the paper is superseded. |
| 23 | + |
| 24 | +## What diverged, and why (four numbers, one cause) |
| 25 | + |
| 26 | +At the time the paper was finalized, four artifacts carried different counts: |
| 27 | + |
| 28 | +| Source | Count | Status | |
| 29 | +|---|---|---| |
| 30 | +| arXiv:2606.09686 Table 1 / title | 84 | aspirational; written against an earlier SSOT snapshot | |
| 31 | +| SSOT `formats_catalog.t27` (HEAD `16042f4`) | **83** | **canonical, live** | |
| 32 | +| codegen fresh re-run (this date) | 83 | now matches SSOT (parser fix verified) | |
| 33 | +| committed `gen/numeric/*` (pre-fix) | 77 | stale; codegen had not been re-run after PR #1051 | |
| 34 | + |
| 35 | +Root causes, now all resolved: |
| 36 | + |
| 37 | +1. **Paper snapshot lag.** The paper's Table 1 was built against a catalog |
| 38 | + state that split the Microscaling cluster into 5 rows (MXFP6 as two rows |
| 39 | + E2M3 + E3M2, plus a standalone E8M0 scale) and listed 16 GoldenFloat rungs. |
| 40 | + The live SSOT collapses MXFP6 to a single `mxfp6` row (3 Microscaling rows: |
| 41 | + mxfp8, mxfp6, mxfp4) and has since expanded GoldenFloat to 22 rungs |
| 42 | + (PR #1051 added gf10/gf14/gf48/gf96/gf512/gf1024 and others). |
| 43 | + |
| 44 | +2. **Stale committed codegen.** After PR #1051 expanded the SSOT, the generated |
| 45 | + artifacts in `gen/numeric/` were not regenerated, so they remained at the |
| 46 | + pre-expansion count of 77. (An earlier parser limitation that dropped the |
| 47 | + formula-biased rungs gf512/gf1024 -- whose bias is `2^194-1` / `2^390-1`, |
| 48 | + exceeding int64 -- has been fixed: `parse_bias` now carries these as a |
| 49 | + formula string with an int64-overflow sentinel, so codegen no longer drops |
| 50 | + them. Fresh codegen yields 83.) |
| 51 | + |
| 52 | +## Canonical cluster breakdown (SSOT, 83 formats, 13 clusters) |
| 53 | + |
| 54 | +| Cluster | Count | |
| 55 | +|---|---| |
| 56 | +| GoldenFloat | 22 | |
| 57 | +| HistoricalVendor | 10 | |
| 58 | +| PositUnumIII | 8 | |
| 59 | +| IntegerFixed | 8 | |
| 60 | +| MlLowPrecision | 7 | |
| 61 | +| Ieee754Binary | 5 | |
| 62 | +| Theoretical | 4 | |
| 63 | +| Lns | 4 | |
| 64 | +| CompressionTrick | 4 | |
| 65 | +| Microscaling | 3 | |
| 66 | +| Ieee754Decimal | 3 | |
| 67 | +| ExtendedFloat | 3 | |
| 68 | +| QuantTuned | 2 | |
| 69 | +| **TOTAL** | **83** | |
| 70 | + |
| 71 | +All 83 IDs are unique (verified). No duplicate or malformed rows. |
| 72 | + |
| 73 | +## Delta vs the paper's Table 1 (the -1 net) |
| 74 | + |
| 75 | +- **GoldenFloat:** paper 16 -> SSOT 22 (+6: gf10, gf14, gf48, gf96, gf512, |
| 76 | + gf1024 added by PR #1051). |
| 77 | +- **Microscaling/OCP MX:** paper 5 -> SSOT 3 (-2: MXFP6 is one row, not split |
| 78 | + E2M3/E3M2; E8M0 block scale is represented in the conformance packs, not as a |
| 79 | + standalone catalog row). |
| 80 | +- Net effect against the paper's other clusters yields the canonical 83. |
| 81 | + |
| 82 | +The paper's 84 is therefore an over-count of 1 relative to the current SSOT, |
| 83 | +arising from a different Microscaling row-split convention combined with a |
| 84 | +later GoldenFloat expansion. Neither choice is "wrong"; the SSOT convention is |
| 85 | +the one we can ship end-to-end with bit-exact provenance, so it is canonical. |
| 86 | + |
| 87 | +## Corrective actions taken |
| 88 | + |
| 89 | +1. Regenerated all 16 `gen/numeric/*` artifacts from the SSOT -> all now 83. |
| 90 | +2. Added `tools/check_catalog_count.py`: a CI invariant enforcing |
| 91 | + `SSOT count == regenerated gen count == committed gen count`, and surfacing |
| 92 | + any paper-count divergence as an explicit erratum reminder (not a silent |
| 93 | + edit). |
| 94 | +3. Added `.github/workflows/catalog-count-gate.yml` (CI-01): runs the invariant |
| 95 | + on every PR touching the catalog, codegen, or gen artifacts; also fails if |
| 96 | + committed gen artifacts are stale relative to a fresh codegen. |
| 97 | + |
| 98 | +## Recommended paper-side action |
| 99 | + |
| 100 | +Update arXiv:2606.09686 with a v2 or a published erratum changing all "84" |
| 101 | +references to "83", citing this reconciliation. Until v2 is posted, the |
| 102 | +abstract's "84" should be read as superseded by the canonical SSOT count of 83. |
| 103 | +The conformance packs, SHA-256 anchors, and the phi^2 + 1/phi^2 = 3 anchor |
| 104 | +vector are unaffected. |
0 commit comments