Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
526db47
Add robustness reproduction tests for session, handshake and timeout …
ktsaou Oct 29, 2026
c828b0d
Fix Rust receive timing out after one 100 ms abort-poll slice
ktsaou Oct 29, 2026
ca3f5be
Document the 100 ms client abort observation bound
ktsaou Oct 29, 2026
321629a
Cap UDS packet size at the kernel datagram limit
ktsaou Oct 29, 2026
7e9d9e2
Build and run Go on all Linux architectures; fix 32-bit SHM bounds
ktsaou Oct 29, 2026
cf61ad1
Run C, Rust and Go suites on every Netdata Linux target; fix 32-bit L…
ktsaou Oct 30, 2026
b450b40
Detect dead peers on SHM sessions in C, Rust and Go
ktsaou Oct 31, 2026
2ac2011
Bound server handshakes and make server stop and shutdown reliable
ktsaou Oct 31, 2026
2a5888b
Make correctness suites deterministic and separate extended suites
ktsaou Oct 31, 2026
5271dff
Bound client connects, handshakes and retries by the call deadline
ktsaou Oct 31, 2026
6609157
Start MSYS threads through pthread_create in the Windows C library
ktsaou Oct 31, 2026
e38ffa7
Retry EINTR, lock POSIX endpoints and report transport failures disti…
ktsaou Oct 31, 2026
b66b224
Create SHM regions only for sessions that negotiate SHM
ktsaou Oct 31, 2026
28dc796
Support FreeBSD and validate the selected HELLO_ACK profile
ktsaou Oct 31, 2026
84f6195
Create POSIX listener sockets owner-only without changing the umask
ktsaou Oct 31, 2026
dbfa64a
Format Rust sources with style edition 2024
ktsaou Oct 31, 2026
2561405
Close the Netdata memory-safety vendoring SOW on its merged evidence
ktsaou Oct 31, 2026
26067c3
Close the Codacy scope SOW and track duplication, Go 1.27 and consume…
ktsaou Oct 31, 2026
49a9ab9
Record user decisions for Windows pipe security, macOS, FreeBSD, Go 1…
ktsaou Oct 31, 2026
f2b9585
Refresh the Netdata vendoring SOW sub-state
ktsaou Oct 31, 2026
2197bdb
Record the user's ordering: all code changes before benchmarks and ve…
ktsaou Oct 31, 2026
ee8e32d
Restrict Windows pipes and SHM objects to the server's account, SYSTE…
ktsaou Oct 31, 2026
891faa1
Move Go modules and pinned CI Go to 1.27, matching Netdata
ktsaou Oct 31, 2026
7b73adc
Share the Rust UDS and Named Pipe framing in one module
ktsaou Oct 31, 2026
485a881
Run NetIPC on macOS over a framed AF_UNIX stream baseline
ktsaou Nov 1, 2026
5161da6
Unlock the endpoint lock before closing it
ktsaou Nov 1, 2026
ed24606
Return the wait's timeout or abort from Go server handshakes
ktsaou Nov 1, 2026
e3a6bdd
Run the POSIX SHM transport on FreeBSD
ktsaou Nov 1, 2026
48cc98b
Keep POSIX pipelining clients progressing when socket buffers fill
ktsaou Nov 3, 2026
5e6bfb7
Remove Go per-request allocations and wall-clock reads from the hot path
ktsaou Nov 3, 2026
0a6aed3
Keep Windows Named Pipe pipelining clients progressing past the pipe …
ktsaou Nov 4, 2026
2eee40a
Run the POSIX baseline over a stream socket on FreeBSD
ktsaou Nov 4, 2026
d54b22c
Fix CI and scanner failures before vendoring
ktsaou Nov 4, 2026
bbc55a2
Keep the endpoint lock and SHM region usable under a restrictive umask
ktsaou Nov 4, 2026
292c6dc
Restore the umask in the SHM umask test children before exit
ktsaou Nov 5, 2026
80a56de
Annotate the bounded call-timeout conversion for gosec
ktsaou Nov 5, 2026
4261919
Create Windows bench run directories without a mode
ktsaou Nov 5, 2026
9568f4e
Record the Netdata vendoring and open follow-ups for Go coverage and …
ktsaou Nov 6, 2026
616bc81
Synchronize the service limit tests on the server ready event instead…
ktsaou Nov 7, 2026
d223d9f
Test endpoint lock creation under a restrictive umask in Rust and Go
ktsaou Nov 7, 2026
6b14803
Fix confirmed PR review findings before the Netdata vendoring
ktsaou Nov 8, 2026
3fb1bef
Create endpoint locks owner-only and fix further review findings
ktsaou Nov 8, 2026
278125c
Retry EINTR in the stalled-reader poll and narrow the macOS manual step
ktsaou Nov 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
67 changes: 63 additions & 4 deletions .agents/skills/project-netdata-vendoring/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,17 +168,64 @@ Load this skill for any task involving:
If any downstream vendored-source change is not understood, do not run
`vendor-to-netdata.sh`.

7. Record the CI/scanner preflight in the active SOW before vendoring.
7. Assess performance impact (AGENTS.md, Test Cadence).

Benchmarks take hours; run them only when the vendored changes can affect
established-session steady state. Collect the SOW gate performance
assessments for every source change since the baseline (step 5), and
record in the active SOW whether any changed code runs per request on an
established session, with file:line evidence.

- No such change (connection setup, reconnect, error mapping, idle-timeout
paths, shutdown, tests, docs, build): no benchmark run; record the
assessment.
- Such a change exists: run the affected suites once on the candidate
commit:

```bash
# Measure (run-*), then render the report and check floors (generate-*).
bash tests/run-posix-bench.sh benchmarks-posix.csv
bash tests/generate-benchmarks-posix.sh
# On the Windows host:
bash tests/run-windows-bench.sh benchmarks-windows.csv
bash tests/generate-benchmarks-windows.sh
```

Compare against the committed CSVs (`git diff`). If rows regress beyond
noise, fix all regressions, then rerun once; bisect by SOW commit.
- Assessment uncertain: ask the user before running anything.

A regression that is neither fixed nor explicitly accepted by the user
blocks vendoring.

Extended suites (fuzz, stress, randomized chaos, lookup scale) are not
part of correctness runs. Run them once on the candidate commit when the
vendored changes touch what they exercise (codecs and decoders for fuzz;
concurrency, session lifecycle or transports for stress), and record the
result or the reason none was needed:

```bash
bash tests/run-extended-fuzz.sh
Comment thread
ktsaou marked this conversation as resolved.
Resolved
bash tests/run-extended-stress.sh
```

A failure blocks vendoring until it is fixed.

8. Record the CI/scanner preflight in the active SOW before vendoring.

Include:

- source repository and commit;
- GitHub Actions/check-run summary;
- code-scanning summary by tool and severity;
- Dependabot and secret-scanning summary;
- Go version alignment: the `go` directive in the three plugin-ipc
`go.mod` files equals Netdata's `src/go/go.mod`, and `GoVersionOverride`
in the three `osv-scanner.toml` files equals the patch release Netdata
pins in `packaging/check-for-go-toolchain.sh`; fix any mismatch first;
- decision: proceed, block, or proceed with explicit risk acceptance.

8. Only after the CI/scanner preflight and two-way migration plan pass, update
9. Only after the CI/scanner preflight and two-way migration plan pass, update
the Netdata vendored copy using the project-local vendor workflow.

```bash
Expand All @@ -187,14 +234,22 @@ Load this skill for any task involving:
bash ./diff-netdata-vendor.sh /path/to/netdata
```

9. Validate in the Netdata checkout.
10. Validate in the Netdata checkout.

Run the targeted Netdata build/tests required by the active SOW. At minimum,
prove:

- the vendor diff is expected after copying;
- Netdata-only wrapper files were not overwritten;
- unrelated Netdata files were not staged or modified by the vendoring step.
- unrelated Netdata files were not staged or modified by the vendoring step;
- every vendored `.c` file is in Netdata's build lists
(`src/libnetdata/SourceLists.cmake`), and every system library the new
code calls is linked to the `netipc` target in
`src/libnetdata/CMakeLists.txt` (the script does not edit either file).

Netdata builds `netipc` on Linux and Windows only; the Windows build is
proven by the Netdata PR's "Build Windows" check, so the SOW stays open
until that check passes.

## Blockers

Expand All @@ -210,6 +265,8 @@ Stop and report if any of these are true:
- either side has NetIPC changes since the last vendoring that are not
understood;
- the active SOW does not contain a migration plan for both directions;
- the performance assessment is missing, or a benchmark run it called for
shows a regression that is neither fixed nor explicitly accepted by the user;
- source tree has uncommitted changes that are intended for vendoring;
- Netdata checkout has unrelated changes that would be hard to isolate.

Expand All @@ -228,5 +285,7 @@ Netdata vendoring preflight:
- Upstream gap: <summary of plugin-ipc changes since baseline>
- Downstream gap: <summary of Netdata vendored changes since baseline>
- Migration plan: <preserve/backport/overwrite/decision summary>
- Performance: <assessment; benchmark run or why none was needed; regressions fixed/accepted/none>
- Extended suites: <fuzz/stress run and result, or why none was needed>
- Decision: proceed | blocked | proceed with user-accepted risk
```
2 changes: 1 addition & 1 deletion .agents/sow/current/SOW-0021-20260613-netipc-at-scale.md
Original file line number Diff line number Diff line change
Expand Up @@ -1359,7 +1359,7 @@ Pending.

## Followup

None yet.
- 2026-10-31: the Netdata consumer steps of the "Downstream Vendoring Plan" (step 7: OVERSIZED_ITEM / PAYLOAD_EXCEEDED handling and status names) were never done; the statuses are already vendored in Netdata. They are now tracked in SOW-0050, including a confirmed network-viewer caching bug. This SOW closes after the pre-vendoring full POSIX and Windows benchmark run and after the remaining broader adversarial matrix gaps are handled (Execution Log, artifact gate entry).

## Regression Log

Expand Down
Loading
Loading