Skip to content

fix(gen): untrack stale gen/numeric catalog artifacts (committed gen drifts 77 vs SSOT 83) -- Closes #1120#1128

Open
gHashTag wants to merge 1 commit into
masterfrom
fix/untrack-stale-gen-numeric-catalog-1120
Open

fix(gen): untrack stale gen/numeric catalog artifacts (committed gen drifts 77 vs SSOT 83) -- Closes #1120#1128
gHashTag wants to merge 1 commit into
masterfrom
fix/untrack-stale-gen-numeric-catalog-1120

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Summary

Closes #1120.

Issue #1120 reported that the committed gen/numeric/formats_catalog.json declares
77 formats while the SSOT specs/numeric/formats_catalog.t27 carries 83
(grep -c '// CATALOG:' specs/numeric/formats_catalog.t27 == 83 on this HEAD).

This PR removes the 16 stale committed codegen artifacts under gen/numeric/ from
tracking, so they can no longer drift against the SSOT. It does not modify any
file under gen/ (the L2 GENERATION gate forbids that); it only deletes (status D).

Why deletion, not regeneration

The repo constitution (L2 GENERATION) treats gen/ as DERIVED and never
hand-committed:

  • gen/ is in .gitignore (line 6).
  • The catalog-count gate (catalog-count-gate.yml) regenerates fresh into a temp
    dir and compares to the SSOT; it does NOT diff the committed gen/ file by design.
  • The L2 gate (l1-traceability.yml) fails any PR with a modified (M) file under
    gen/. Re-committing a regenerated gen/ would therefore be rejected by CI.

The 16 catalog artifacts were historically force-added into tracking, which is the
only reason they can drift at all. Removing them from tracking returns gen/numeric/
to the gitignored, regenerate-on-demand state the constitution intends. After this
change, a fresh python3 tools/gen_formats_catalog.py specs/numeric/formats_catalog.t27 <out>
is the single source of these files, and the 83-vs-77 drift class can no longer exist.

The drift, measured

  • count: SSOT 83 vs committed gen 77 (delta 6: gf10, gf14, gf48, gf96, gf512, gf1024 -- GoldenFloat rungs).
  • 15 field mismatches across gf6/gf24/gf128/gf256 (mostly metadata).
  • one substantive numeric mismatch: gf128 stored e_bits=48 / m_bits=79 in the stale
    committed file vs the SSOT-correct e_bits=49 / m_bits=78 (the SSOT line annotates
    "corrects v1.1 typo e=48"). The committed artifacts are a pre-correction snapshot.

A from-scratch independent second-implementation diff (a Rust SSOT-vs-gen oracle,
run locally; two-implementation differential-testing principle) confirmed:

  • stale committed file -> VERDICT DIVERGENCE (exit 2)
  • fresh regenerated file -> VERDICT CLEAN (exit 0; SSOT == gen == 83; gf128 e=49/m=78)

Non-breaking check

Nothing reads the committed gen/numeric/formats_catalog.json at build, test, or CI
time -- only the codegen tool references its own output path in a comment. Grep across
tools/, scripts/, tests/, and .github/workflows/ found no runtime dependency.

Files

  • delete: gen/numeric/formats_catalog.{md,json,py,rs,h,hpp,ts,go,zig,swift,kt,vh,ml} + gen/numeric/FormatsCatalog.{hs,java,jl} (16 files).
  • update: docs/NOW.md (freshness entry).

L6 gf16 SSOT untouched; catalog stays 83; no gen/ edits (deletions only); ASCII-only
added lines; no quality claim added.

-- Dmitrii Vasilev
ORCID 0009-0008-4294-6159
github.com/gHashTag
arXiv:2606.05017 (GoldenFloat)

…OT 83)

The committed gen/numeric codegen artifacts are a pre-correction snapshot
that drifts against the SSOT (declares 77 vs SSOT 83, plus a gf128 e/m typo
correction). Per the repo constitution (L2 GENERATION), gen/ is DERIVED and
never hand-committed (gen/ is gitignored; the count gate regenerates into a
temp dir). These 16 files were historically force-added, which is the only
reason they can drift. Remove them from tracking (deletions only, no gen/
modifications) so a fresh codegen run is their single source.

Nothing reads the committed gen/numeric/formats_catalog.json at build/test/CI
time. Verified locally via an independent Rust SSOT-vs-gen oracle: stale file
DIVERGENCE (exit 2), fresh regen CLEAN (exit 0, SSOT == gen == 83).

Closes #1120
@gHashTag
gHashTag force-pushed the fix/untrack-stale-gen-numeric-catalog-1120 branch from 2615ba8 to ee3fcec Compare June 14, 2026 17:20
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-06-14 17:20:49 UTC

Summary

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

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=7f77bc056def != manifest seal=49e55df6d444.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@gHashTag

gHashTag commented Jul 6, 2026

Copy link
Copy Markdown
Owner Author

Closing: superseded by later conformance promote PRs (#1328/#1345/#1359/#1377/#1381/#1399).

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

Labels

None yet

Projects

None yet

1 participant