|
| 1 | +# Empty reclaimed arena certificate and reuse evidence |
| 2 | + |
| 3 | +The final design and validation audit is |
| 4 | +`notes/arena-empty-reclaimed-reuse-2026-09-05.md`. |
| 5 | + |
| 6 | +`reuse-v2/` contains the final separate-atomic-head candidate, its matched |
| 7 | +runtime-input manifest, final build/fixture/TSan results, settled accounting |
| 8 | +control, layout probe, and all 20 primary performance processes. Every final |
| 9 | +process completed. `performance-summary.json` derives from the raw stdout; |
| 10 | +the original harness reports best-of-five inner rounds, while the surrounding |
| 11 | +script runs three fresh filtered pairs and seven fresh post-insertion pairs. |
| 12 | + |
| 13 | +Root-level performance files and `negative-v1-*` identify the rejected first |
| 14 | +revision. It was faster but retained 329→853 arenas across five closure rounds. |
| 15 | +Its deterministic generic-allocation and typed-pair controls each chose a fresh |
| 16 | +mapping despite two available real spares. The final revision keeps exactly four |
| 17 | +arenas across 32 cycles of each control and 320 across all five real closure |
| 18 | +rounds. The proposed interior-link/tail scheme was rejected before implementation |
| 19 | +because it would race concurrent GC publication and owner adoption. |
| 20 | + |
| 21 | +Both A/B revisions compare against the same immutable normal baseline, |
| 22 | +`/tmp/lj-gc-jit-combined-20260905-6cxpl6mp/normal`. It predates the final public |
| 23 | +MARK-scope repair and later scalar-read changes. Every tracked runtime input |
| 24 | +matches each candidate except arena C/header. Local paths and exact binary/source |
| 25 | +hashes are in the metadata; the temporary trees and binaries are not committed. |
| 26 | + |
| 27 | +All measurements keep GC enabled and JIT on, pin processes to CPU 30, alternate |
| 28 | +the order within fresh pairs, and preserve a 45-second process bound. CPU 30 has |
| 29 | +no SMT sibling and uses the performance governor; frequency is not fixed. Other |
| 30 | +agents ran functional work on CPUs 0–15. Own validation overlapped the diagnostic |
| 31 | +pair but had ended before the final primary pairs. |
| 32 | + |
| 33 | +`gcdiag.c` is a separate native frontend linked against each unchanged static |
| 34 | +archive. It reads allocator lists only from the main owner with no GC workers or |
| 35 | +MT execution, and snapshots outside timing. The settled harness adds an explicit |
| 36 | +collection after each closure round so retained physical capacity can be checked |
| 37 | +alongside live-byte and cycle counters. The final frontend counts both reclaimed |
| 38 | +heads. Command arrays, environment, exit status, wall/CPU time and partial output |
| 39 | +are retained in the JSON records. Copy evidence before rerunning the scripts, |
| 40 | +which write their output beside themselves. |
| 41 | + |
| 42 | +The initial standalone build's runtime-assertion-helper link error and a later |
| 43 | +new-fixture HugeTab initialization failure are retained with their corrections; |
| 44 | +neither is omitted from the audit. TSan demotes only GCC's known unsupported |
| 45 | +atomic-fence instrumentation warning. No host settings were changed. |
0 commit comments