fix(common): isolate shared runtime directories

Plan

  1. Normalize shared runtime storage into a private job-owned child without changing the supplied directory.
  2. Keep registry authentication checks and shell-owned cleanup; preserve caller-managed runtimes and child-shell isolation.
  3. Run behavioral regressions, real tmpfs authentication, documentation checks and complete MR CI.

Acceptance criteria

  • Shared /dev/shm initializes successfully with private mode-700 runtime and mode-600 registry credentials.
  • Caller-managed private runtime remains unchanged; generated children are cleaned without removing parent contents.
  • Missing/symlink paths fail; registry auth still rejects insecure runtime paths directly.
  • New regression fails on original main and passes with this change; adjacent runtime/auth/directory-summary/runner-cleanup tests pass.
  • Documentation updated, Markdown lint passes with repository configuration, HTML previews reviewed.
  • Complete exact-head CI succeeds, including required regression execution and documentation build.
  • Final diff/rebase/DoD verified before requesting review.

Evidence

Main job https://gitlab.com/xrow-public/ci-tools/-/jobs/17559205603 accepts XDG_RUNTIME_DIR=/dev/shm during ci_init, then fails the stricter registry-auth check. This fixes initialization instead of weakening credential permissions. A real local /dev/shm login/configuration/cleanup probe passes; no container-build success is claimed from that probe.

The new scripts/tests/private-runtime.ci-test.sh is discovered by the existing required Bash test job (path: scripts/tests). The existing common runtime suite and all nine registry-auth validation cases also pass locally. Exact-head CI succeeds across all 62 connected pipeline nodes. Required private-runtime regression execution, common runtime/authentication/cleanup checks, podman build and documentation builds/tests pass. The three allowed failures are deliberate failure-report/deprecation fixtures, with their required report verifiers passing. Current-main rebase is a no-op; the scoped five-file diff and clean worktree are verified.

Closes #447 (closed)

Edited by Eugene Harold Krabs

Merge request reports

Loading
Loading