docs(sandbox): clarify OpenShell job isolation - #387
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThe Deep Research Sandbox README documents sandbox boundaries, per-job isolation, manifest-first artifact handling, report reference rewriting, OpenShell and Modal lifecycle behavior, provider configuration, operational guidance, and backend-independent testing. ChangesSandbox and artifact runtime
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
e361ba1 to
37589c7
Compare
|
/ok to test 37589c7 |
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 `@src/aiq_agent/agents/deep_researcher/sandbox/README.md`:
- Around line 194-198: Update the ArtifactManager pipeline description in
README.md to match the implementation: document the pre-download count-quota
check first, followed by download, file-size validation, cumulative quota
validation, MIME detection, sanitization/active-content rejection, and hashing.
Preserve the existing metadata/blob storage and artifact.update event details.
- Around line 203-204: Update the “Render gate” documentation to describe SVG
artifacts as download-only rather than rejected, while preserving that only
PNG/JPEG/WebP render inline and SVG remains non-inline until a vetted sanitizer
exists.
- Around line 553-554: Update the CI configuration for the OpenShell acceptance
suite so the SDK-backed job runs as a required check rather than only when
AIQ_OPENSHELL_LIVE_TESTS=1 is set. Preserve the existing opt-in behavior for
environments without the OpenShell or Modal SDK, and ensure tests in
test_openshell_live.py remain gated appropriately outside the required
SDK-backed job.
🪄 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: Enterprise
Run ID: ff622d99-dd02-4788-914e-772c5806d6a4
📒 Files selected for processing (1)
src/aiq_agent/agents/deep_researcher/sandbox/README.md
📜 Review details
🧰 Additional context used
📓 Path-based instructions (2)
**/*
📄 CodeRabbit inference engine (AGENTS.md)
**/*: Keep changes inside this repository, avoid editing adjacent repositories, and scope changes to the smallest relevant independent package, especially undersources/.
Run the narrowest relevant validation command first and broaden to the full suite only when a change crosses shared boundaries.
Keep pull requests scoped, exclude unrelated files and generated artifacts, never include secrets, and provide validation commands and results.
**/*: Do not include secrets, credentials, private hostnames, internal-only logs, customer data, or generated local artifacts.
Add or update tests for behavior changes.
Files:
src/aiq_agent/agents/deep_researcher/sandbox/README.md
src/aiq_agent/agents/**/*
⚙️ CodeRabbit configuration file
src/aiq_agent/agents/**/*: Review agent changes for research workflow correctness, graph state transitions, prompt/tool contracts,
HITL behavior, and failure handling. Flag changes that weaken source attribution, report generation,
async cancellation, checkpointing, or data-source selection without focused tests and docs.
Files:
src/aiq_agent/agents/deep_researcher/sandbox/README.md
🔇 Additional comments (1)
src/aiq_agent/agents/deep_researcher/sandbox/README.md (1)
12-16: LGTM!Also applies to: 30-33, 44-75, 86-93, 157-163, 172-180, 191-193, 205-211, 217-219, 241-315, 323-467, 486-490, 542-543
|
/ok to test 98dd6d9 |
|
/ok to test 747002c |
|
/ok to test 747002c |
Signed-off-by: Kyle Zheng <kyzheng@nvidia.com>
Signed-off-by: Kyle Zheng <kyzheng@nvidia.com>
Signed-off-by: Kyle Zheng <kyzheng@nvidia.com>
Signed-off-by: Kyle Zheng <kyzheng@nvidia.com>
Signed-off-by: Kyle Zheng <kyzheng@nvidia.com>
747002c to
d36a5ec
Compare
|
/ok to test d36a5ec |
|
/merge |
04373b2
into
NVIDIA-AI-Blueprints:release/2.2
Overview
Document AI-Q's actual OpenShell execution boundary for architecture and security review, and present OpenShell before Modal in the deep-research sandbox implementation reference.
This documentation-only change now:
ls,glob,grep,read_file,write_file,edit_file, andexecute) and distinguishes provider-backed paths from host-side/shared/and/skills/routes;deep_research_sandboxworkflow YAML from the internal normalizedSandboxConfig, and links the validatedconfigs/config_openshell.ymlpublic profile;job_accesspersistence;/shared/and/skills/routes;The reference also corrects two adjacent artifact statements:
/skills/uses a host-side filesystem backend rather thanStateBackend, and SVG is currently rejected until a vetted sanitizer exists rather than sanitized or stored as download-only content.No runtime, configuration, policy, API, or dependency behavior changes.
DCO sign-off for the squash commit
Signed-off-by: Kyle Zheng kyzheng@nvidia.com
Signed-off-by: Kyle Zheng 126034466+KyleZheng1284@users.noreply.github.com
Validation
.venv/bin/pytest -q tests/aiq_agent/agents/deep_researcher/sandbox/test_openshell_provider.py tests/aiq_agent/agents/deep_researcher/sandbox/test_sandbox_runtime.py tests/aiq_agent/agents/deep_researcher/sandbox/test_artifacts.py tests/aiq_agent/agents/deep_researcher/test_deepagents_runtime.py tests/aiq_agent/jobs/test_runner.py frontends/aiq_api/tests/test_job_access.py frontends/aiq_api/tests/test_submit_collision.py frontends/aiq_api/tests/test_submit_owner_user_id.py— 328 passed, 2 skipped..venv/bin/pytest -q tests/aiq_agent/agents/deep_researcher/sandbox/test_artifacts.py tests/aiq_agent/agents/deep_researcher/sandbox/test_sandbox_runtime.py tests/aiq_agent/agents/deep_researcher/test_deepagents_runtime.py— 114 passed after the review-fix commit..venv/bin/pytest -q tests/aiq_agent/agents/deep_researcher/test_factory.py::test_middleware_set_adds_orchestrator_batch_tool_name— 1 passed after the filesystem-tool documentation correction..venv/bin/python .agents/skills/aiq-configure-workflow/scripts/validate_config.py configs/config_openshell.yml— no errors and 0 warnings.SandboxConfig, the linked OpenShell block validates as publicDeepResearchSandboxConfig, and the internal shape is rejected by the public schema..venv/bin/pre-commit run --files src/aiq_agent/agents/deep_researcher/sandbox/README.md— all applicable hooks passed, including merge-conflict, large-file, whitespace, secret, and network-backed Markdown link checks.mermaidblocks and rendered each withnpx --yes @mermaid-js/mermaid-cli— both SVGs generated without parse errors.git diff --check origin/release/2.2..HEAD— passed.src/aiq_agent/agents/deep_researcher/sandbox/README.md.git commit -sor an equivalent sign-off.Where should reviewers start?
Start in
src/aiq_agent/agents/deep_researcher/sandbox/README.mdatProviders:Workspace organization and isolation limitsfor the complete filesystem/code tool set and provider-backed versus host-side routing.Shared AI-Q provider lifecyclefor the job scope, lazy creation, serialization/retry, artifact, and terminal contracts common to OpenShell and Modal.Internal normalized SandboxConfigfor the explicit boundary between public workflow YAML and the runtime's internal provider model.OpenShell > Boundary modelfor the principal/job/sandbox/tenant definitions and identity split.OpenShell > Submission, provisioning, and policy verificationfor the actual Dask and Gateway/Supervisor ordering.OpenShell > OpenShell transport during execution and teardownfor the provider relay around the shared artifact and terminal lifecycle.OpenShell > What AI-Q policy verification provesfor the exact assurance boundary and point-in-time limitation.OpenShell > Lifecycle guarantees and reconciliation limitsfor OpenShell deletion requests, labels, and orphan handling.Modal (cloud)for its provider-specific creation, controls, retry classification, and teardown adapter.The main review question is whether the shared AI-Q lifecycle is clearly separated from provider-specific behavior, and whether the OpenShell sections describe the implementation precisely without overstating end-user identity propagation, continuous policy attestation, or deletion guarantees.
Related Issues
Summary by CodeRabbit
artifact://<id>handling.