Skip to content

Commit 44cfb8a

Browse files
authored
Close SHM backing-store SOW after merges (#12)
1 parent 37cce82 commit 44cfb8a

1 file changed

Lines changed: 90 additions & 23 deletions

File tree

.agents/sow/current/SOW-0030-20260712-shm-sigbus-on-full-backing-store.md renamed to .agents/sow/done/SOW-0030-20260712-shm-sigbus-on-full-backing-store.md

Lines changed: 90 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
## Status
44

5-
Status: in-progress
5+
Status: completed
66

7-
Sub-state: active; long-term-best design approved by the user and pre-implementation
8-
gate complete. Linux and native Windows/MSYS validation are complete. Source pull-request
9-
CI/scanner evidence and Netdata re-vendoring remain.
7+
Sub-state: delivered. Source PR #11 and downstream Netdata PR #23093 are merged. The
8+
reviewed source tree, merged source tree, and normalized downstream C, Rust, and Go
9+
vendor trees are identical.
1010

1111
## Requirements
1212

@@ -370,14 +370,55 @@ Open decisions:
370370
through `sudo`. The rebuilt local CI directory passed that exact privileged command,
371371
and actionlint plus the SOW audit remain clean. The entire candidate matrix must rerun
372372
after this workflow fix.
373+
- Source PR #11 at `0b5ace0bacad7f8d7b77ecd1187054ccf2c916aa` passed all 28
374+
applicable checks after the fix, including the real full-backing-store regression,
375+
native Windows MSYS2 runtime, C/Go/Rust CodeQL on POSIX/Windows, Semgrep, gosec,
376+
Codacy, dependency review, sanitizers, race detectors, static analysis, coverage, and
377+
diff coverage. The pending WIP status is the intentional draft-PR gate; CodeQL's
378+
aggregate check and schedule/manual-only Valgrind, OSV, and OpenSSF jobs are
379+
conditionally skipped while their applicable matrix/security jobs passed.
380+
- Current PR SARIF contains zero results in every uploaded Semgrep, CodeQL, gosec,
381+
Codacy category. Repository inventory remains zero open Dependabot and secret-scanning
382+
alerts. The only repository-level open code-scanning item is the already-triaged stale
383+
historical alert 7750 whose vulnerable operation was removed by `d00beebb`.
384+
- Mandatory source preflight is complete. The approved migration is to run the established
385+
vendor script from source HEAD, preserve Netdata wrappers/Cargo packaging, normalize Go
386+
imports, require a zero normalized diff, and validate downstream C/Rust/Go integration.
387+
- Created the downstream branch from freshly fetched `netdata/netdata` `origin/master` at
388+
`2329145de31cd9f5ed25f12b1816415f02772a3e`, then ran the established vendor
389+
script and Go import normalization. Exactly the planned six files changed; normalized
390+
C, Rust, and Go comparisons each report `No differences`.
391+
- Downstream validation passed: Netdata built the C `netipc` target; Rust passed 380/380;
392+
Go passed every `pkg/netipc` package including its long-running raw-service tests;
393+
formatting, whitespace, sensitive-data, and local SOW audits are clean. Two independent
394+
downstream reviews found no code, security, portability, packaging, equality, or
395+
Windows-isolation defect.
396+
- Committed the Netdata vendor update as `7f6ccbadba9f9e1da4f36b016f97669395882c08`,
397+
pushed `fix/netipc-shm-full-backing-store`, and opened draft Netdata PR #23093. Its
398+
description includes the strict-seccomp requirement to allow `fallocate()`.
399+
400+
### 2026-07-13
401+
402+
- Verified Netdata PR #23093 merged as
403+
`d5796cb0a841adaabdd68d427664155d8e30d46e`. Its final current check set contained
404+
128 successful checks, 20 intentional skips, and no failures. One earlier Go job
405+
failure was an unrelated Nagios collector test timeout and was superseded by the
406+
final successful check set.
407+
- Fetched Netdata `origin/master` after merge and reran the established normalized
408+
vendor comparison against that exact tree. C, Rust, and Go each reported
409+
`No differences`.
410+
- Verified source PR #11 merged into `main` as
411+
`37cce82d4b0e1e9d1fbee2ff2ab561cc9920ffa6`. A full-tree comparison between the
412+
reviewed PR head `0b5ace0bacad7f8d7b77ecd1187054ccf2c916aa` and the merge commit
413+
is empty, proving the merged source is exactly the reviewed candidate.
373414

374415
## Validation
375416

376417
Acceptance criteria evidence:
377418

378-
- Full Linux success-path and failure-path evidence is recorded below. The only pending
379-
acceptance evidence is pull-request CI/scanner status and downstream Netdata
380-
validation after the mandatory preflight passes.
419+
- Full Linux success-path and failure-path evidence is recorded below. Downstream
420+
Netdata equality, integration validation, CI, and both source/downstream merge states
421+
are complete.
381422

382423
Tests or equivalent validation:
383424

@@ -407,6 +448,15 @@ Tests or equivalent validation:
407448
Windows SHM, baseline and SHM snapshots, lookup, fixed 100k rates, and both C/Rust
408449
client/server directions. This is regression evidence only; no performance claim was
409450
changed.
451+
- Source GitHub validation: 28/28 applicable PR checks passed at
452+
`0b5ace0bacad7f8d7b77ecd1187054ccf2c916aa`. All uploaded current-candidate
453+
code-scanning categories report zero results; Dependabot and secret-scanning report
454+
zero open alerts.
455+
- Downstream Netdata equality/integration: zero normalized C/Rust/Go drift; exactly six
456+
planned files; C target built; Rust 380/380; all Go NetIPC packages passed.
457+
- Merge verification: the source merge tree is identical to reviewed PR head
458+
`0b5ace0`; Netdata `origin/master` is identical to the source candidate after the
459+
documented vendor normalization; both pull requests are merged.
410460

411461
Real-use evidence:
412462

@@ -489,8 +539,8 @@ Artifact maintenance gate:
489539

490540
- `AGENTS.md`: unchanged; no project-wide responsibility or workflow rule changed.
491541
- Runtime project skill: unchanged; Netdata vendoring still follows the existing
492-
mandatory `project-netdata-vendoring` workflow. Its read-only preflight and drift
493-
classification are recorded above; no Netdata vendored source has been modified yet.
542+
mandatory `project-netdata-vendoring` workflow. Its source CI/scanner, baseline,
543+
two-way drift, migration, and downstream validation requirements were completed.
494544
- Specs: updated authoritative `docs/level1-posix-shm.md` and
495545
`docs/level1-windows-shm.md`; no `.agents/sow/specs/` duplicate is needed because
496546
`docs/` is authoritative for this transport contract.
@@ -499,32 +549,49 @@ Artifact maintenance gate:
499549
changed.
500550
- End-user/operator skill: updated `docs/netipc-integrator-skill.md` with the Linux
501551
allocation and Windows committed-mapping behavior.
502-
- SOW lifecycle: SOW-0027 remains paused; SOW-0030 is the sole active implementation;
503-
pending SOW-0031 tracks the separate platform-gating issue and pending SOW-0032 tracks
504-
the UDS permission contract. Completion/move remains pending source CI/scanners and
505-
the required vendor workflow.
552+
- SOW lifecycle: SOW-0027 remains paused. SOW-0030 was the sole active implementation
553+
during delivery and is now completed and moved to `done/`. Pending SOW-0031 tracks
554+
the separate platform-gating issue; pending SOW-0032 tracks the UDS permission
555+
contract.
506556

507557
SOW lifecycle and follow-up mapping:
508558

509-
- Netdata re-vendoring remains mandatory in this SOW after source commit, push, CI, and
510-
scanner preflight. The separate CMake platform-gating discrepancy is represented by
511-
pending SOW-0031; the separate UDS permission-contract issue is represented by pending
512-
SOW-0032.
559+
- Netdata re-vendoring is complete and merged. The separate CMake platform-gating
560+
discrepancy is represented by pending SOW-0031; the separate UDS permission-contract
561+
issue is represented by pending SOW-0032. All historical uses of “pending,”
562+
“follow-up,” or future-tense validation in this SOW are either completed above or map
563+
to those two real pending SOWs.
513564

514565
## Outcome
515566

516-
Pending.
567+
- Linux SHM creation now reserves the complete backing store before mapping it in C,
568+
Rust, and Go. Full backing stores return a classified allocation error instead of
569+
exposing the host process to SIGBUS during zero-fill.
570+
- Managed services fall back to baseline transport when configured; SHM-only behavior
571+
remains intentionally fail-closed.
572+
- Linux/glibc, Linux/musl, sanitizer, coverage, interop, native Windows/MSYS, scanner,
573+
source CI, and downstream Netdata integration evidence all passed.
574+
- Source PR #11 and Netdata PR #23093 are merged, with exact post-merge source and vendor
575+
equality verified.
517576

518577
## Lessons Extracted
519578

520-
Pending.
579+
- Real resource-exhaustion tests must assert the exact intended failure marker and
580+
cleanup state; accepting any nonzero child exit can hide setup or permission defects.
581+
- Required CI should derive paired tools from the selected installation instead of
582+
assuming distribution paths such as `/usr/bin/ctest`.
583+
- Allocation guarantees and syscall-policy implications belong in the public transport
584+
contract. A graceful errno denial can fall back; kill/trap seccomp actions cannot be
585+
recovered by an embeddable library without unsafe process-global behavior.
586+
- Post-vendoring equality must be checked against the actual merged downstream branch,
587+
not only the pull-request working tree.
521588

522589
## Followup
523590

524-
- Re-vendor the fix into netdata/netdata after merge (executed in the netdata
525-
repository; the fleet crash volume there is the success metric — SIGBUS cluster in
526-
`P[cglkupipc]` / `P[cgroupsipc]` threads should disappear in nightlies after the
527-
vendor update).
591+
- No outstanding implementation follow-up belongs to this SOW. Netdata operational
592+
release monitoring may independently observe whether the historical
593+
`P[cglkupipc]` / `P[cgroupsipc]` SIGBUS cluster disappears, but that observation does
594+
not change or gate the deterministic correctness evidence recorded here.
528595

529596
## Regression Log
530597

0 commit comments

Comments
 (0)