Skip to content

operator-conformance-pynter: compare list-typed results for real - #331

Draft
martin-henz wants to merge 7 commits into
mainfrom
fix-pynter-list-comparison
Draft

operator-conformance-pynter: compare list-typed results for real#331
martin-henz wants to merge 7 commits into
mainfrom
fix-pynter-list-comparison

Conversation

@martin-henz

Copy link
Copy Markdown
Member

Summary

Closes #309.

pvmlValueMatches's PVML_SUPPORTED_STASH_TYPES only covered bigint/number/bool/string/complex — no case at all for a list-typed CSE stash value, so every combination involving a list (including list * int / int * list, per #299/#294) was skip-gated out of the sweep with reason "list-typed results aren't decoded by this file's comparison logic yet", rather than actually checked. Not evidence of a runtime bug — native Pynter's own VM does support list * int (vm.c's op_mul_g) — purely a gap in this file's own comparison logic.

Fix

Added a "list" case to pvmlValueMatches: reconstructs the full CSE Value from wantValue (the raw Value[] a list-typed stash entry carries) and renders it through the same toPythonString every other engine's list-typed comparisons already use (generateNativePynterTestCases, utils.ts), compared directly against native Pynter's captured print() text. Confirmed both engines' printers produce identical text for the case that actually matters — both print "[1, 2, 1, 2]" for [1, 2] * 2 — so no tolerance/normalization needed here, unlike the float/complex cases above it.

nativePynterSkipReason's only branch (the list*int skip) is gone; the function itself stays as the extension point for whatever the next audit finds, same as NATIVE_PYNTER_SKIP_REASONS in utils.ts.

Test plan

  • Verified against a freshly built native Pynter binary (PYNTER_RUNNER_PATH): 1104/1104 passing (up from 1089 attempted + 15 skipped) — confirmed list*int, list*True, list*'ab', list**[1,2], and every other list-typed combination in the sweep now genuinely exercised and passing, not silently skipped
  • Full suite (native-Pynter-independent): 61 suites, 19,237 tests, 0 regressions
  • tsc --noEmit, eslint clean

🤖 Generated with Claude Code

https://claude.ai/code/session_01KrwJGug3rCXijRseRjys9V

Closes #309. pvmlValueMatches's PVML_SUPPORTED_STASH_TYPES only covered
bigint/number/bool/string/complex -- there was no case at all for a
list-typed CSE stash value, so every combination involving a list
(including list*int/int*list, per #299/#294) was skip-gated out of the
sweep with reason "list-typed results aren't decoded by this file's
comparison logic yet", rather than actually checked. Not evidence of a
runtime bug -- native Pynter's own VM does support list*int (vm.c's
op_mul_g) -- purely a gap in this file's own comparison logic.

Added a "list" case: reconstructs the full CSE Value from wantValue (the
raw Value[] a list-typed stash entry carries) and renders it through the
same toPythonString every other engine's list-typed comparisons already
use (generateNativePynterTestCases, utils.ts), compared directly against
native Pynter's captured print() text. Confirmed the two engines' printers
produce identical text for the case that actually matters here -- both
print "[1, 2, 1, 2]" for `[1, 2] * 2` -- so no tolerance/normalization
needed, unlike the float/complex cases above it.

nativePynterSkipReason's only branch (the list*int skip) is gone; the
function itself stays as the extension point for whatever the next audit
finds, same as NATIVE_PYNTER_SKIP_REASONS in utils.ts.

Verified against a freshly built native Pynter binary
(PYNTER_RUNNER_PATH): 1104/1104 passing (up from 1089 attempted + 15
skipped) -- confirmed list*int, list*True, list*'ab', list**[1,2], and
every other list-typed combination in the sweep now genuinely exercised
and passing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KrwJGug3rCXijRseRjys9V
@gemini-code-assist

Copy link
Copy Markdown
Contributor

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@martin-henz
martin-henz marked this pull request as draft July 26, 2026 13:54
@martin-henz martin-henz self-assigned this Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

operator-conformance-pynter.test.ts: list-typed results (incl. list * int) aren't checked against native Pynter

1 participant