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
+19-2Lines changed: 19 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -881,6 +881,18 @@ Recorded user decisions:
881
881
- C Windows on `/tmp/plugin-ipc-sow0021-20260614052244`: `cmake --build build-windows-focused --target test_win_service_extra -j4` passed and `NIPC_TEST_FILTER=malformed_first_response timeout 600 build-windows-focused/bin/test_win_service_extra.exe` passed with `84 passed, 0 failed`.
882
882
- Go Windows on `/tmp/plugin-ipc-sow0021-20260614052244`: `cd src/go && "/c/Program Files/Go/bin/go.exe" test -count=1 -timeout=180s ./pkg/netipc/service/raw -run '^TestWin(Apps|Cgroups)LookupRejectsMalformedTypedResponses$'` passed.
883
883
- Rust Windows on `/tmp/plugin-ipc-sow0021-20260614052244`: `/c/Users/costa/.cargo/bin/cargo.exe test --manifest-path src/crates/netipc/Cargo.toml test_lookup_rejects_malformed_typed_responses_windows -- --nocapture` passed.
884
+
- Closed the huge-valid-metadata oversized-item gap:
885
+
- Existing Level 2 transparent overflow tests covered a huge APPS_LOOKUP cgroup path and a huge CGROUPS_LOOKUP name, but not a huge valid label.
886
+
- Extended C, Rust, and Go POSIX/Windows transparent `PAYLOAD_EXCEEDED` retry tests so each logical request contains a normal item, an oversized path/name item, an oversized label item, and a trailing normal item.
887
+
- Expected result in every language/platform: both huge items return `OVERSIZED_ITEM`, the trailing item still returns `KNOWN`, and the logical call hides intermediate `PAYLOAD_EXCEEDED` outcomes from Level 2 consumers.
888
+
- The cgroups test response budget is `256` bytes. This remains far below the 512-byte huge name/label payloads but leaves enough room for compact `PAYLOAD_EXCEEDED` and `OVERSIZED_ITEM` control records, so the test exercises scale handling rather than an impossible control-response buffer.
- Go POSIX: `cd src/go && go test -count=1 -timeout=180s ./pkg/netipc/service/raw -run 'Test(Cgroups|Apps)LookupTransparentPayloadExceededRetry'` passed.
- C Windows on `/tmp/plugin-ipc-sow0021-20260614052244`: `cmake --build build-windows-focused --target test_win_service_extra -j4` passed and `NIPC_TEST_FILTER=test_lookup_payload_exceeded_retry timeout 600 build-windows-focused/bin/test_win_service_extra.exe` passed with `36 passed, 0 failed`.
894
+
- Go Windows on `/tmp/plugin-ipc-sow0021-20260614052244`: `cd src/go && "/c/Program Files/Go/bin/go.exe" test -count=1 -timeout=180s ./pkg/netipc/service/raw -run "^TestWin(Cgroups|Apps)LookupTransparentPayloadExceededRetry$"` passed.
895
+
- Rust Windows on `/tmp/plugin-ipc-sow0021-20260614052244`: `/c/Users/costa/.cargo/bin/cargo.exe test --manifest-path src/crates/netipc/Cargo.toml transparent_payload_exceeded -- --nocapture` passed.
884
896
885
897
## Validation
886
898
@@ -986,6 +998,11 @@ Tests or equivalent validation:
986
998
- C, Rust, and Go POSIX tests validate APPS_LOOKUP and CGROUPS_LOOKUP fail the whole logical call when a response item advertises more labels than its encoded item contains.
987
999
- C, Rust, and Go Windows tests validate the same APPS_LOOKUP and CGROUPS_LOOKUP malformed status/table cases.
988
1000
- Latest focused evidence: C POSIX `ctest``test_service` passed; C Windows focused filter `84 passed, 0 failed`; Go/Rust POSIX and Windows focused malformed-response tests passed.
1001
+
- Oversized valid metadata isolation validation:
1002
+
- C, Rust, and Go POSIX tests validate APPS_LOOKUP and CGROUPS_LOOKUP transparent `PAYLOAD_EXCEEDED` retry when a logical response contains two different oversized valid items: one huge name/path item and one huge label item.
1003
+
- C, Rust, and Go Windows tests validate the same APPS_LOOKUP and CGROUPS_LOOKUP huge valid label isolation case.
1004
+
- The final logical response keeps both oversized items as explicit `OVERSIZED_ITEM` outcomes and still returns the trailing normal item as `KNOWN`.
1005
+
- Latest focused evidence: C POSIX `ctest``test_service` passed; C Windows focused filter `36 passed, 0 failed`; Go/Rust POSIX and Windows focused transparent-overflow tests passed.
- C, Rust, and Go POSIX tests validate APPS_LOOKUP and CGROUPS_LOOKUP fail the whole logical call when a valid first partial response is followed by endpoint disappearance before follow-up completion.
991
1008
- C, Rust, and Go Windows tests validate the same APPS_LOOKUP and CGROUPS_LOOKUP endpoint-disappears-after-partial-progress case.
@@ -1035,7 +1052,7 @@ Reviewer findings:
1035
1052
- External reviewer finding: local oversized request-key synthesis could run before proving the client is connected. Handled by enforcing `READY` before logical lookup work in C, Go, and Rust.
1036
1053
- External reviewer finding: cgroups all-local oversized handling could skip the zero-item probe path. Handled by continuing after a local oversized item only when more request items remain; otherwise the client sends the zero-item request and validates endpoint/generation behavior.
1037
1054
- 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.
1038
-
- 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; 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.
1055
+
- 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.
1039
1056
1040
1057
Same-failure scan:
1041
1058
@@ -1095,7 +1112,7 @@ Lessons:
1095
1112
Follow-up mapping:
1096
1113
1097
1114
- Still open inside this active SOW:
1098
-
- add any remaining broader adversarial tests from the planned matrix beyond the now-covered representative `8192`/`32768` logical-call cases, now-covered mid-logical timeout/abort cases, now-covered malformed follow-up responses after partial progress, now-covered reordered/duplicate response-item corruption, now-covered invalid status/status-dependent/label-table response corruption, now-covered endpoint absence before call, now-covered endpoint disappearance after partial progress, now-covered endpoint disappearance before the first subcall, now-covered zero-item typed lookup calls, now-covered stale request-capacity reconnect cases, now-covered duplicate/unsorted request keys under request splitting, now-covered request cap-minus-one/exact/plus-one boundaries, now-covered exact response-fit plus/minus-one boundaries, now-covered no-progress overflow cases, now-covered raw no-growth overflow cases, now-covered logical response-byte ceilings, now-covered mixed-status cross-language interop cases, and now-covered lookup status codec interop cases;
1115
+
- add any remaining broader adversarial tests from the planned matrix beyond the now-covered representative `8192`/`32768` logical-call cases, now-covered mid-logical timeout/abort cases, now-covered malformed follow-up responses after partial progress, now-covered reordered/duplicate response-item corruption, now-covered invalid status/status-dependent/label-table response corruption, now-covered huge valid label isolation cases, now-covered endpoint absence before call, now-covered endpoint disappearance after partial progress, now-covered endpoint disappearance before the first subcall, now-covered zero-item typed lookup calls, now-covered stale request-capacity reconnect cases, now-covered duplicate/unsorted request keys under request splitting, now-covered request cap-minus-one/exact/plus-one boundaries, now-covered exact response-fit plus/minus-one boundaries, now-covered no-progress overflow cases, now-covered raw no-growth overflow cases, now-covered logical response-byte ceilings, now-covered mixed-status cross-language interop cases, and now-covered lookup status codec interop cases;
1099
1116
- keep lookup-scale interop green across POSIX baseline, POSIX SHM, Windows Named Pipe, and Windows SHM; all four profiles now cover both all-known scale and mixed-status C/Rust/Go directed tests.
0 commit comments