Skip to content

Reject nonnumeric list elements in strict text and codec conversion - #1616

Merged
InauguralPhysicist merged 2 commits into
mainfrom
release-blockers/1590-20261003
Oct 5, 2026
Merged

InauguralPhysicist merged 2 commits into
mainfrom
release-blockers/1590-20261003

Conversation

@InauguralPhysicist

@InauguralPhysicist InauguralPhysicist commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

str_from_bytes treated a nonnumeric list element as NUL, so [65, "x", 66] silently returned A even in strict mode. Text and enabled DEFLATE codecs now share strict element validation. Compatibility mode keeps numeric-zero substitution; text still stops at a numeric NUL, while codecs consume the full list. The enrolled tests and four front-door documents cover that distinction.

At head 96bbbb543fdbfe01e809eee09e7c67986085ed1d, release and leak-enabled ASan/UBSan targeted suites each pass 26/26; enabled-codec checks pass 23/23. Shape classification reports 204 candidates/147 guarded/57 exempt/0 errors, its selftests pass 20/20, and docs/291 suite labels pass. Original-source controls demonstrated the strict conversion failures. Fresh-head hosted checks and all 13 external CodSpeed benchmarks are green. Full merge-queue checks remain required.

Complete 16-consumer acceptance: ACCEPTED. The full wave ran once at tested HEAD 44abc6d5 (tree c9bbb380): 16/16 PASS, zero consumer skips, every tool/launcher/driver/harness exit 0, elapsed 3,890.8 s; an independent critic compared the complete pre/post manifests (all 17 source HEADs, path/content/mode identities, owning binaries) and found no blocker. The earlier failed and incomplete runs stay recorded as history.

Ancestry transfer, proven by tree identity. 44abc6d5 sat on f83c5235, the pre-squash form of #1629. Main's #1629 squash 45a71e1d has the same parent (f652f0d8) and the same tree (60b50fa4) as f83c5235. Cherry-picking this PR's two commits onto 45a71e1d yields head 7a26443d with tree c9bbb380, byte-identical to the tested tree, so the acceptance evidence applies to this exact head without relabelling. Consumer pin changes and release publication remain separate work.

The broader conversion audit retains its separate residual contracts.

Closes #1590.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

The account paying for this security review has reached its Codex usage limits. The payer can check the Codex usage dashboard. For personal accounts, using credits requires enabling “Use credits for security reviews” in Code review settings. If you do not manage the paying account, contact this repository's admins.

@codspeed

codspeed Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 13 untouched benchmarks


Comparing release-blockers/1590-20261003 (7a26443) with main (45a71e1)

Open in CodSpeed

Validate consumed elements at the shared conversion boundary while retaining
numeric NUL termination and EIGS_STRICT=0 numeric-zero compatibility.

Original runtime: 9/12 focused checks, three strict text regressions red.
Candidate enrolled section: release 12/12; ASan/UBSan with leaks 12/12;
zlib 23/23. Independent exact-output controls: 24/24.
Suite labels 289; changelog one fragment; independent review found no remaining
scoped defect. Full CI and downstream acceptance remain merge requirements.

Refs #1590, #1416.
The new strict byte-element validator changes the helper closure of five
unary-data APIs. They still accept a whole byte list rather than a bounded
argument tuple; independently review that contract and include the validator
in each fingerprint closure. No runtime or test behavior changes here.

Original metadata: five source/helper mismatches, GCC suite4256/4258.
Updated source audit:204candidates,147guarded,57exempt,0errors.
Contract selftest:20/20. Full strict differential exit0:147declared,
138passed,9unavailable,0failed;35guarded gfx names/140rows,
131raised/9allowlisted,0silent;37pixel rows,23strict rejections.
No-baseline mode did not measure generic baseline equality.

Independent metadata review recomputed all body/helper hashes and confirmed
no exemption broadened. Refs #1590.
@InauguralPhysicist
InauguralPhysicist force-pushed the release-blockers/1590-20261003 branch from 96bbbb5 to 7a26443 Compare October 5, 2026 08:32
@InauguralPhysicist
InauguralPhysicist marked this pull request as ready for review October 5, 2026 08:33
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

The account paying for this security review has reached its Codex usage limits. The payer can check the Codex usage dashboard. For personal accounts, using credits requires enabling “Use credits for security reviews” in Code review settings. If you do not manage the paying account, contact this repository's admins.

@InauguralPhysicist
InauguralPhysicist added this pull request to the merge queue Oct 5, 2026
Merged via the queue into main with commit 6cc2e8d Oct 5, 2026
32 checks passed
@InauguralPhysicist
InauguralPhysicist deleted the release-blockers/1590-20261003 branch October 5, 2026 09:03
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.

Reject nonnumeric byte-list elements in strict byte conversion

2 participants