Repository navigation
Reserve configured listeners before application startup - #2057
Draft
Brian Krabach (bkrabach) wants to merge 2 commits into
Draft
Brian Krabach (bkrabach) wants to merge 2 commits into
Brian Krabach (bkrabach) wants to merge 2 commits into
Conversation
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.
Change
Addresses #1701 at the CLI's listener-acquisition boundary. CPython 3.13 drops
EADDRNOTAVAILwhile binding and can raise an errno-lessOSError; previously this bypassed CLI guidance after app construction had already started diagnostics and background controllers.SO_REUSEPORT.Supervisor policies are deliberately unchanged: launchd KeepAlive continues to retry while a VPN address is unavailable. This does not eliminate process retries or rewrite service definitions or historical captures. No merge, version, release or live adoption is included. Independent plan review preceded implementation; independent results/validation review remains pending with the integration owner.
Validation
Source: accepted base
90cc4f2586dfc9db6826daae26ad18c2feb4ec7e; production change96fb7b945c26c21cf7ef7378ab9c437ceca00522, followed by test-fixture-only correctiona0d86cff342c62e75f8d64e915bab8b4b59d18d9, treeca8c6e95a119997910fc0931ed6af0b50ff9be86. Isolated managed Linux aarch64, Python 3.13.16, locked aiohttp 3.14.4; no host bootstrap or live service-manager operation.96fb7b945failed, after the cold-default cell passed: its foreground audit guard rejectedsocket.getaddrinfofrom the new acquisition path. Original run43608166820, job132487468908, foreground artifact14119362709remain failed evidence. The installed test candidate was GitHub's synthetic mergea993cb72into then-main0a54a81c, not the isolated branch alone; its CLI bytes match this branch exactly.127.0.0.1/ configured-port / passive-stream resolution once, followed by that helper's same socket object. Unknown network, hostname/DNS, UDP, wrong caller/options/object/port and repeated attempts remain denied. 97 foreground fixture tests passed, zero skips, including actual child-process audit-hook admission and unowned same-target-resolution denial. All 3,871 candidate files/modes match the tested snapshot; production code is unchanged by this correction.43613019349, job132502388227, foreground artifact14121087147, installed synthetic candidate298ac1d4/ tree32627d09. Both the native cold-default step and installed foreground CLI step succeeded. The original report confirms setup/status/export/serve/open, cookie-CSRF replay, export fingerprint, real default runtime, public entry, TLS stability, graceful cleanup, listener closure and repair-lock release; zero unknown network attempts. One existing attested optional IPv6 capability probe was denied as intended. Outer jobs settled, scratch removed, and the report'spublicAcceptance:falselimit remains.The three measured failed warm in-process CLI invocations took 4.967 / 2.581 / 2.702 ms in the final fixture, with fixed synthetic config/TLS inputs. This is not cold-process launch cost, a native launchd cadence measurement or a general claim that retries are cheap; the regression promise is zero app startup work/state effects on bind failure.
The seven skipped Linux-hosted controls require native Windows TokenUser, owned launch guard/descendant settlement, native command-line parsing, opt-in Task Scheduler, passive process handles, owner-table listener identity or Toolhelp ancestry. They remain skips, not retroactively passed. The separate native CI proof is bounded installed foreground CLI evidence, not universal native Windows/device/background-launch acceptance. Native macOS/Tailscale/launchd cadence and return-of-interface recovery and live adoption are not claimed. All three managed implementation/correction test environments were removed after source/raw/JUnit export; exact private operation receipts are retained with the integration owner rather than added to the repository.