You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Protected main remains 7faf7a3b8a47980113982914000e724ab6a6cda5. The defect is reproduced and the bounded source repair is implemented on Draft PR #195, but it is not protected-main truth yet.
HTTPX adds an ambient Connection client default. EgressWeave correctly rejects hop-by-hop request metadata at its transport boundary, so before the repair an ordinary policy-allowed request built through the public EgressWeave client could deny itself before reaching the validated pinned pool unless the caller manually removed that framework default.
The root-cause remedy belongs at EgressWeave client construction, not in the transport validator: remove only HTTPX's ambient Connection default while continuing to fail closed on caller-supplied hop-by-hop fields.
scope: src/egressweave/sync_transport.py, src/egressweave/transport.py, and tests/test_public_client_default_headers.py.
The current tree removes only the ambient HTTPX Connection default during synchronous/asynchronous public client construction. Caller-supplied hop-by-hop fields remain rejected by the existing fail-closed request-header validator. Destination authorization, normalized (hostname, port), methods, target/framing controls, redirects, proxies, Unix sockets, TLS identity, DNS pinning/revalidation, explicit credentials, finite resource budgets and cleanup are unchanged.
This PR remains the required predecessor for #193 / #134 response-cookie-state work.
Exact-current-head evidence
On unchanged 5abc442bb4269c2bdce74cd870bfc9889c70be89:
repository CI 31596370532: success;
SAST Semgrep 31596370551: success;
Security Scan 31596370786: aggregate success, but dependency-review job 94112774879 skipped the actual immutable-pinned Dependency review action; wrapper green is therefore non-passing supply-chain evidence;
OpenCode check 94121293201: success as check/model evidence only;
Noema check 94112774229: success as separate machine/model evidence;
Strix exact-head check 94112774246: wrapper success with Strix backend unavailable and no vulnerability report; this is non-passing semantic security evidence;
formal reviews: none;
unresolved review threads: none.
No wrapper, skipped action, backend-unavailable result, status/model evidence, predecessor head or synthetic merge revision is promoted into acceptance.
Acceptance criteria
Add focused sync and async public-builder RED tests proving an ordinary allowed request must reach an injected pinned pool without caller deletion of framework defaults.
Prove the final low-level request omits the ambient Connection hop-by-hop default.
Preserve fail-closed rejection of caller-supplied hop-by-hop headers; do not weaken _build_safe_request_headers.
Remove only the conflicting ambient client default without widening destinations, methods, redirects, proxies, Unix sockets, TLS identity, DNS pinning, framing, credentials or resource limits.
Keep synchronous and asynchronous public-builder behavior aligned.
Obtain exact-head repository CI and SAST success on the current repair.
Integrate the separately governed organization Dependency Review fail-closed repair and obtain fresh unchanged-head Security Scan evidence where the actual immutable-pinned Dependency review action executes and succeeds.
Obtain an actual exact-head Strix semantic report rather than backend-unavailable/no-report/wrapper-only evidence.
Revalidate every current human/automated finding, live base, ancestry, ruleset, required workflows and review threads immediately before integration.
Merge only the unchanged accepted tree under live governance and verify the ordinary public-client request path from protected main.
Do not solve this by allowing Connection: keep-alive through the security transport, by churning the clean #195 head to retrigger external providers, or by adding an EgressWeave-local substitute for organization-owned Dependency Review or Strix. The strict transport-side hop-by-hop rejection remains the correct protocol/security boundary.
Buyer-visible reliability defect
Protected
mainremains7faf7a3b8a47980113982914000e724ab6a6cda5. The defect is reproduced and the bounded source repair is implemented on Draft PR #195, but it is not protected-main truth yet.HTTPX adds an ambient
Connectionclient default. EgressWeave correctly rejects hop-by-hop request metadata at its transport boundary, so before the repair an ordinary policy-allowed request built through the public EgressWeave client could deny itself before reaching the validated pinned pool unless the caller manually removed that framework default.The root-cause remedy belongs at EgressWeave client construction, not in the transport validator: remove only HTTPX's ambient
Connectiondefault while continuing to fail closed on caller-supplied hop-by-hop fields.Exact current implementation lane
Fresh identity:
7faf7a3b8a47980113982914000e724ab6a6cda5;fix(reliability): remove ambient HTTPX Connection default;5abc442bb4269c2bdce74cd870bfc9889c70be89;src/egressweave/sync_transport.py,src/egressweave/transport.py, andtests/test_public_client_default_headers.py.The current tree removes only the ambient HTTPX
Connectiondefault during synchronous/asynchronous public client construction. Caller-supplied hop-by-hop fields remain rejected by the existing fail-closed request-header validator. Destination authorization, normalized(hostname, port), methods, target/framing controls, redirects, proxies, Unix sockets, TLS identity, DNS pinning/revalidation, explicit credentials, finite resource budgets and cleanup are unchanged.This PR remains the required predecessor for #193 / #134 response-cookie-state work.
Exact-current-head evidence
On unchanged
5abc442bb4269c2bdce74cd870bfc9889c70be89:31596370532: success;31596370551: success;31596370786: aggregate success, but dependency-review job94112774879skipped the actual immutable-pinnedDependency reviewaction; wrapper green is therefore non-passing supply-chain evidence;94121293201: success as check/model evidence only;94112774229: success as separate machine/model evidence;94112774246: wrapper success withStrix backend unavailableand no vulnerability report; this is non-passing semantic security evidence;No wrapper, skipped action, backend-unavailable result, status/model evidence, predecessor head or synthetic merge revision is promoted into acceptance.
Acceptance criteria
Connectionhop-by-hop default._build_safe_request_headers.Dependency reviewaction executes and succeeds.RCA discipline / non-goals
Do not solve this by allowing
Connection: keep-alivethrough the security transport, by churning the clean #195 head to retrigger external providers, or by adding an EgressWeave-local substitute for organization-owned Dependency Review or Strix. The strict transport-side hop-by-hop rejection remains the correct protocol/security boundary.