diff --git a/docs/plans/2026-11-10-opcua-sdk-2-evidence.md b/docs/plans/2026-11-10-opcua-sdk-2-evidence.md index 8f397951..b057823a 100644 --- a/docs/plans/2026-11-10-opcua-sdk-2-evidence.md +++ b/docs/plans/2026-11-10-opcua-sdk-2-evidence.md @@ -358,3 +358,37 @@ relabeled as results from this newer instrumentation. The pushed implementation is reviewable as [draft PR#802](https://gitea.dohertylan.com/dohertj2/lmxopcua/pulls/802). It is explicitly held from merge/release, and #782 remains open. + + +## Completed cross-platform RSS investigation + +The [reproducers, report](../../scripts/validation/opcua-lifecycle-memory/README.md) +and [hashed evidence](../../scripts/validation/opcua-lifecycle-memory/evidence.json) +preserve four failed canonical workload/profile attempts and the unchanged caps. +A 30-minute Linux **diagnostic subset** completed on both versions: candidate +768 cycles/192 restarts, original736/184. Candidate retained managed memory was +19.25 MB, final RSS334.18 MB, with19,272 certificate wrappers created and disposed +and none outstanding. It has **no full-gate pass** and omits canonical history, +revocation, topology surgery and network-stall work. The original subset's growing +managed/timer footprint cannot provide a favorable steady-state performance +comparison denominator. + +EventPipe attributed a large late step to6,690 distinct generated standard-node +factory methods receiving Tier1 compilation (49,141,484 cumulative native method +bytes). A later180-second interval had zero SDK/factory JIT starts and zero lost +events. These code-event sums are not RSS/PSS allocation measurements. This +supports a finite compilation burst in the subset; full-workload saturation has +not been established. macOS native Apple Security object retention continues +independently. No narrow application workaround, factory swap, runtime flag, +resource threshold change or acceptance-baseline reset was adopted. + +Astra reviewed the packaged sources/hashes/raw-receipt consistency/sanitization +at integrated `6f793d25` and found no must-fix report/source issue. It approved +only a **prospective diagnostic saturation design**, recorded in the report: +384 fixed canonical cycles/96 restarts plus one settling cycle within1,800 seconds; +fixed traced windows321–352 and353–384; zero generated-factory compilations, +new SDK assembly loads and lost events; ownership checks active throughout. +That experiment has not run and cannot pass G4. Matched full acceptance requires +an original-SDK adapter for the identical canonical workload and at least7,200 +seconds **after** a prospectively reviewed fixed warmup. Historical failures and +macOS native retention remain open in #799. No release approval was given. diff --git a/scripts/validation/opcua-lifecycle-memory/README.md b/scripts/validation/opcua-lifecycle-memory/README.md index 39aa4afe..486a117d 100644 --- a/scripts/validation/opcua-lifecycle-memory/README.md +++ b/scripts/validation/opcua-lifecycle-memory/README.md @@ -21,8 +21,8 @@ threw the original assertion before any completion record. Its final observation was RSS 380,059,648, live managed 41,364,096, GC committed 37,060,608, JIT compilations 81,535, descriptors 200, and zero sessions, subscriptions, monitored items, browse/history continuation points, and PKI descriptors. SDK cached stores -remained two during operation. The runner and skip guard returned exit 1 with one -executed test and zero skipped tests. There is no passing two-hour result here. +remained two during operation. The test runner returned exit 1; the nonzero-execution guard passed (exit 0), +with one executed test and zero skipped tests. There is no passing two-hour result here. The first macOS run's reported PKI descriptor zero is invalid: `/var` and `/private/var` aliases were not canonicalized. Corrected positive-handle and timeout