feat(jail): add disposable testbed provisioner and lifecycle destroy guard #22

Closed
clawdie wants to merge 0 commits from clawdie/oxy-testbed-jail into main AGit
Owner

Summary

Adds scripts/jail-testbed.sh, a repeatable disposable Bastille testbed provisioner, and extends the jail-run.sh destroy guard so jails whose exact root dataset carries clawdie:lifecycle=temp can be destroyed without a -test suffix.

The provisioner supports provision|verify|destroy|status, refuses protected production names such as cms, records disposability in metadata, writes the three-layer lineage stamp, makes the jail root readable for unprivileged Colibri probes, and stages the host Oxigraph 0.4.9 binary inside the jail.

Safety

  • cms is never targeted; BUILTIN_PROTECTED_NAMES is enforced before any mutation.
  • Provision/destroy require root; the helper prints the exact root-tmux command if run unprivileged.
  • Destroy requires the exact-name confirmation and either a disposable name or local clawdie:lifecycle=temp; --allow-production remains the explicit override.
  • Hermetic tests use only PATH shims and temporary directories.

Tests

sh scripts/tests/jail-run-test.sh
sh scripts/tests/test-jail-testbed.sh
./scripts/ci-checks.sh
## Summary Adds `scripts/jail-testbed.sh`, a repeatable disposable Bastille testbed provisioner, and extends the `jail-run.sh` destroy guard so jails whose exact root dataset carries `clawdie:lifecycle=temp` can be destroyed without a `-test` suffix. The provisioner supports `provision|verify|destroy|status`, refuses protected production names such as `cms`, records disposability in metadata, writes the three-layer lineage stamp, makes the jail root readable for unprivileged Colibri probes, and stages the host Oxigraph 0.4.9 binary inside the jail. ## Safety - `cms` is never targeted; `BUILTIN_PROTECTED_NAMES` is enforced before any mutation. - Provision/destroy require root; the helper prints the exact root-tmux command if run unprivileged. - Destroy requires the exact-name confirmation and either a disposable name or local `clawdie:lifecycle=temp`; `--allow-production` remains the explicit override. - Hermetic tests use only PATH shims and temporary directories. ## Tests ```sh sh scripts/tests/jail-run-test.sh sh scripts/tests/test-jail-testbed.sh ./scripts/ci-checks.sh ```
feat(jail): add disposable testbed provisioner and lifecycle destroy guard
All checks were successful
format-check / gates (pull_request) Successful in 7s
400e854c79
Add scripts/jail-testbed.sh (provision|verify|destroy|status) for a metadata-disposable Bastille jail. It writes a local clawdie:lifecycle tag, root-base lineage stamp, 0755 probe-readable directories, and stages the host oxigraph binary into the jail. Provisioning is idempotent and refuses protected names such as cms.

Extend jail-run.sh destroy authorization to accept a non-name-disposable jail when its exact root dataset carries local clawdie:lifecycle=temp, while retaining --allow-production as the explicit override. Add hermetic coverage for the provisioner and the new destroy path, and wire both tests into ci-checks.sh.
clawdie force-pushed clawdie/oxy-testbed-jail from 400e854c79
All checks were successful
format-check / gates (pull_request) Successful in 7s
to b9466d1373
All checks were successful
format-check / gates (pull_request) Successful in 6s
2026-10-29 01:17:06 +01:00
Compare
docs(jail): install companion jail-run with lifecycle helper
All checks were successful
format-check / gates (pull_request) Successful in 15s
2ec5737ab1
fix(jail-lifecycle): make create-only and reject unsafe existing state
All checks were successful
format-check / gates (pull_request) Successful in 15s
d56f75c521
fix(jail-lifecycle): preflight all destination entries and reconcile configured IP
All checks were successful
format-check / gates (pull_request) Successful in 15s
d6060b8930
fix(jail-lifecycle): harden standalone verify, dependent-clone destroy, and CI gates
All checks were successful
format-check / gates (pull_request) Successful in 18s
98822c6bd4
clawdie closed this pull request 2026-10-30 13:44:56 +01:00
All checks were successful
format-check / gates (pull_request) Successful in 18s

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
clawdie/clawdie-iso!22
No description provided.