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
Copy file name to clipboardExpand all lines: .agents/sow/current/SOW-0021-20260613-netipc-at-scale.md
+15-1Lines changed: 15 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1049,6 +1049,14 @@ Tests or equivalent validation:
1049
1049
- External review found that Go raw APPS_LOOKUP and CGROUPS_LOOKUP dispatch duplicated the protocol dispatch path and missed the protocol layer's `Finish()==0` overflow guard. Fixed `src/go/pkg/netipc/service/raw/apps_lookup.go` and `src/go/pkg/netipc/service/raw/cgroups_lookup.go` to delegate to protocol dispatchers while preserving raw-service `errHandlerFailed` semantics for typed handler failure.
1050
1050
- Removed the now-unused Go raw-service `lookupMinRequired()` helper after the protocol dispatchers became the single production path for lookup response minimum-size checks.
1051
1051
- Validation passed: POSIX `cd src/go && go test -count=1 -timeout=300s ./pkg/netipc/service/raw`; POSIX `cd src/go && go test -count=1 -timeout=300s ./pkg/netipc/protocol`; Windows `cd src/go && "/c/Program Files/Go/bin/go.exe" test -count=1 -timeout=300s ./pkg/netipc/service/raw`; Windows focused raw lookup/defaults tests also passed on `win11`.
1052
+
- Post-push Rust/Go reviewer fixes:
1053
+
- External review found that Rust raw APPS_LOOKUP and CGROUPS_LOOKUP service dispatch still duplicated protocol dispatch logic, unlike C and Go. Fixed `src/crates/netipc/src/service/raw/apps_lookup.rs` and `src/crates/netipc/src/service/raw/cgroups_lookup.rs` to delegate to the Rust protocol dispatchers.
1054
+
- External review found that Rust raw lookup dispatch returned `HandlerFailed` before checking whether the builder had already recorded `Overflow`. This could convert a recoverable response-size overflow into an internal service failure. Fixed the Rust protocol-to-service mapping and added platform-neutral tests in `src/crates/netipc/src/service/raw_lookup_dispatch_tests.rs` proving builder `Overflow` wins over handler-failed while plain handler false still maps to service `HandlerFailed`.
1055
+
- External review found that C protocol lookup dispatch reports a no-builder-error handler false as `NIPC_ERR_HANDLER_FAILED`, while Go and Rust protocol lookup dispatch reported `BadLayout`. Fixed Go and Rust protocol dispatch to expose `ErrHandlerFailed` / `NipcError::HandlerFailed` for this case while preserving `BadLayout` when the builder itself records a layout error. This is API error parity only; no wire format changes.
1056
+
- External review found that Rust `ensure_lookup_request_capacity()` did not check abort before disconnect/reconnect work. Fixed it to return `Aborted`, disconnect, and mark the client `Broken` before any capacity growth attempt when abort is already requested. Added a platform-neutral Rust test proving no reconnect is attempted in this path.
1057
+
- Validation passed on POSIX: `cd src/go && go test -count=1 -timeout=300s ./pkg/netipc/protocol`; `cd src/go && go test -count=1 -timeout=300s ./pkg/netipc/service/raw`; `cargo test --manifest-path src/crates/netipc/Cargo.toml protocol::lookup -- --nocapture`; `cargo test --manifest-path src/crates/netipc/Cargo.toml lookup_dispatch_tests -- --nocapture`; `cargo test --manifest-path src/crates/netipc/Cargo.toml service::raw:: -- --nocapture`.
1058
+
- Validation passed on Windows `win11`: `cd src/go && "/c/Program Files/Go/bin/go.exe" test -count=1 -timeout=300s ./pkg/netipc/protocol`; `cd src/go && "/c/Program Files/Go/bin/go.exe" test -count=1 -timeout=300s ./pkg/netipc/service/raw`; `PATH=/c/Users/costa/.cargo/bin:$PATH cargo test --manifest-path src/crates/netipc/Cargo.toml protocol::lookup -- --nocapture`; `PATH=/c/Users/costa/.cargo/bin:$PATH cargo test --manifest-path src/crates/netipc/Cargo.toml service::raw:: -- --nocapture`.
1059
+
- Reviewer concern about suffix-reservation still losing partial responses was not reproduced: C POSIX `timeout 900 build-coverage/bin/test_service` passed with `642 passed, 0 failed`; focused POSIX Go `TestLookupLargeResponseSplit` passed; focused POSIX Rust `test_lookup_large_response_split_calls` passed; Windows Rust `test_lookup_large_response_split_calls_windows` passed. The concern was treated as rejected unless a failing reproducer is produced.
1052
1060
- Note: `ctest` on `$PATH` resolved to a broken local Python wrapper missing the `cmake` module; validation used `/usr/bin/ctest`.
1053
1061
1054
1062
Real-use evidence:
@@ -1066,7 +1074,13 @@ Reviewer findings:
1066
1074
- External reviewer concern: hidden fixed payload ceilings would contradict initialization-tunable budgets. Reviewed against code and docs. `NIPC_MAX_PAYLOAD_CAP` / `MaxPayloadCap` remains a named default growth ceiling; request/response payload budgets are exposed through initialization config. Server learned-capacity growth now also honors those configured ceilings.
1067
1075
- External reviewer finding: Go zero-config raw-server growth ceilings were derived after applying `MaxPayloadDefault`, effectively preventing default servers from learning above `1024` bytes. Handled by deriving growth ceilings from the original config and validating default versus explicit ceiling behavior.
1068
1076
- External reviewer finding: Go raw lookup dispatchers duplicated protocol dispatcher logic and could diverge from protocol overflow handling. Handled by delegating raw APPS_LOOKUP and CGROUPS_LOOKUP dispatch to protocol dispatchers, preserving raw typed-handler failure semantics, and deleting the now-dead local minimum-size helper.
1069
-
- One requested external review run timed out before returning a usable final report. The completed reviewer findings above were triaged against the codebase; concrete defects were fixed and validated, while non-blocking style or broader design suggestions remain subject to the existing SOW close gates.
1077
+
- External reviewer finding: Rust raw lookup dispatchers duplicated protocol dispatcher logic and could diverge from protocol overflow handling. Handled by delegating raw APPS_LOOKUP and CGROUPS_LOOKUP dispatch to protocol dispatchers.
1078
+
- External reviewer finding: Rust raw lookup service dispatch hid builder `Overflow` when the typed handler returned false after a builder failure. Handled by mapping protocol builder errors before service handler-failed behavior and adding tests proving builder `Overflow` remains `DispatchError::Overflow`.
1079
+
- External reviewer finding: C, Go, and Rust protocol lookup dispatch returned different errors for handler false with no builder error. Handled by aligning Go and Rust with C's handler-failed protocol error while preserving builder-error propagation.
1080
+
- External reviewer finding: Rust lookup request-capacity growth did not check abort before reconnecting. Handled by checking abort at helper entry and validating no reconnect is attempted after abort.
1081
+
- External reviewer concern: APPS_LOOKUP/CGROUPS_LOOKUP suffix-reservation could still lose partial progress if compact `PAYLOAD_EXCEEDED` suffix entries fill the response. Rejected after direct validation: C POSIX full service tests, POSIX Go focused large-response split, POSIX Rust focused large-response split, and Windows Rust focused large-response split all pass with stitched complete responses.
1082
+
- External reviewer concern: C's service-layer zero-config response payload default is larger than Rust/Go raw defaults. Triaged as documented policy, not a hidden hardcoded protocol cap: Level 1 default/cap values remain named defaults, C service uses a named service response default, and all languages expose request/response payload budgets through initialization config.
1083
+
- Two requested external review runs timed out before returning usable final reports, and one run ended before a final report could be retrieved. Completed reviewer findings were triaged against the codebase; concrete defects were fixed and validated, while non-blocking style or broader design suggestions remain subject to the existing SOW close gates.
1070
1084
- External reviewer finding: coverage scripts and broader adversarial matrix still need updates before SOW completion. Coverage script expansion is now implemented; C/Rust/Go coverage gates pass; representative `8192` and `32768` logical-call tests now pass in C/Rust/Go on POSIX and Windows; POSIX and Windows baseline/SHM lookup-scale interop now pass across all C/Rust/Go directed pairs, including mixed-status lookup cases and heavier `65536` stress-only runs; lookup status codec interop now proves `PAYLOAD_EXCEEDED` and `OVERSIZED_ITEM` wire parity across C/Rust/Go; Rust malformed typed lookup response parity is now covered on POSIX and Windows; malformed follow-up responses after partial progress are now covered in C/Rust/Go on POSIX and Windows; reordered and duplicate response-item corruption is now covered in C/Rust/Go on POSIX and Windows; invalid status enum, invalid status-dependent field, and invalid label-table corruption are now covered in C/Rust/Go on POSIX and Windows; huge valid label isolation is now covered in C/Rust/Go on POSIX and Windows; endpoint absence before call, endpoint disappearance after partial progress, and endpoint disappearance before the first subcall are now covered in C/Rust/Go on POSIX and Windows; zero-item typed lookup calls are now covered in C/Rust/Go on POSIX and Windows; duplicate and unsorted request keys under request splitting are now covered in C/Rust/Go on POSIX and Windows; full POSIX and Windows benchmark regenerations now pass; downstream topology-containers post-vendor validation now passes. Broader adversarial matrix review remains open.
0 commit comments