feat(sandbox): implement overlay filesystem sandbox strategy #994

Merged
brent.edwards merged 5 commits from feature/m5-overlay-sandbox into master 2026-03-21 03:14:41 +00:00

5 Commits

Author SHA1 Message Date
brent.edwards 52270d5f43 Merge branch 'master' into feature/m5-overlay-sandbox
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 24s
CI / lint (pull_request) Successful in 3m21s
CI / typecheck (pull_request) Successful in 3m56s
CI / quality (pull_request) Successful in 4m15s
CI / security (pull_request) Successful in 4m37s
CI / e2e_tests (pull_request) Successful in 8m47s
CI / integration_tests (pull_request) Successful in 9m1s
CI / unit_tests (pull_request) Successful in 9m16s
CI / docker (pull_request) Successful in 1m13s
CI / coverage (pull_request) Successful in 11m14s
CI / status-check (pull_request) Successful in 1s
CI / benchmark-regression (pull_request) Failing after 29m0s
2026-03-21 01:48:09 +00:00
brent.edwards 96abc0b516 Merge remote-tracking branch 'origin/master' into feature/m5-overlay-sandbox
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 33s
CI / lint (pull_request) Successful in 3m19s
CI / quality (pull_request) Successful in 3m39s
CI / security (pull_request) Successful in 4m5s
CI / typecheck (pull_request) Successful in 4m10s
CI / integration_tests (pull_request) Successful in 5m29s
CI / unit_tests (pull_request) Successful in 5m43s
CI / docker (pull_request) Successful in 1m8s
CI / coverage (pull_request) Failing after 14m41s
CI / e2e_tests (pull_request) Failing after 18m49s
CI / benchmark-regression (pull_request) Has been cancelled
CI / status-check (pull_request) Has been cancelled
# Conflicts:
#	CHANGELOG.md
2026-03-21 01:23:21 +00:00
brent.edwards 8555f62b16 fix(test): update tests for overlay sandbox strategy and boost coverage
CI / coverage (pull_request) Blocked by required conditions
CI / benchmark-regression (pull_request) Blocked by required conditions
CI / docker (pull_request) Blocked by required conditions
CI / status-check (pull_request) Blocked by required conditions
CI / benchmark-publish (pull_request) Has been skipped
CI / build (pull_request) Successful in 24s
CI / quality (pull_request) Successful in 3m47s
CI / security (pull_request) Successful in 4m18s
CI / unit_tests (pull_request) Successful in 7m11s
CI / e2e_tests (pull_request) Successful in 9m3s
CI / integration_tests (pull_request) Failing after 15m3s
CI / typecheck (pull_request) Failing after 16m1s
CI / lint (pull_request) Failing after 16m1s
- Update consolidated_resource.feature: SandboxStrategy now has 6 values (added overlay)
- Update consolidated_sandbox.feature: overlay is supported, fs-mount/fs-directory/fs-file include overlay
- Add 5 new overlay_sandbox.feature scenarios for coverage (commit message metadata, merged_dir None, OSError wrapping)
- Add overlay strategy support step in sandbox_factory_coverage_steps.py
2026-03-21 00:46:13 +00:00
brent.edwards 9a20af8406 Merge remote-tracking branch 'origin/master' into feature/m5-overlay-sandbox
# Conflicts:
#	CHANGELOG.md
2026-03-21 00:39:37 +00:00
brent.edwards b7cc214b94 feat(sandbox): implement overlay filesystem sandbox strategy
CI / lint (pull_request) Successful in 19s
CI / typecheck (pull_request) Successful in 43s
CI / quality (pull_request) Successful in 36s
CI / benchmark-publish (pull_request) Has been skipped
CI / security (pull_request) Successful in 49s
CI / build (pull_request) Successful in 16s
CI / unit_tests (pull_request) Failing after 3m47s
CI / docker (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 4m2s
CI / e2e_tests (pull_request) Successful in 7m27s
CI / coverage (pull_request) Failing after 8m47s
CI / benchmark-regression (pull_request) Failing after 26m39s
Add OverlaySandbox class implementing the Sandbox protocol with
OverlayFS support and userspace fallback. Creates upper/work/merged
directory structure, captures file modifications in the upper layer,
supports commit (merge to original) and rollback (discard upper).
Gracefully falls back to copy-on-write behavior when OverlayFS is
not available (common in CI/containers). Register overlay strategy
in SandboxFactory for fs-mount, fs-directory, and fs-file resources.
Add OVERLAY to SandboxStrategy enum in both domain locations.

Review fixes:
- BUG-2: Include commit message in CommitResult metadata when provided.
  Added metadata field to CommitResult dataclass in protocol.py.
- CHANGELOG: Added Unreleased entry for overlay sandbox feature (#880).
- Condensed _compute_diff() to stay within 500-line file limit.

ISSUES CLOSED: #880
2026-03-20 00:07:47 +00:00