diff --git a/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md b/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md index e0ad57f0..e9ae1455 100644 --- a/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md +++ b/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md @@ -577,7 +577,19 @@ Executed on the docker rig, site-a node A (`scadabridge-site-a-a`, aarch64, stan | `NativeHeapMemoryBlock` growth | +861 | **0** | | `Script` | 3 → 6 | 4 → 7 (proves compiles really ran) | -Functional: cluster converged under the bootstrap guard, Tick script executing, notifications flowing site→central, no steady-state errors. Driver script body restored afterwards. **Remaining leg: wonder-app-vd03** — same procedure after the fix is deployed there (operator decision); tooling notes in the table above apply (script bodies must change; `E:\ApiInstall\_tools\diag\`). +Functional: cluster converged under the bootstrap guard, Tick script executing, notifications flowing site→central, no steady-state errors. Driver script body restored afterwards. + +### Task 9 result — wonder-app-vd03 leg PASS (2026-08-12, deployed `20f2ae05` at 17:58, ~58 s downtime, 0 migrations) + +Measured as a fixed-compile-count A/B (both nodes compile an identical startup set across builds — Site 21 / Central 6 `Script` — so no forced compiles were needed on the live box): + +| | `5a781c70` | `20f2ae05` | +|---|---|---| +| Site metadata triple / `NativeHeapMemoryBlock` | 6,640 / 6,593 | **800 / 753** (8.3× / 8.8× down) | +| Central metadata triple / `NativeHeapMemoryBlock` | 2,699 / 2,681 | **849 / 831** (3.2× down) | +| Site / Central working set | 2,814 / 1,374 MB | 612 / 663 MB (post-fix read at ~5 min uptime — not uptime-matched; the metadata counts are the controlled result) | + +`CachingScriptMetadataResolver` shows exactly 1 instance per process in the gcdump — active in production. Calibration note: the steady-state residual is a **fixed** cost of roughly one shared closure set + statics (~800 for 21 scripts ≈ 38/script amortized), not the per-compile ≤~10 growth figure — the growth figure applies to *additional* compiles (rig-verified at +2/compile), the fixed cost to the startup set. Follow-up lead (not closed by this): re-test the complex `AddTemplateScript` OOM on wonder — that path was shown twice not to compile scripts, but the OOM signature (large allocation failing with GBs free) matches the native-heap state this leak produced, and the test is now cheap. ## Out of scope / follow-ups diff --git a/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md.tasks.json b/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md.tasks.json index 04a6d191..160816a6 100644 --- a/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md.tasks.json +++ b/docs/plans/2026-08-12-script-compile-metadata-resolver-cache.md.tasks.json @@ -68,7 +68,7 @@ }, { "id": 9, - "subject": "Task 9 (operator-gated): Live compile-count-keyed gcdump gate \u2014 rig leg PASS; wonder leg pending deploy", + "subject": "Task 9 (operator-gated): Live compile-count-keyed gcdump gate \u2014 PASS on rig AND wonder-app-vd03", "status": "completed", "blockedBy": [ 8