Skip to content

Add ADR-0024: sandcastle is not a language constraint; correct ADR-0002#105

Merged
lsfera merged 1 commit into
mainfrom
docs/adr-0024-sandcastle-language-constraint
Jul 6, 2026
Merged

Add ADR-0024: sandcastle is not a language constraint; correct ADR-0002#105
lsfera merged 1 commit into
mainfrom
docs/adr-0024-sandcastle-language-constraint

Conversation

@lsfera

@lsfera lsfera commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • Investigated whether extending /afk//hitl to non-TypeScript target languages needs a different agent-sandbox engine than @ai-hero/sandcastle. Verified against sandbox-runner.ts, reviewer-adapter.ts, and sandcastle's own published README that its API surface (createSandbox, sandbox.run(), Output.object()) is entirely Docker-image/worktree/CLI-shaped — no target-language assumption anywhere.
  • Two external alternatives were considered and rejected: OpenHands (own opinionated orchestration loop — adopting it means rewriting this repo's orchestrator in Python to get back what already exists) and OpenAgentsControl (doesn't manage Docker/worktrees at all, wrong layer).
  • Decision: no engine change. New docs/adr/0024-sandcastle-is-not-a-language-constraint.md records this.
  • ADR-0002's guidance on how to build per-language Dockerfiles (derive FROM sibling devcontainer-* repos) was separately stale — never executed, and the wrong default (heavy VS Code bases). Corrected via a dated addendum superseding it with lean official upstream SDK images.

Verification

  • Re-grepped the repo for devcontainer-*/language-list mentions — only the two files touched here reference the (now-superseded) guidance.
  • Verified all cited line numbers (sandbox-runner.ts:253,286,298, reviewer-adapter.ts:222,231,258,266,274,283, Dockerfile:7-8) against current source.
  • Docs-only change, no code/tests affected.

🤖 Generated with Claude Code

Investigated whether extending /afk & /hitl to non-TS target languages
(dotnet, rust) needs a different underlying agent-sandbox engine than
@ai-hero/sandcastle. Verified against sandbox-runner.ts, reviewer-adapter.ts,
and sandcastle's own published README: every sandcastle API call site takes
a Docker image name, git worktree path, and CLI-shaped options — nothing
about a target project's language. The multi-language gap is not an engine
problem; it's that ADR-0002's per-language Dockerfile extension point was
named but never built.

Also corrected ADR-0002's stale guidance to derive per-language Dockerfiles
FROM sibling devcontainer-* images (heavy VS Code bases, never actually
built out) via a dated addendum, superseding it with deriving from lean
official upstream SDK images instead — matching the existing
Dockerfile/Dockerfile.opencode pattern.

Docs-only; no code changes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@lsfera lsfera merged commit 97d8df4 into main Jul 6, 2026
3 checks passed
@lsfera lsfera deleted the docs/adr-0024-sandcastle-language-constraint branch July 6, 2026 14:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant