Skip to content

Add dotnet inner sandbox image recipe (.sandcastle/Dockerfile.dotnet)#106

Merged
lsfera merged 1 commit into
mainfrom
feat/dotnet-inner-sandbox-image
Jul 6, 2026
Merged

Add dotnet inner sandbox image recipe (.sandcastle/Dockerfile.dotnet)#106
lsfera merged 1 commit into
mainfrom
feat/dotnet-inner-sandbox-image

Conversation

@lsfera

@lsfera lsfera commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • First concrete per-language Dockerfile variant, per ADR-0002's addendum and ADR-0024: mcr.microsoft.com/dotnet/sdk:8.0 base, mirroring the existing Dockerfile/Dockerfile.opencode pattern (git+curl, non-root user rename, Claude Code CLI via the native installer). Claude tier only.
  • Discovered mcr.microsoft.com/dotnet/sdk:8.0 ships its own pre-existing non-root user app at uid=1654/gid=1654 (not 1000 like the Node image's node user) — renamed to agent per the existing "rename if present" policy, with AGENT_UID/AGENT_GID defaults set to 1654 to match.

Verification

  • docker build -f .sandcastle/Dockerfile.dotnet .sandcastle succeeds.
  • Smoke-tested (docker run --entrypoint sh): git --version, curl --version, dotnet --version (8.0.422), claude --version (2.1.201) all work as the non-root agent user (uid=1654) in /home/agent.
  • No .sandcastle/*.ts orchestrator code touched — Dockerfile-only change.

Implements issue 01 of .scratch/dotnet-afk-support/PRD.md (this workspace's local issue tracker).

🤖 Generated with Claude Code

First concrete per-language Dockerfile variant, per ADR-0002's addendum and
ADR-0024: mcr.microsoft.com/dotnet/sdk:8.0 base (lean official upstream SDK
image, not a sibling devcontainer-dotnet8 image), mirroring the existing
Dockerfile/Dockerfile.opencode pattern (git+curl, non-root user rename,
Claude Code CLI via the native installer). Claude tier only.

mcr.microsoft.com/dotnet/sdk:8.0 ships its own pre-existing non-root user
`app` at uid=1654/gid=1654 (not 1000 like the Node image's `node` user) --
renamed to `agent` per the existing "rename if present" policy, with
AGENT_UID/AGENT_GID defaults set to 1654 to match.

Verified: docker build succeeds; smoke-tested git/curl/dotnet/claude CLI
all work as the non-root `agent` user.

Implements issue #1 of .scratch/dotnet-afk-support/PRD.md (this workspace's
local tracker, not this repo's own issue tracker).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@lsfera lsfera merged commit 812dcbb into main Jul 6, 2026
3 checks passed
@lsfera lsfera deleted the feat/dotnet-inner-sandbox-image branch July 6, 2026 15:05
lsfera added a commit that referenced this pull request Jul 6, 2026
Copy-pasteable recipe for running /afk & /hitl against a non-TypeScript
(dotnet) target project: README + orchestrator.env template pointing
SANDCASTLE_IMAGE at the dotnet inner image (sandcastle-dotnet:local, #106)
and AGENTIC_REPO at the validation fixture repo (lsfera/dotnet-afk-proof).

Structural first for examples/ — every prior example is a pure tier/model
config recipe; this one also points at a non-default inner image and an
external repo, so it's the first to actually set AGENTIC_REPO.

One new row added to examples/README.md's table; no other entries touched.

Implements issue #3 of .scratch/dotnet-afk-support/PRD.md (this workspace's
local tracker).

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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