Three landings closed the multi-week ELF-spawn-wedge mystery: a heap allocator that only coalesced forward (not a leak), an NTFS non-resident extend that finally landed without a revert (the C-NTFS lesson held), and an 89-line scorecard sweep that pushed JefeRust POSIX compliance past 31%. Then U5 launched as three parallel agents: ELF-wedge unblock, JefeRust heap mirror, and JefeRust SSH-slot redesign.
The Bug That Looked Like a Leak
For weeks, JefeOS would happily spawn three or four ELF binaries and then refuse to find the fifth: exec /programs/echo → "File not found", even though ls /programs showed it sitting right there. The diagnostic agent named the sprint "C-LEAK" and went hunting for an ELF resource leak. It wasn't a leak. The path resolver in ntfs::resolve_path kmallocs two 65 KB DirEntry buffers per call, and our heap's kfree was forward-coalesce only — freed blocks could merge with the next-in-memory free neighbor but never the previous. After three or four execs the heap was a chessboard of 65 KB orphans that couldn't service a fresh 65 KB request. The fix lives in kernel/src/heap.cpp: a coalesce() that walks the free list looking for a block whose next_in_memory() == block, extends that prev block's size, drops the new free block from the list, then chains forward_coalesce. elf-leakloop-30-stable regression case shipped alongside, and the sustained-spawn bench at bench/baseline/elf-spawn-sustained.json shows 0% drift across 30 iterations. posix-smoke section 2 (exec-) jumped from ~4 visible passes to 17 of 26 in a single merge.
C-NTFS Redo: Lesson Held
Two days ago a C-NTFS sprint shipped 325 LoC of new ntfs.cpp code, compiled -Werror clean, and got reverted six minutes after merge when fresh-boot heap exhaustion OOM'd ls /. The lesson was sharp: kernel changes affecting boot or mount-time allocation must VM-verify before merge. The redo at 769d9ed implemented Volume::extend_nonresident() the right way — walks data runs, allocates fresh clusters via the bitmap allocator, prefers contiguous in-place run-length extension with a fallback to appending a new run with signed LCN delta. Validated by ntfsexttest (256 KB write across many extends, byte-for-byte verify) AND a fresh-boot cold-start AND bench-ntfs-write baseline — all green before the merge button got pressed. mmaptest restored to its 8 KB write at 48ee842, three weeks of "shrink the test to 4 KB" workarounds removed.
U4: 89 Scorecard Flips, Done in Five Minutes
Sprint U4's brief was simple: flip 89 wchar/wctype/locale entries in docs/posix/data.json from rust:no to mirror cpp:yes, because Agent L's libc work added pure-userspace implementations that link statically into libjefec.a — the same archive both kernels' C ELFs share. The first agent assigned to it spent two hours fighting task #36 (the ELF wedge from the next section) instead of doing the mechanical edit. Killed it, ran a Python script across the JSON, validated the count delta, committed at e9ab5b0. Five minutes. Rust compliance: 24.70% → 31.04%, +6.34pp, 392 yes / 51 partial of 1263 POSIX.1-2024 mandatory items.
U5 Sprint Launch: Three Agents in Parallel
U5 (integration hardening) split cleanly into three independent threads, all spawned as parallel jefeos-engineer agents in worktrees. U5-WEDGE tackles task #36: wctest and sysvipctest ELF programs wedge the VM silently on exec, even though both link cleanly and deploy fine. Hypothesis stack is crt0 BSS-clear extent → static-init ordering → ELF loader segment limits → linker script. U5-RUSTHEAP came back almost immediately with a clean audit: JefeRust uses the linked_list_allocator crate, which keeps an address-sorted free list and bidirectionally merges by design. No fix needed; the trigger pattern (NTFS 64 KB DirEntry buffers) doesn't even exist on JefeRust because its FS is JefeFS with 8-byte DirEntries. SSH-SLOT rewrites JefeRust's 4-connection SSH cap that wedges rust-posix-smoke mid-suite around test 20-25 — pre-existing flakiness surfaced by U3's 51-case suite. The two remaining agents ship their own regression test and bench per the new "tests + benches alongside features" rule, and each does cold-boot validation before merge.
Where We Landed
Master sits at e9ab5b0. Three resolved tasks (#31 mmap-vma wedge, #44 ELF spawn leak, #46 NTFS extend), three U5 agents in flight. Two open issues map cleanly into U5: task #36 (ELF wedge for libc-heavy programs) and task #47 (SSH-slot flake). C++ JefeOS at 33.10% POSIX.1-2024 compliance, Rust at 31.04% — the C/Rust gap is now 2pp and shrinking, mostly via shared userspace libc rather than kernel duplication.
What's Next
- U5-WEDGE: root-cause + fix the wctest/sysvipctest exec wedge, ship bench-wchar baseline
- SSH-SLOT: JefeRust SSH dispatch redesign, target deterministic 51/51 on rust-posix-smoke
- Pending after U5: POSIX aio_*, additional libc surface, mq_* runtime tests once #36 unblocks
- Pending: pthread MVP cancel-points coverage check (deferred from Phase 5.1 review)