## Why
Concurrent tests can reuse a closed file descriptor number, causing cleanup assertions that require `EBADF` to fail even when the inherited directory descriptor was closed.
## What changed
Capture the inherited directory's device and inode before mount verification. Check `/proc/self/fd` afterward and accept either a missing descriptor or one referring to a different inode, while still rejecting a leaked descriptor to the original directory. Apply this check to successful verification and rejected mount markers.
GitOrigin-RevId: 42ff3aebcee9c37c481772f8a425a8643708c426
## Why
System Bubblewrap installations that lack `--ro-bind-fd` cannot directly create
the descriptor-backed read-only mounts used by the Linux sandbox.
## What changed
- Detect `--ro-bind-fd` support when probing system Bubblewrap.
- On older versions, translate descriptor-backed mounts to `/proc/self/fd`
read-only binds and pass their descriptors and destinations to the trusted
inner sandbox stage for verification.
- Reject malformed, duplicate, mismatched, or symlink-substituted mounts, and
close inherited descriptors before running sandboxed code.
## Testing
Added unit coverage for capability detection, legacy argument translation,
invalid mount rejection, inode verification, and descriptor closure.
GitOrigin-RevId: dfc0a457b572cdd9aed093fb5abf57360e9724a2