fix(python): pin only the 3.14 and 3.15 magics checked locally

Keep magic 3627 (CPython 3.14.6) and 3666 (CPython 3.15.0b3), whose code
layout and inline-cache tables match those interpreters' opcode tables and
whose decoded code objects match marshal.loads across a stdlib sample. Leave
the 3.15.0a8 magic 3663 unpinned, since no 3.15.0a8 interpreter was available
to check it, and regenerate the 3.15 slice fixture with 3.15.0b3.

Co-Authored-By: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
This commit is contained in:
gensokyo-devandgensokyo-dev authored and Ysopwnable committed 2026-11-14 13:37:55 +01:00
1 parent 1d08253ff2
commit 9d3eb083dd
7 files changed
+108 -148

No files matched your search

+4 -5
View File
@@ -81,11 +81,10 @@ The inline Evidence result contains the artifact path, SHA-256, and byte length.
- `magic`, the 16-bit little-endian field;
- `python_version` and `code_layout`, mapped from the pinned CPython marshal
table (`py37`, `py38`, or `py311`): 3.7–3.13, plus three 3.14 and 3.15
magics: 3627 (3.14.4) and 3663 (3.15.0a8), both read back from real
interpreters, and 3666 (3.15.2), checked with real 3.15.2 release bytes
decoded by the 3.15.0a8 interpreter (3.15.2 itself was not run). Other 3.14
and 3.15 pre-release magics are not pinned and are unsupported. 3.11 alpha
table (`py37`, `py38`, or `py311`): 3.7–3.13, plus the 3.14 magic 3627 and
the 3.15 magic 3666, each checked against a real interpreter (CPython 3.14.6
and 3.15.0b3). Other 3.14 and 3.15 pre-release magics are not pinned and are
unsupported. 3.11 alpha
magics before 3494 used other code layouts and are unsupported. The
3.7.0a1/a2 magics 3390/3391 used 12-byte headers and are outside this
reader's supported format;