MEM-031: WOOFApiOpen leaks dogs/buffers on later open failure (woof/CONN.c)

WOOFApiOpen acquires keeper/graf/spot/sniff and three cli buffers, then sets woof_api_ready=YES only at :581. If a later alloc (:565-567), PATHu8bFeed, or memfd_create (:578-579 fail(WOOFFAIL)) fails, it returns with ready still NO and no cleanup, since call()/fail() do bare returns with no finalizer. WOOFApiClose is gated on woof_api_ready (:586) so it early-returns, and woof_serve only flips WOOF.api=NO; the open keeper object-store mmap plus graf/spot/sniff singletons and cli buffers leak for the process lifetime. The goal is to release every partially-acquired resource on the error path.

Issues

Partial open survives because the close path is gated on the never-set ready flag.

Blockers

None.

Planned

Make close work on a partial open.