Skip to content

docs(filetests): retire four stale claims found by the f32 roadmap's G3 sweep - #274

Open
Yona-Appletree wants to merge 1 commit into
mainfrom
claude/suspicious-lamport-fdc8ac
Open

docs(filetests): retire four stale claims found by the f32 roadmap's G3 sweep#274
Yona-Appletree wants to merge 1 commit into
mainfrom
claude/suspicious-lamport-fdc8ac

Conversation

@Yona-Appletree

Copy link
Copy Markdown
Member

The f32 native-math roadmap's G3 sweep — M9's roadmap-wide cleanup, reassigned to M8 along with the gate (Yona, 2026-08-02, since M9 merged while M6–M8 were still in flight).

The sweep hunted the failure class M7 P6 found: a statement true when written that quietly went false. Four turned up, all in filetest docs. No disposition changed and no baseline was regenerated.

What was stale

Where Claimed Actually
src/targets/mod.rs wasm.f32 is out of DEFAULT_TARGETS because @lpfn/@glsl imports resolve to Q32 builtin ids Obsoleted by M5resolve_builtin_id_for_mode landed with tests pinning "no import ever resolves across modes", including the load-bearing pointer-parameter case
README.md Held back "pending review gate G1"; 52 files blocked; _f32 bodies are "stubs that round-trip through Q32::from_f32_wrapping" G1 passed 2026-07-31; the count is 2; the stubs are gone
README.md Explicit-only target list Omitted xtn.f32 / xtlpn.f32, which M8 registered
filetests/uniform/struct.glsl "Which side is authoritative is a G1 question; @broken until answered" G1 answered it. float.md §5 classifies both operations — max with a NaN operand, and normalize(vec3(0)) — as Unspecified

The one that matters beyond docs

wasm.f32's exclusion from CI is now inertia, not a blocker. Measured on this base:

                  pass    fail   unimpl  unsupported  compile-fail
      wasm.f32    6318       0        2          199             0
6345/6345 tests passed, 2 expected-failure, 850/850 files passed, 13.34s

Unlike the xtn.* targets it needs no cross-target artifact — wasmtime is already a test dependency. Not flipped here: promoting it to DEFAULT_TARGETS is a CI-cost decision for G3, and roadmap Q6 did want it default. This change only stops the docs from stating a fixed defect as current.

Left deliberately

uniform/struct.glsl's @broken(wasm.f32) should be retired rather than carried — float.md §5 rule 3 says unspecified behavior is never asserted. Doing that correctly needs the behavior of all five f32 targets, and the q32 assertion must survive, so it is recorded as a G3 follow-up rather than done blind.

Validation

cargo check -p lps-filetests                    ✓
just test-filetests → 31572/31572, 850/850 files, unchanged
scripts/filetests.sh --target wasm.f32 → 6345/6345, 850/850 files, 13.34s
just build-fw-esp32c6 && just fw-esp32c6-size-check
  → 2880000 B / 3145728 B — headroom 265728 B (margin 65536 B)

Full G3 artifact (not in this repo): ~/.photomancer/planning/lp2025/2026-07-30-1745-f32-native-math/g3-roadmap-final-review.md

🤖 Generated with Claude Code

…G3 sweep

The roadmap-final sweep (M9's, reassigned to M8 with G3) looked for the
failure class M7 P6 found: a statement that was true when written and
quietly went false. Four turned up, all in filetest docs.

- targets/mod.rs said wasm.f32 is out of DEFAULT_TARGETS because
  @lpfn/@glsl imports still resolve to Q32 builtin ids. M5 obsoleted
  that: resolve_builtin_id_for_mode landed with tests pinning "no import
  ever resolves across modes", including the load-bearing pointer case.

- README.md said the same target was held "pending review gate G1"
  (passed 2026-07-31) and listed 52 files blocked on the missing f32
  builtin family, describing the _f32 bodies as stubs round-tripping
  through Q32::from_f32_wrapping. All three false. Measured today:
  850/850 files, 6345/6345 assertions, 13.34s, 2 @unimplemented.

  So the exclusion is inertia rather than a blocker. Not flipped here —
  promoting it to DEFAULT_TARGETS is a CI-cost call for G3, and this
  change only stops the docs from stating a fixed defect as current.

- README.md's explicit-only target list omitted xtn.f32 / xtlpn.f32,
  which M8 registered without updating the summary line.

- uniform/struct.glsl parked its @broken on "which side is authoritative
  is a G1 question". G1 answered it, and float.md §5 now classifies both
  operations involved — max with a NaN operand, and normalize(vec3(0)) —
  as Unspecified. Reason rewritten. Retiring the assertion itself is a
  follow-up: float.md §5 rule 3 says unspecified behavior is never
  asserted, but doing it correctly needs all five f32 targets' behavior
  and the q32 assertion must survive.

No disposition changed. Validated: cargo check -p lps-filetests;
just test-filetests → 31572/31572, 850/850 files, unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.

1 participant