wake: seq-integrity fault-injections skip in non-privileged CI — need mount-free privilege-invariant injection #934
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The wake allocator's seq-integrity fault-injection tests (
test-wake-store-ack.sh) build their fault injection onunshare --mount --user --map-root-user+ a bind-mount to force EBUSY on the target write. The real Woodpecker CI runner is non-privileged and denies mount-in-userns:So these injections cannot set up in the real CI runner and are guarded to SKIP:
They run + assert fully only in a privileged/local env (
docker run --privileged, dev boxes). In the actual unprivileged runner they are no-ops.Why it matters
This is the skipped-trust-layer condition — the same class #912 cured for the digest/HMAC suite (making it run in real CI). A test that silently skips its own assertion in CI is unenforced-assertion rot wearing a new coat: the allocator's most safety-critical invariants (no cursor burn before durable write; both-advance-or-neither on the cursor gate) are not exercised by the pipeline that gates merges.
Direction (per Mos ruling)
Replace the mount-based injection with a mount-free, privilege-invariant mechanism that runs unprivileged in the real runner. Candidates:
ulimit -f 0(RLIMIT_FSIZE=0) makes the durable write fail (SIGXFSZ/EFBIG) for any uid with no mounts and no userns. Scope it to the injected write only (subshell), assert the fail-loud diagnostic + rollback fire._atomic_write) so the harness can trigger the failure path deterministically without OS capabilities.Non-goal: granting the runner mount/
CAP_SYS_ADMIN— weakening CI isolation to enable a test inverts the priority.Acceptance
--privilegedlocal run, which masks it).store.shon-disk format or semantics; test-mechanism + any minimal env-gated seam only.test:framework-shellgreen in a non-privilegednode:24-alpinecontainer.Context
Env-divergence doctrine sub-class 5b (privileged-vs-unprivileged container; docker-reproduce must match the runner's PRIVILEGE LEVEL, not just its image). Surfaced by #933 (#917) CI-red; T11 unguarded-fail vs T9 guarded-skip.