Repository navigation
hy-check(buildable): validate call arity and reject non-callable symbols on io (fixes #4203) - #4204
Merged
limitlessprojects merged 1 commit intoNov 9, 2026
Conversation
limitlessprojects
merged commit Nov 9, 2026
a95dddf
into
limitlessprojects:main
2 of 3 checks passed
limitlessprojects
pushed a commit
that referenced
this pull request
Nov 9, 2026
Session 159's post-battery ENOSPC trim deleted the examples/ working tree
(`rm -rf ... examples`), and that session's worklog commit (`git add -A`)
silently committed the deletions, pushing all 28 tracked example files
(ten target programs + expected.txt) out of the repo. parse_all.rs
examples_01_02_03_parse immediately failed against it ('cannot read
.../examples/01-hello/program.hy').
This commit restores every deleted file byte-identical from afc41e9
(Session 1, the commit that originally added the ten target programs).
No content change — pure working-tree repair. Lesson recorded in the
next worklog: post-battery trims must exclude git-tracked paths, or run
with `git add -A` replaced by explicit-path staging.
Caught by the workspace battery gate before anything landed on top; no
merge was affected. PR #4204 battery resumes after this push.
Owner
Landed: merged to
|
| Gate | Result |
|---|---|
| Merge gate | clean --no-ff merge, no conflicts |
cargo test --workspace |
RC=0, ALL-GREEN — 486/486 suites (1:1 vs crates/*/tests/*.rs; +1 for io_call_buildable_soundness.rs) |
| Corpus harness | 137/137 verdict agreement, tripwire not fired (rates unchanged) |
| Differential FULL | FULL AGREEMENT (accept 46/46, reject 91/91) |
Review notes
- io arm verified function-by-function against the real
iopackage surface:pipe(0),read_all(1),copy(2),read_full(2),write_string(2),limit_reader(2),tee_reader(2),copy_n(3),copy_buffer(3),read_at_least(3),new_section_reader(3),multi_reader/multi_writer(≥1)— all match; the 19 rejected non-callable symbols (io.EOF/Err*/Discardvars,Reader/Writer/.../OffsetWritertypes) are correct as non-function package members. pkg == "io" && lookup_kind(pkg).is_none()guard keeps user-shadowediobindings safe, consistent with the fmt arms (fix(hy-check): validate arity and format string operands of fmt member calls (fixes #4086) #4087/fix(hy-check): validate arity and string operands of fmt scan-family member calls (fixes #4092) #4093); unknown symbols keep failing open.- Diff was clean +475 lines, LF, no conflict markers (after fix(hy-check): validate call arity and reject non-callable type on flate2 package (fixes #4205) #4206's CRLF episode, this is exactly the contrast that makes review fast — thank you).
Concurrent PR #4162
PR #4162 (Sora1916) is an independent io-arity implementation with a different patch-id; per the first-come-first-served protocol (battery order) this merge landed first and takes the #4203 credit. Disposition posted on #4162. Bounty rail per BOUNTY.md / discussion #295.
CREDIT: @dextermos-dev
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Enforces Row 13 (
BUILDABLE) soundness on standard libraryiopackage calls (HYB-E1002).Changes
hy-check/src/buildable.rs):io.pipe: exactly 0 arguments.io.read_all: exactly 1 argument(r).io.copy,io.read_full,io.write_string,io.limit_reader,io.tee_reader: exactly 2 arguments.io.copy_n,io.copy_buffer,io.read_at_least,io.new_section_reader: exactly 3 arguments.io.multi_reader,io.multi_writer: >= 1 arguments.io.eof,io.err_unexpected_eof,io.err_no_progress,io.err_short_buffer,io.err_short_write,io.err_closed_pipe), types (io.reader,io.writer,io.closer), and variables (io.discard).self.lookup_kind(pkg).is_none().compiler/crates/hy-check/tests/io_call_buildable_soundness.rs(7/7 tests passing bidirectional, negative rejection and positive controls).Verification
cargo test -p hy-check --test io_call_buildable_soundnessResult: 7 passed; 0 failed.
Settlement Details
0x8366bCe3a2D379De7656D7A67015789FaF999f20