refactor(process_sandbox): retire dead DockerProcessSandboxBackend - #6693
Conversation
DockerProcessSandboxBackend, its ProcessSandboxBackend trait, and the broker/approval helpers around it (docker.rs, broker.rs, approval.rs, backend.rs) had zero consumers outside this crate and were never constructed in production: `HostProcessExecutor::process_sandbox_executor` defaults to `None` (services.rs), and `with_process_sandbox_executor` is only ever called from test fixtures. Dispatching `system.process_sandbox.run` already returned `missing_process_sandbox_executor` before this change; it still does after, since production wiring in production.rs/process_executor.rs/services.rs is untouched. The dynamic process-compatibility lane is superseded by the persistent per-user sandbox and was already non-functional under the non-root/zero-cap posture. Kept: `PROCESS_SANDBOX_CAPABILITY_ID` (still routed by ID), the `SandboxProcessPlan`/`ValidatedSandboxProcessPlan` types and their validation (plan.rs, validation.rs), and `DEFAULT_PROCESS_SANDBOX_IMAGE` plus tests/docker_security.rs, which exercises the built sandbox image directly and has no dependency on the removed backend. Dropped the async-trait/ironclaw_processes/secrecy/serde_json/tokio/tempfile deps that only the deleted code used. Refs #6686 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
🔎 IronLoop Review StatusHead: Current reviewers:
Reviewer summaries
Recent activity
Available commands
Run metadataAdmission: webhook accepted the request and IronLoop persisted reviewer state before this projection. |
📝 WalkthroughSummary by CodeRabbit
WalkthroughThe process sandbox crate was narrowed to typed plan definitions and validation. Executor, Docker backend, broker, approval-summary modules, related dependencies, public re-exports, and Docker/executor tests were removed. Repository guidance now records that no production execution backend is wired. ChangesProcess sandbox retirement
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related issues
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (3 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/ironclaw_process_sandbox/src/lib.rs`:
- Around line 1-8: Update the rust-ratchet expectations in
reborn_struct_test_support_ratchet.rs to remove the stale reference to the
deleted ironclaw_process_sandbox/src/docker.rs module, while preserving all
remaining crate-file-graph and contract entries.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 4e322223-df74-42f2-b118-19f97fbf36d2
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lock,!**/Cargo.lock
📒 Files selected for processing (7)
crates/ironclaw_process_sandbox/Cargo.tomlcrates/ironclaw_process_sandbox/src/approval.rscrates/ironclaw_process_sandbox/src/backend.rscrates/ironclaw_process_sandbox/src/broker.rscrates/ironclaw_process_sandbox/src/docker.rscrates/ironclaw_process_sandbox/src/lib.rscrates/ironclaw_process_sandbox/src/tests.rs
💤 Files with no reviewable changes (5)
- crates/ironclaw_process_sandbox/Cargo.toml
- crates/ironclaw_process_sandbox/src/approval.rs
- crates/ironclaw_process_sandbox/src/broker.rs
- crates/ironclaw_process_sandbox/src/backend.rs
- crates/ironclaw_process_sandbox/src/docker.rs
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f2a0168387
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
❌ IronLoop Review: reviewer
Review at a glance
| Verdict | Blocking | Notes | Inline | Head |
|---|---|---|---|---|
| ❌ Changes requested | 1 | 2 | 3 | f2a01683878e |
Head: f2a01683878e0701453b89aadb93ec47d353b4dc
Next: Fix the blocking findings, push the PR branch, then re-run this reviewer.
Run details
Status: Current
Needs human: no
Needs validation: no
Summary
The deletion leaves a mandatory architecture test ratchet stale, so the architecture test suite will fail. The nested latency workspace lockfile and sandbox-parity documentation also still describe the removed backend.
Findings
Blocking: 1 / Notes: 2
Blocking findings
1. ❌ [MEDIUM] Remove the deleted Docker module from the architecture ratchet
Location: crates/ironclaw_architecture/tests/reborn_struct_test_support_ratchet.rs:307-312
This frozen entry requires one test-support method in crates/ironclaw_process_sandbox/src/docker.rs, but this PR deletes that file. The ratchet scans the source tree and then asserts that no frozen count has decreased, so cargo test -p ironclaw_architecture will fail with this entry in its removed list. Delete or update the corresponding frozen entry.
Non-blocking notes (2)
1. 💬 [LOW] Regenerate the latency runner lockfile
Location: harness/latency/runner/Cargo.lock:3046-3058
The standalone latency-runner workspace reaches ironclaw_process_sandbox transitively, but its committed lockfile still records the removed async-trait, ironclaw_processes, secrecy, serde_json, and tokio dependencies. Regenerate this lockfile so locked builds do not require a lockfile update and normal latency runs do not dirty the checkout.
2. 💬 [LOW] Update Reborn sandbox capability documentation
Location: docs/reborn/engine-v2-to-reborn-parity.md:63
This row still marks the per-project Docker sandbox as covered and says backend-neutral sandbox backends and hardened Docker command construction exist. Those types and implementation are deleted by this PR, while production has no configured executor. Update this document and the matching claims in FEATURE_PARITY.md and the process-sandbox crate guidance to describe the remaining plan-validation-only surface.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
Inline review fallback
Inline comment projection fell back to a body-only PR Review because GitHub rejected the inline payload.
Reason: Unprocessable Entity: "Path could not be resolved, Path could not be resolved, and Path could not be resolved" - https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request
IronLoop preserved the inline review comment payloads below instead of dropping them.
Inline fallback 1: crates/ironclaw_architecture/tests/reborn_struct_test_support_ratchet.rs:307
IronLoop reviewer: [MEDIUM] Remove the deleted Docker module from the architecture ratchet
This frozen entry requires one test-support method in crates/ironclaw_process_sandbox/src/docker.rs, but this PR deletes that file. The ratchet scans the source tree and then asserts that no frozen count has decreased, so cargo test -p ironclaw_architecture will fail with this entry in its removed list. Delete or update the corresponding frozen entry.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
IronLoop reviewer: [LOW] Regenerate the latency runner lockfile
The standalone latency-runner workspace reaches ironclaw_process_sandbox transitively, but its committed lockfile still records the removed async-trait, ironclaw_processes, secrecy, serde_json, and tokio dependencies. Regenerate this lockfile so locked builds do not require a lockfile update and normal latency runs do not dirty the checkout.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
IronLoop reviewer: [LOW] Update Reborn sandbox capability documentation
This row still marks the per-project Docker sandbox as covered and says backend-neutral sandbox backends and hardened Docker command construction exist. Those types and implementation are deleted by this PR, while production has no configured executor. Update this document and the matching claims in FEATURE_PARITY.md and the process-sandbox crate guidance to describe the remaining plan-validation-only surface.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
|
🚅 Deployed to the ironclaw-pr-6693 environment in ironclaw-ci-preview
|
henrypark133
left a comment
There was a problem hiding this comment.
Code Review (multi-agent)
Intent: Retire the unused Docker process sandbox backend and orphaned dependencies while preserving behavior and capability dispatch.
Stats: 2 findings (from 3 raw, 2 after dedup) across 2 files. Reviewers run: security, bugs, performance, tests, conventions, local-patterns, maintainability, approach. Reviewers failed: none. Body-only: 1.
Build
- High Remove stale architecture ratchet entry (
crates/ironclaw_process_sandbox/src/docker.rs:1-1, confidence 100) — anchor:crates/ironclaw_process_sandbox/src/docker.rs:1.
Deletingdocker.rsleaves the frozen test-support baseline inreborn_struct_test_support_ratchet.rsclaiming one method exists there. The architecture test now fails on every run until that baseline entry is removed. Fix: Delete the stalecrates/ironclaw_process_sandbox/src/docker.rsentry fromFROZEN_PATH_COUNTS. (no diff position — body only; also flagged by approach/Medium)
Guidance
- Medium Update stale process-sandbox crate guidance (
crates/ironclaw_process_sandbox/src/lib.rs:1-8, confidence 95) — anchor:crates/ironclaw_process_sandbox/CLAUDE.md:3-8.
The diff changes this crate to plan validation only, but its crate-local guidance still says it owns Docker execution, brokered phases, mount roots, andProcessExecutorintegration. Fix: Update the crate guidance and crates map to describe plan validation only, or remove the crate-local guidance if it is no longer applicable.
The frozen-path ratchet is shrink-only by design: it pins per-path test-support counts so they can only go down, never back up. The `docker.rs` entry tracked a method in the process-sandbox Docker backend that PR #6693 deletes outright, so the file no longer exists and the baseline entry is dead weight, not a real regression risk. Removing the entry is the fix, and the ratchet test itself is the regression test: `cargo test -p ironclaw_architecture` now passes because there is no stale path left to check for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
PR #6693 deleted the Docker process-sandbox backend, but four docs still described it as present: the crate's own CLAUDE.md guardrails, the per-crate row in crates/AGENTS.md, FEATURE_PARITY.md's Docker sandbox row, and the Reborn parity doc's per-project-sandbox row (plus its accompanying note). Rewrite all four to match the crate's own lib.rs doc comment: ironclaw_process_sandbox owns only the typed SandboxProcessPlan contract and validation, no production backend is wired for the capability today, and the parity docs now honestly mark the capability as not covered rather than silently dropping the row. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Addressing the three review findings raised across coderabbitai/codex/ironloopai/henrypark133:
Requesting re-review from @ironloopai. |
|
@ironloopai review |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/reborn/engine-v2-to-reborn-parity.md`:
- Line 63: Reconcile the sandbox parity row with the retired backend by labeling
ironclaw_processes, ironclaw_wasm, and tests/integration/process_port.rs as
adjacent or non-backend support, and point the evidence to the retained
SandboxProcessPlan validation tests. Update the Known Gaps and conclusion
sections to list sandbox execution as uncovered and remove the claim that every
runtime concern maps to Reborn, ensuring all documentation guarantees match the
implemented code and tests.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 3f73ec9b-2a96-4a85-ab48-77bf8e513cb7
📒 Files selected for processing (5)
FEATURE_PARITY.mdcrates/AGENTS.mdcrates/ironclaw_architecture/tests/reborn_struct_test_support_ratchet.rscrates/ironclaw_process_sandbox/CLAUDE.mddocs/reborn/engine-v2-to-reborn-parity.md
💤 Files with no reviewable changes (1)
- crates/ironclaw_architecture/tests/reborn_struct_test_support_ratchet.rs
There was a problem hiding this comment.
⚠️ IronLoop Review: reviewer
Review at a glance
| Verdict | Blocking | Notes | Inline | Head |
|---|---|---|---|---|
| 0 | 2 | 2 | f3fbc8e2a87d |
Head: f3fbc8e2a87d723ad4a39e6fc5ad8f11118e6543
Next: Human review or validation is required before merging.
Run details
Status: Current
Needs human: no
Needs validation: yes
Summary
Static review found no blocking runtime regression: production still constructs no process-sandbox executor, and deleted API usage was confined to the retired crate/tests. Two non-blocking maintenance issues remain.
Findings
Blocking: 0 / Notes: 2
Non-blocking notes (2)
1. 💬 [NOTE] Remove obsolete Docker-backend rustdoc
Location: crates/ironclaw_process_sandbox/src/plan.rs:87-89
These comments still describe a currently running Docker MVP, but this PR removes that backend and lib.rs now documents the crate as plan-validation-only. Update this and the corresponding network comment so the public plan documentation does not claim obsolete execution behavior.
2. 💬 [LOW] Refresh the latency runner's standalone lockfile
Location: harness/latency/runner/Cargo.lock:3047-3056
Flags: needs validation
This standalone workspace lockfile still records the removed ironclaw_process_sandbox dependencies. A runner build using --locked will require a lockfile refresh rather than reproducing the manifest graph.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
Inline review fallback
Inline comment projection fell back to a body-only PR Review because GitHub rejected the inline payload.
Reason: Unprocessable Entity: "Path could not be resolved and Path could not be resolved" - https://docs.github.com/rest/pulls/reviews#create-a-review-for-a-pull-request
IronLoop preserved the inline review comment payloads below instead of dropping them.
Inline fallback 1: crates/ironclaw_process_sandbox/src/plan.rs:87
IronLoop reviewer: [NOTE] Remove obsolete Docker-backend rustdoc
These comments still describe a currently running Docker MVP, but this PR removes that backend and lib.rs now documents the crate as plan-validation-only. Update this and the corresponding network comment so the public plan documentation does not claim obsolete execution behavior.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
IronLoop reviewer: [LOW] Refresh the latency runner's standalone lockfile
This standalone workspace lockfile still records the removed ironclaw_process_sandbox dependencies. A runner build using --locked will require a lockfile refresh rather than reproducing the manifest graph.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas.
CodeRabbit flagged that the sandbox row said Not covered but the Known Gaps list and Conclusion still claimed every runtime concern (incl. sandbox) maps cleanly to Reborn, and cited ironclaw_processes/ ironclaw_wasm/process_port.rs as parity evidence for a backend that doesn't exist. Label those as non-backend/adjacent, point evidence at the crate's own plan-validation tests, and add sandbox to Known Gaps and the Conclusion. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/reborn/engine-v2-to-reborn-parity.md`:
- Line 63: Update the parity document’s status legend and summary to include the
new “Not covered” status and its meaning, ensuring the summary accounts for this
fourth status alongside the existing capabilities. Keep the per-project Docker
sandbox row labeled “Not covered” and make the legend, summary, and table
consistent.
- Line 63: Update the per-project Docker sandbox row in the parity document to
remove any claim that sandbox mounts or bind mounts are realized. Mark the
capability as unavailable or plan-validation-only, consistent with
ironclaw_process_sandbox having no wired production execution backend and no
tracked sandbox Dockerfile; retain the existing references only if they
accurately describe the inert validation behavior.
- Around line 169-172: Update the “Per-project Docker sandbox” entry and its
nearby “These correspond to…” cross-reference so the documentation remains
accurate: either add the appropriate sandbox follow-up/source ticket or section,
or narrow “These” to refer only to the automation/model-parity entries actually
covered by the listed references. Keep the existing parity status and unrelated
cutover references unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 1b700208-58f3-4dc7-b586-91a5213b3daa
📒 Files selected for processing (1)
docs/reborn/engine-v2-to-reborn-parity.md
Address CodeRabbit review 4783753432 on PR #6693: define the new "Not covered" legend status, correct the WorkspaceReader row's stale claim that per-project mounts are realized by the process-sandbox bind-mount path (they're realized by the RootFilesystem mount catalog instead), and narrow the "These correspond to" cross-reference so it doesn't misattribute the sandbox gap to unrelated tracked epics. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/reborn/engine-v2-to-reborn-parity.md`:
- Around line 184-187: Revise the blanket statement in the parity document so it
applies only to the learning/cutover gaps, or explicitly excludes the
per-project Docker sandbox gap. Preserve the engine-v2-specific scope
established in the execution-path discussion around lines 171-174.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 0825f285-fdd5-4eec-8c7e-b646e57eb8d4
📒 Files selected for processing (1)
docs/reborn/engine-v2-to-reborn-parity.md
| above. Critically, **none of these gaps are engine-v2-specific**: they are | ||
| Reborn-vs-legacy-product deltas that exist independently of whether engine v2 | ||
| is present, because engine v2 is gated off and no shipping path depends on | ||
| it. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Preserve the engine-v2 scope of the sandbox gap.
Lines 171-174 correctly describe the missing execution path for an engine-v2 capability, but this blanket statement says none of the gaps are engine-v2-specific. Narrow it to the learning/cutover gaps or explicitly exempt the per-project Docker sandbox.
Proposed wording
-Critically, **none of these gaps are engine-v2-specific**:
+Critically, the learning-mission and cutover gaps are not engine-v2-specific;
+the per-project Docker sandbox remains an uncovered engine-v2 capability:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| above. Critically, **none of these gaps are engine-v2-specific**: they are | |
| Reborn-vs-legacy-product deltas that exist independently of whether engine v2 | |
| is present, because engine v2 is gated off and no shipping path depends on | |
| it. | |
| above. Critically, the learning-mission and cutover gaps are not engine-v2-specific; | |
| the per-project Docker sandbox remains an uncovered engine-v2 capability: they are | |
| Reborn-vs-legacy-product deltas that exist independently of whether engine v2 is | |
| present, because engine v2 is gated off and no shipping path depends on | |
| it. |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/reborn/engine-v2-to-reborn-parity.md` around lines 184 - 187, Revise the
blanket statement in the parity document so it applies only to the
learning/cutover gaps, or explicitly excludes the per-project Docker sandbox
gap. Preserve the engine-v2-specific scope established in the execution-path
discussion around lines 171-174.
Source: Coding guidelines
Coverage ratchetReborn integration-tier coverageLine coverage (Reborn crates): 85.51% — 307055 / 359081 lines Per-crate breakdown (60 crates, lowest-covered first)
This table itself is informational and never gates the PR on its own — not the percentage, not the per-crate holes, not the 0-coverage callout. A separate coverage ratchet (dry-run until enforce=true; see tests/integration/coverage-floor.toml) can fail the build on specific configured floors. Exemptions (3 entry/entries excluded from the accounting above)
|
…earai#6693) * fix(process_sandbox): retire dead DockerProcessSandboxBackend DockerProcessSandboxBackend, its ProcessSandboxBackend trait, and the broker/approval helpers around it (docker.rs, broker.rs, approval.rs, backend.rs) had zero consumers outside this crate and were never constructed in production: `HostProcessExecutor::process_sandbox_executor` defaults to `None` (services.rs), and `with_process_sandbox_executor` is only ever called from test fixtures. Dispatching `system.process_sandbox.run` already returned `missing_process_sandbox_executor` before this change; it still does after, since production wiring in production.rs/process_executor.rs/services.rs is untouched. The dynamic process-compatibility lane is superseded by the persistent per-user sandbox and was already non-functional under the non-root/zero-cap posture. Kept: `PROCESS_SANDBOX_CAPABILITY_ID` (still routed by ID), the `SandboxProcessPlan`/`ValidatedSandboxProcessPlan` types and their validation (plan.rs, validation.rs), and `DEFAULT_PROCESS_SANDBOX_IMAGE` plus tests/docker_security.rs, which exercises the built sandbox image directly and has no dependency on the removed backend. Dropped the async-trait/ironclaw_processes/secrecy/serde_json/tokio/tempfile deps that only the deleted code used. Refs nearai#6686 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(architecture): drop stale docker.rs ratchet entry The frozen-path ratchet is shrink-only by design: it pins per-path test-support counts so they can only go down, never back up. The `docker.rs` entry tracked a method in the process-sandbox Docker backend that PR nearai#6693 deletes outright, so the file no longer exists and the baseline entry is dead weight, not a real regression risk. Removing the entry is the fix, and the ratchet test itself is the regression test: `cargo test -p ironclaw_architecture` now passes because there is no stale path left to check for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(process-sandbox): describe crate as plan-validation-only PR nearai#6693 deleted the Docker process-sandbox backend, but four docs still described it as present: the crate's own CLAUDE.md guardrails, the per-crate row in crates/AGENTS.md, FEATURE_PARITY.md's Docker sandbox row, and the Reborn parity doc's per-project-sandbox row (plus its accompanying note). Rewrite all four to match the crate's own lib.rs doc comment: ironclaw_process_sandbox owns only the typed SandboxProcessPlan contract and validation, no production backend is wired for the capability today, and the parity docs now honestly mark the capability as not covered rather than silently dropping the row. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(reborn): reconcile sandbox parity row with Known Gaps/conclusion CodeRabbit flagged that the sandbox row said Not covered but the Known Gaps list and Conclusion still claimed every runtime concern (incl. sandbox) maps cleanly to Reborn, and cited ironclaw_processes/ ironclaw_wasm/process_port.rs as parity evidence for a backend that doesn't exist. Label those as non-backend/adjacent, point evidence at the crate's own plan-validation tests, and add sandbox to Known Gaps and the Conclusion. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs(reborn): fix parity doc legend, stale mount claim, gap cross-refs Address CodeRabbit review 4783753432 on PR nearai#6693: define the new "Not covered" legend status, correct the WorkspaceReader row's stale claim that per-project mounts are realized by the process-sandbox bind-mount path (they're realized by the RootFilesystem mount catalog instead), and narrow the "These correspond to" cross-reference so it doesn't misattribute the sandbox gap to unrelated tracked epics. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
What & why
DockerProcessSandboxBackendhas no production constructor — it is only instantiated in its own crate's tests. It is superseded by the persistent per-user sandbox and is already non-functional under the current posture: it needs root +NET_ADMIN, while sandbox containers now run as uid 1000 withcap_drop: ALL.Behavior is unchanged
process_executor.rs,production.rs, andservices.rsare untouched by this commit.PROCESS_SANDBOX_CAPABILITY_IDdispatch is identical before and after: the executor was alreadyNonein production, sosystem.process_sandbox.runreturnsmissing_process_sandbox_executorexactly as it did before this change.What was kept and why
PROCESS_SANDBOX_CAPABILITY_ID,SandboxProcessPlan,ValidatedSandboxProcessPlan,plan.rs, andvalidation.rs— the plan/validation types production still uses — plustests/docker_security.rs.What was deleted
docker.rs(604 lines),backend.rs(159),broker.rs(146),approval.rs(120); trims tolib.rs/tests.rs(-577); drops the now-orphaned dependenciesasync-trait,ironclaw_processes,secrecy,serde_json,tokio,tempfile.Review status
A
code-reviewpass returned zero findings, verifying: zero live references to any deleted symbol anywhere in the workspace, identical capability dispatch before/after, and that each dropped dependency is genuinely unused by the surviving code. Re-verified independently in this worktree with a dangling-symbol grep (DockerProcessSandboxBackend,ProcessSandboxBroker,process_sandbox::{backend,docker,broker,approval}) — zero matches.Series context
Part of an incremental series landing sandbox work into
mainin independent, reviewable slices (the first was #6689). Deliberately not stacked.Refs #6686
🤖 Generated with Claude Code