Skip to content

feat(numeric): GF ladder expansion v1.2 — closed-form rule normative (+GF6/10/14/48/96/128/256/512/1024) - #1051

Merged
gHashTag merged 2 commits into
masterfrom
feat/gf-ladder-expansion-v1.2
Jun 7, 2026
Merged

feat(numeric): GF ladder expansion v1.2 — closed-form rule normative (+GF6/10/14/48/96/128/256/512/1024)#1051
gHashTag merged 2 commits into
masterfrom
feat/gf-ladder-expansion-v1.2

Conversation

@gHashTag

@gHashTag gHashTag commented Jun 7, 2026

Copy link
Copy Markdown
Owner

Closes #1052

Summary

Promotes the GoldenFloat ladder exp/mant split to a single normative closed-form rule:

e = round((N - 1) / phi^2)
m = N - 1 - e
bias = 2^(e - 1) - 1
exp_max = 2^e - 1

Anchored at frozen silicon gf16_v2_mul.v (GF16 = 1+6+9, bias 31, tt-trinity-gamma). Lucas identity phi^2 + phi^-2 = 3 = L_2.

Ladder (18 rungs, rule-derived)

GFTernary (special) | GF4 | GF6 (NEW) | GF8 | GF10 (NEW) | GF12 | GF14 (NEW) | GF16 (Verified, silicon) | GF20 | GF24 | GF32 | GF48 (NEW) | GF64 | GF96 (NEW) | GF128 (CORRECTED 49/78, was 48/79) | GF256 | GF512 (NEW) | GF1024 (NEW) | TF3 (container)

Files

  • conformance/FORMAT-SPEC-001.json -> v1.2 + frozen_silicon_anchor
  • docs/NUMERIC_FORMATS_SSOT.md -> 18-rung table + PHI_BIAS-empirical-OPEN
  • specs/numeric/goldenfloat_family.t27 -> 9 -> 17 binary rungs
  • specs/numeric/formats_catalog.t27 -> fix GF128 typo, +8 rule-derived entries
  • specs/numeric/gf{6,10,14,48,96,128,256,512,1024}.t27 -> 9 new spec files

Status discipline

  • All new rungs: Conj (no RTL on this repo, no external DOI).
  • Rule produces exact field widths: Verified arithmetic.
  • GF16 stays the only Verified end-to-end rung (FPGA 35/35 @ 323 MHz).
  • Per-format empirical PHI_BIAS values are OPEN. Do NOT invent via Fibonacci/Lucas coincidence.
  • Uniqueness claim softened: "we are not aware of another published float family..." (epistemic), not "the only".

Companion PRs to follow

  • tt-trinity-corona: fix 6 broken rungs in tools/gen_rom.py CATALOG cluster 3 (GF16/24/32/48/64/96/128/256), expand RECORD_COUNT 80 -> 82 for GF512/GF1024 spec records
  • tt-trinity-gamma: add GF512/GF1024 to specs/numeric/tri_net_formats.t27
  • goldenfloat-preprint: extend table to 11 GF rungs (v19 -> v20)
  • arith2027-goldenfloat: align paper + OUTLINE + README
  • claim-audit-lab: NEW CASE-09 "Corona ROM CATALOG vs closed-form rule self-audit" (Conj, Fpath)

Normative change (FORMAT-SPEC-001 v1.2): the exp/mant split for every
rung of the binary GoldenFloat ladder is generated by ONE closed rule:

    e = round((N - 1) / phi^2)
    m = N - 1 - e
    bias = 2^(e - 1) - 1
    exp_max = 2^e - 1

Anchored at the frozen-silicon ground truth GF16 = 1+6+9, bias 31
(tt-trinity-gamma/src/gf16_v2_mul.v). Lucas identity phi^2 + phi^-2 = 3 = L_2.

Files changed:
  - conformance/FORMAT-SPEC-001.json -> v1.2, full 18-rung ladder,
    closed_form_rule marked normative, frozen_silicon_anchor recorded.
  - docs/NUMERIC_FORMATS_SSOT.md -> normative-rule section, 18-rung
    table, GF256 caveat, PHI_BIAS empirical-OPEN list, implementation
    status; uniqueness softened to Conj.
  - specs/numeric/goldenfloat_family.t27 -> 9 -> 17 binary rungs
    (GFTernary/TF3 documented as living outside the array).
  - specs/numeric/formats_catalog.t27 -> GF128 corrected (e=49 m=78,
    was typo e=48 m=79), GF24 normative bias clarified, added 8 new
    rule-derived entries: GF10, GF14, GF48, GF96, GF512, GF1024.
  - specs/numeric/{gf6,gf10,gf14,gf48,gf96,gf128,gf256,gf512,gf1024}.t27
    -> 9 new per-format spec files (encode/decode constants).

All new rungs ship as status=Open / Conj (no RTL on this repo, no
external DOI; the rule produces exact field widths, that's Verified).
GF16 stays the only Verified rung (production, FPGA 35/35 at 323 MHz).

Per-format empirical PHI_BIAS values stay OPEN and MUST NOT be invented
via Fibonacci/Lucas coincidence; only the normative bias = 2^(e-1) - 1
is canonical.

Refs: skill scientific-works-canon (to update -> v1.3 with 18-rung table).
Co-Authored-By: Perplexity Computer <computer@perplexity.ai>

Closes #1052
@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-06-07 09:54:11 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-06-07 11:15:41 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

@gHashTag
gHashTag force-pushed the feat/gf-ladder-expansion-v1.2 branch from 0e95824 to a1e4937 Compare June 7, 2026 11:19
@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-06-07 11:19:13 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

@gHashTag
gHashTag merged commit 0f7424b into master Jun 7, 2026
17 checks passed
@gHashTag
gHashTag deleted the feat/gf-ladder-expansion-v1.2 branch June 7, 2026 11:27
gHashTag added a commit that referenced this pull request Jun 13, 2026
…) (#1065)

* fix(codegen): handle bias formulas in numeric format SSOT (closes #1064)

The bias field in formats_catalog.t27 can carry either a literal int or
a rule-derived formula like 2^N-1. Two formats use the formula form:

  gf512:  bias = 2^194-1
  gf1024: bias = 2^390-1

Both were added by PR #1051 as limit-of-ladder phi-aligned formats. The
parser did int(bias_str) unconditionally, which raised ValueError, so
both rows were silently dropped with a "malformed CATALOG line" warning.

This is why count drifted: committed gen/ JSON shipped 77 (pre-#1051),
post-#1051 SSOT carries 83 raw lines, codegen yielded 81 even after a
fresh re-run, paper #3 (arXiv:2606.09686) claims 84. Four sources of
truth, none matching. See issue #1064 for the full audit.

Fix:
- parse_bias(s) helper: tries int(); falls back to evaluating simple
  2^N+offset forms within int64 range; otherwise returns sentinel -2
  with the raw string in a new bias_formula field
- Format dataclass: adds bias_formula: str (preserves the raw SSOT
  string for every row, including the literal-int cases for symmetry)
- All existing emitters (Rust struct, C header, TS interface, Python,
  Markdown table, etc.) continue to render the int bias field as
  before; bias_formula appears only in JSON and python emitter where
  asdict() picks it up automatically -- non-breaking for the typed
  emitters that hardcode their Format schema.

Verification after fix:
  $ python3 tools/gen_formats_catalog.py specs/numeric/formats_catalog.t27 gen/numeric/
  $ python3 -c "import json; print(json.load(open('gen/numeric/formats_catalog.json'))['count'])"
  83

gf512 and gf1024 now appear in the JSON with bias=-2 and the formula
preserved in bias_formula. Downstream tools that need the actual i64
value can carry the string forward and evaluate at use-site (mpmath
or big-int arithmetic) without losing provenance.

This does NOT yet reconcile SSOT 83 vs paper #3 claim of 84; that
delta is the MXFP6 split + standalone E8M0 in Table 1 vs the SSOT's
collapsed mxfp6 row + Microscaling cluster layout. See #1064 for the
follow-up plan. The CI invariant (raw line count == JSON count) will
land in a separate PR.

Refs: #1051 (GF ladder expansion), #1063 (HF Discovery thread), #1064

* fix(codegen): revert auto-generated gen/ artefacts, add NOW.md entry

PR #1065 originally committed regenerated gen/numeric/* outputs alongside
the source fix in tools/gen_formats_catalog.py. Per L2 generation rules,
gen/ artefacts must be auto-regenerated post-merge by ./scripts/tri gen,
not committed in source PRs.

This commit:
- reverts gen/numeric/* back to master state
- keeps the source fix (tools/gen_formats_catalog.py) intact
- adds docs/NOW.md entry per NOW Sync Gate

Closes #1064

---------

Co-authored-by: gHashTag <playra@trinity-s3ai.org>
Co-authored-by: gHashTag <admin@t27.ai>
gHashTag pushed a commit that referenced this pull request Jun 14, 2026
Regenerate gen/numeric/* from SSOT formats_catalog.t27 (// CATALOG: lines = 83,
HEAD 16042f4). Committed gen JSON was stale at 77 (pre-#1051 snapshot).

- regen all 16 tracked codegen targets: SSOT == regen == committed gen == 83
- add tools/check_catalog_count.py + .github/workflows/catalog-count-gate.yml
  CI invariant: SSOT line-count == codegen count == committed JSON count
- ERRATA_2026-06-14.md: arXiv:2606.09686 declares 84; canonical live = 83
- docs/: P3109 4-param cross-walk, kappa FP8 E4M3 note, conformance-layer positioning

Closes #1079
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

GF ladder expansion v1.2 -- closed-form rule + Corona ROM CATALOG alignment

2 participants