Skip to content

fix(hy-check): model curated foreign method surfaces for http.response_writer and http.round_tripper (fixes #4197) - #4198

Merged
limitlessprojects merged 2 commits into
limitlessprojects:mainfrom
jpereyra243-byte:fix-foreign-http-response-writer-and-round-tripper
Nov 9, 2026
Merged

limitlessprojects merged 2 commits into
limitlessprojects:mainfrom
jpereyra243-byte:fix-foreign-http-response-writer-and-round-tripper

Conversation

@jpereyra243-byte

Copy link
Copy Markdown
Contributor

Fixes #4197

Summary

Verification

  • cargo test -p hy-check --test foreign_http_response_writer_round_tripper_surface: 4/4 passed, 0 failed.
  • cargo test -p hy-check --lib: 183/183 passed, 0 failed.
  • Clean branch from latest origin/main.

  • Contributor: @jpereyra243-byte (ID: 337775728)
  • Settlement Wallet (Polygon / Base USDC): 0xC175c34c256598C7e1AD5B15503cFcED7Ed67e10

@limitlessprojects

Copy link
Copy Markdown
Owner

Landed — merge 32ac79aa, remote-asserted (full battery ALL-GREEN)

Thank you @jpereyra243-byte — clean continuation of the #2200/#3868/#3908…/#4116 surface-modeling arc. The lowercased+capitalized binding, the exact-message test asserts, and the fully-read positive controls (_ = on every binding) are exactly the shape that lands first try.

Review notes for transparency:

  • Main's existing response_writer/round_tripper hits are in the member-existence table (http.X known members) — different dimension from this PR's handle-type method surface (w.header() etc.). No dup; foreign_method_surface had no entries for either type before this patch.
  • The error named-type addition tightens previously-permissive behavior (method calls on error values were unchecked before). Verified safe: corpus 139/139 and differential accept-side 47/47 both clean — no false rejects introduced by the tightening.
  • True merge-base is 65c8489d (not the stale PR-reported base); patch vs base is purely additive (+231).

Verification evidence (run on the merge commit):

Gate Result
Merge gate auto-merge clean; no conflict despite S147-era branch point
cargo test --workspace 3206 passed / 0 failed (+8 = PR's new tests exactly); 488 suites = 488 Running lines (1:1)
corpus harness 139/139, tripwire not fired
differential loop FULL AGREEMENT — accept 47/47 + reject 92/92

Protocol followed: merge --no-ff with hand-written credit commit (evidence in the merge message), pushed and git ls-remote == local HEAD asserted before this reply. No silent closes, no fixture fixups needed.

Bounty rail: recorded as a Row-13 BUILDABLE soundness improvement for the current cycle per BOUNTY.md — main pool ladder ($500/cycle, 1st $75 → 10th $45) plus Wildcard Track, judged in discussion #295. Main track: phantom-method rejections with positive controls on five curated interface types.

Next in queue: #4199 (T23 multi-value try unwraps), #4221 (nursery cancellation). Pending author fixes: #4202/#4201 (suite controls), #4206, #4097, #4217, #4219, #4215/#4213/#4211 (allowlist re-target).

@jpereyra243-byte

Copy link
Copy Markdown
Contributor Author

Payout wallet (USDC on Base / Polygon): 0xC175c34c256598C7e1AD5B15503cFcED7Ed67e10

limitlessprojects pushed a commit that referenced this pull request Nov 9, 2026
…nts (W-026, fixes #4200)

Implements Wildcard Track W-026 Milestone 1 (Issue #4200): hy.send_cap[T]/
hy.recv_cap[T] Tier-0 linear channel capabilities; affine transfer
(move-into-task-closure enforcement, HYB-E3001 use-after-move, HYB-E3002
reference capture across task boundaries); ChannelLivenessChecker —
forward CFG dataflow guaranteeing every linear send cap reaches Closed
(HYB-E4004) and every linear recv cap reaches Drained (HYB-E4005) before
nursery scope exit. hy registered in the curated import/root/member sets
(pipe, new_pipe, send_cap, recv_cap, channel).

In-merge conflict disclosure: one foreign.rs conflict, two hunks,
resolved via scripts/resolve_4221.py:
- foreign_named_type: union — adopted the PR's `match base` scrutinee
  (required to strip hy.send_cap[T] generic params), keeping both the
  PR's send_cap/recv_cap OwnHandle arms and the landed #4198 `error`
  ForeignOpaque arm.
- method-result table: HEAD side kept wholesale (PR side was a stale
  reformatted subset of the pre-#4198 table; adds no entries).
Presence assertions green: send_cap arm + error arm + landed surfaces
(#4249/#4252 consts+arms) + #4198 table intact.

Verification evidence (S173 battery, main e33e8dc + 0571ecb):
- merge gate: 2-hunk scripted resolution (above)
- cargo test --workspace: 3245 passed / 0 failed (+20 = PR suite count)
- suites: 493 files == 493 running, 1:1
- PR conformance matrix: channel_liveness_4200 20/20 on the union tree
- corpus: 139/139, tripwire not fired (verdict-level 2/139, threshold ~25%)
- differential: FULL AGREEMENT — accept-side 47/47, reject-side 92/92

CREDIT: @Sora1916
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:stale-base Shepherd: behind main beyond threshold

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[buildable] hy-check(foreign): foreign_method_surface omits curated http.response_writer and http.round_tripper method surfaces (HYB-E1002, Row 13)

2 participants