Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -99,3 +99,41 @@ attached — goalplan c3 satisfied by construction.




## Phase A verdict (2026-08-22): FAIL — Phase B not implemented

Real runs (smoke:false), 3 fresh-process runs per arm per cell type, Bun 1.4.0
darwin/arm64 on BOTH hosts (local dev Mac + macmini-cf). Evidence:
evidence/gc-eval-local-darwin-arm64.json, evidence/gc-eval-macmini-darwin-arm64.json.

### Criterion (a): ≥50% of post-load RSS growth gone by +60s after one GC

| host | arm | rssAfterLoad (3 runs) | recoveredByPlus60s (3 runs) |
|---|---|---|---|
| macmini-cf | control | 305.0 / 302.2 / 354.8 MB | +0.25 / +0.23 / +0.26 MB |
| macmini-cf | gc | 330.6 / 316.4 / 311.1 MB | −0.03 / +0.13 / +0.15 MB |
| local | control | 329.1 / 304.1 / 325.9 MB | +0.21 / +0.23 / +0.23 MB |
| local | gc | 332.5 / 324.1 / 334.1 MB | +0.13 / +0.11 / +0.10 MB |

GC recovery is indistinguishable from control idle drift (<0.1% of load-height
RSS on every run; the GC arm recovered LESS than control on 4 of 6 runs).
Bun 1.4's shared-allocator Bun.gc(true) does NOT return the post-load RSS
plateau on darwin — same qualitative result as the 1.3.x finding that produced
the 260731 gate. Criterion (a) FAIL, decisively, on both hosts.

### Criterion (c): latency (informational, gate already failed)

GC pause (child-reported): 3.9–4.6 ms across all runs. Probe p99 deltas within
noise (macmini 79.6→81.1/78.3/79.2 ms; local one outlier 84.1 vs 69.8 ms
control). No acceptance computed — (a) already fails the gate.

### Consequence

- The 260731 ban on production threshold/idle Bun.gc(true) STANDS on Bun 1.4.
- Phase B (config-gated watchdog relief, idle gate, lastReliefAt, wiring chain)
is NOT implemented. The design remains in this doc for a future Bun release
that changes allocator page-return behavior; re-run this harness first.
- The RSS plateau after SSE load is allocator page retention, not JS-heap
garbage — consistent with the 260731 analysis; process recycling remains the
operational lever.

Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
{
"smoke": false,
"bunVersion": "1.4.0",
"bunRevision": "34cbb9a40b4bd1bd767d134a7065e66c2432a676",
"platform": "darwin",
"arch": "arm64",
"at": "2026-08-21T16:02:16.941Z",
"runs": 3,
"loadTurns": 30,
"events": 200,
"eventBytes": 65536,
"results": [
{
"kind": "rss",
"arm": "control",
"runIndex": 0,
"smoke": false,
"rssAfterLoad": 329072640,
"rssPlus5s": 329121792,
"rssPlus60s": 328859648,
"gcDurationMs": null,
"recoveredByPlus60s": 212992
},
{
"kind": "rss",
"arm": "gc",
"runIndex": 0,
"smoke": false,
"rssAfterLoad": 332513280,
"rssPlus5s": 332660736,
"rssPlus60s": 332382208,
"gcDurationMs": 4.322166,
"recoveredByPlus60s": 131072
},
{
"kind": "latency",
"arm": "control",
"runIndex": 0,
"smoke": false,
"probeTurns": 20,
"p50Ms": 66.84818750000704,
"p99Ms": 69.78122875000263,
"maxMs": 69.89625000000524,
"gcDurationMs": null,
"rssNonNormative": 358809600
},
{
"kind": "latency",
"arm": "gc",
"runIndex": 0,
"smoke": false,
"probeTurns": 20,
"p50Ms": 66.28095900000335,
"p99Ms": 69.86663276999433,
"maxMs": 70.19816699999501,
"gcDurationMs": 4.599541,
"rssNonNormative": 333365248
},
{
"kind": "rss",
"arm": "control",
"runIndex": 1,
"smoke": false,
"rssAfterLoad": 304119808,
"rssPlus5s": 304185344,
"rssPlus60s": 303890432,
"gcDurationMs": null,
"recoveredByPlus60s": 229376
},
{
"kind": "rss",
"arm": "gc",
"runIndex": 1,
"smoke": false,
"rssAfterLoad": 324059136,
"rssPlus5s": 324190208,
"rssPlus60s": 323944448,
"gcDurationMs": 4.1755,
"recoveredByPlus60s": 114688
},
{
"kind": "latency",
"arm": "control",
"runIndex": 1,
"smoke": false,
"probeTurns": 20,
"p50Ms": 66.12091649998911,
"p99Ms": 70.72656152000272,
"maxMs": 71.06291700000293,
"gcDurationMs": null,
"rssNonNormative": 366297088
},
{
"kind": "latency",
"arm": "gc",
"runIndex": 1,
"smoke": false,
"probeTurns": 20,
"p50Ms": 66.67666649997409,
"p99Ms": 68.93200429000456,
"maxMs": 68.9802090000012,
"gcDurationMs": 4.379583,
"rssNonNormative": 360906752
},
{
"kind": "rss",
"arm": "control",
"runIndex": 2,
"smoke": false,
"rssAfterLoad": 325877760,
"rssPlus5s": 325926912,
"rssPlus60s": 325648384,
"gcDurationMs": null,
"recoveredByPlus60s": 229376
},
{
"kind": "rss",
"arm": "gc",
"runIndex": 2,
"smoke": false,
"rssAfterLoad": 334053376,
"rssPlus5s": 334233600,
"rssPlus60s": 333955072,
"gcDurationMs": 4.560834,
"recoveredByPlus60s": 98304
},
{
"kind": "latency",
"arm": "control",
"runIndex": 2,
"smoke": false,
"probeTurns": 20,
"p50Ms": 67.00995850001345,
"p99Ms": 71.89010472996858,
"maxMs": 72.32308299996657,
"gcDurationMs": null,
"rssNonNormative": 347078656
},
{
"kind": "latency",
"arm": "gc",
"runIndex": 2,
"smoke": false,
"probeTurns": 20,
"p50Ms": 66.42141650000121,
"p99Ms": 84.07492050000349,
"maxMs": 85.31870800000615,
"gcDurationMs": 4.345833,
"rssNonNormative": 319455232
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
{
"smoke": false,
"bunVersion": "1.4.0",
"bunRevision": "34cbb9a40b4bd1bd767d134a7065e66c2432a676",
"platform": "darwin",
"arch": "arm64",
"at": "2026-08-21T16:02:06.458Z",
"runs": 3,
"loadTurns": 30,
"events": 200,
"eventBytes": 65536,
"results": [
{
"kind": "rss",
"arm": "control",
"runIndex": 0,
"smoke": false,
"rssAfterLoad": 305037312,
"rssPlus5s": 305086464,
"rssPlus60s": 304791552,
"gcDurationMs": null,
"recoveredByPlus60s": 245760
},
{
"kind": "rss",
"arm": "gc",
"runIndex": 0,
"smoke": false,
"rssAfterLoad": 330563584,
"rssPlus5s": 330711040,
"rssPlus60s": 330596352,
"gcDurationMs": 4.067541,
"recoveredByPlus60s": -32768
},
{
"kind": "latency",
"arm": "control",
"runIndex": 0,
"smoke": false,
"probeTurns": 20,
"p50Ms": 75.82177049999154,
"p99Ms": 79.6427512700003,
"maxMs": 79.90070800000103,
"gcDurationMs": null,
"rssNonNormative": 354353152
},
{
"kind": "latency",
"arm": "gc",
"runIndex": 0,
"smoke": false,
"probeTurns": 20,
"p50Ms": 76.33122900000308,
"p99Ms": 81.13658803999365,
"maxMs": 81.63145899999654,
"gcDurationMs": 4.23,
"rssNonNormative": 330596352
},
{
"kind": "rss",
"arm": "control",
"runIndex": 1,
"smoke": false,
"rssAfterLoad": 302235648,
"rssPlus5s": 302301184,
"rssPlus60s": 302006272,
"gcDurationMs": null,
"recoveredByPlus60s": 229376
},
{
"kind": "rss",
"arm": "gc",
"runIndex": 1,
"smoke": false,
"rssAfterLoad": 316375040,
"rssPlus5s": 316522496,
"rssPlus60s": 316243968,
"gcDurationMs": 4.252875,
"recoveredByPlus60s": 131072
},
{
"kind": "latency",
"arm": "control",
"runIndex": 1,
"smoke": false,
"probeTurns": 20,
"p50Ms": 76.29347899998538,
"p99Ms": 79.48590976999724,
"maxMs": 79.50983399999677,
"gcDurationMs": null,
"rssNonNormative": 324976640
},
{
"kind": "latency",
"arm": "gc",
"runIndex": 1,
"smoke": false,
"probeTurns": 20,
"p50Ms": 75.3432090000133,
"p99Ms": 78.32939928999403,
"maxMs": 78.33808399998816,
"gcDurationMs": 4.057542,
"rssNonNormative": 334856192
},
{
"kind": "rss",
"arm": "control",
"runIndex": 2,
"smoke": false,
"rssAfterLoad": 354811904,
"rssPlus5s": 354877440,
"rssPlus60s": 354549760,
"gcDurationMs": null,
"recoveredByPlus60s": 262144
},
{
"kind": "rss",
"arm": "gc",
"runIndex": 2,
"smoke": false,
"rssAfterLoad": 311148544,
"rssPlus5s": 311279616,
"rssPlus60s": 311001088,
"gcDurationMs": 3.892,
"recoveredByPlus60s": 147456
},
{
"kind": "latency",
"arm": "control",
"runIndex": 2,
"smoke": false,
"probeTurns": 20,
"p50Ms": 75.67283349999343,
"p99Ms": 79.54803673004673,
"maxMs": 79.55712500005029,
"gcDurationMs": null,
"rssNonNormative": 342310912
},
{
"kind": "latency",
"arm": "gc",
"runIndex": 2,
"smoke": false,
"probeTurns": 20,
"p50Ms": 75.90585399998236,
"p99Ms": 79.18780874996737,
"maxMs": 79.45112499996321,
"gcDurationMs": 3.921584,
"rssNonNormative": 375390208
}
]
}
Loading
Loading