fix(dev-up): recognize localized netstat states - #2531
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
The connector usage-limit notice is informational, not a review finding. This PR is being checked through the independent coordinator review path; no code action is requested from this notice. |
Fresh-context review (SC-9 gate — Codex credits exhausted). This is the first review posted on this PR.Verdict: FIX-FIRST. The localization fix is real and needed, but as written the fallback stops discriminating on state at all, so it reports a closing socket as a live listener. Verified by execution, not by reading. This PR is T2 control-plane ( MEDIUM — the relaxed match accepts every TCP state, not just localized LISTENING
Confirmed by replaying 10 realistic Consequence for the launcher: a port left in Fix that keeps the localization win. Discriminate on the peer-endpoint column rather than the state word — wildcard/zero peer endpoints are pure digits and punctuation and are not localized: function wildcard_peer(value) { return value ~ /^(0\.0\.0\.0:(0|\*)|\[?::\]?:(0|\*)|\*:(\*|0)|\*\.\*)$/ }and require it alongside the port match. That restores LISTEN-only semantics without reintroducing an English-only state token. MEDIUM — the 186 lines of new test ratify the bug rather than catch it
Most importantly there is no negative case: nothing asserts that a Suggested additions, table-driven off one LOW — the PowerShell guard is unreachable dead code
LOW — two undeclared changes ride along, amending the still-open base PR's own codeThe title, branch name and commit subject all say "recognize localized netstat states", but the sh diff also rewrites Both are correct: I walked the parity table against the PowerShell parser ( The red check — investigated, not a code defect
Root cause is a stacked-PR base-resolution defect in Smart CI, not in this diff: All of ci-required is green here — only this advisory gate is red, and branch protection requires only the three security contexts. Filing the Smart CI defect separately against CI-03 #2327. Note for planning: #2506 does not close this. It targets the same error string, but its tests only ever pass Ordering
|
Resolves the single conflict this branch had accumulated. #2522 inserts 182 lines of new port-release tests immediately above the `high-volume stdout and stderr cannot deadlock marker acceptance` declaration; main's 8c0779f modified that exact declaration line (adding `timeout: 60_000`). Git cannot order an insertion against a change to its anchor line, so it conflicted. Resolution keeps both sides: every inserted line survives verbatim and main's declaration — with its timeout — moves below the inserted block. #2522's own copy of that declaration, which lacked the timeout, is dropped. Merged rather than rebased on purpose: #2531's head has this branch's head d8d5300 as an ancestor, so a force-push here would strand the stacked child. Verified: the diff against main contains zero removed lines (pure insertion), `node --check scripts/ci/dev-up.test.mjs` passes, and both of main's fixes survive in the tree - `closeAllConnections` and `timeout: 60_000`.
Merge-time trap: this PR's
|
…2506 review-record gap in SC-10
…ized state token (re-review HIGH-1); drained-connection negative fixtures in both twins
|
Round 2 (coordinator, 2026-09-06, SC-10 delegated). Retargeted to |
… (verification MEDIUM-1)
|
Scoped verification of the fix diff (fresh-context, 2026-09-06): SHIP. Column indices confirmed for both netstat shapes; |
Summary
This follow-up is intentionally stacked on #2522 because the fallback path is introduced by that still-open PR. Retarget it to main only after the parent lands.
Verification
ode --check scripts/ci/dev-up.test.mjs
eset seed teardown... and success uses exact marker...) with no tracked launcher descendants; the changed seams and existing port-release cases passed
Closes #2526
Refs #2522