[ENV-C2] ADR and feasibility spike for remote isolated sandboxes (Vercel/VM)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- backend, infrastructure
Research direction
Start by reading the linked epic #266, dependencies #267, #269 and #270, and ADRs 0002/0004/0005/0006/0008. Compare Vercel Sandbox with generic VM services against the listed trust, portability, cost, transfer and recovery requirements, then prototype scoped transfer and shutdown behavior with fake or probe tests. Done means a signed-off go/no-go ADR, integrity and recovery evidence or explicit blockers, and no remote production adapter.
Written by the indexing model from the issue text.
Description
Artifact: decision-first design/spike task of EPIC #266. Wave: C; Size: M; Baseline: main 711ff09 (2026-10-21).
Goal and boundaries
Compare Vercel Sandbox and generic VM services as execution-only backends; specify runtime identity, short-lived credentials, streaming/heartbeat, exact Git transport, byte/size checks, remote termination, TTL/cost, remote loss and artifact recovery. Prototype only the minimum transfer and shutdown behavior; no remote production adapter.
Hard dependencies
- #267
- #269
- #270
Acceptance criteria
- Document reasoned provider comparison with capabilities/cost/trust/portability
- Prototype integrity-bound candidate input/output (seed pack in, candidate pack and manifest out; no bind, no rsync as the content boundary) or record explicit blockers
- Define recoverable remote resource identity and no-agent-GitHub-writes invariant
- Demonstrate interruption and expiry fail-closed in fake/probe tests
- Record signed-off go/no-go decision; no cloud provider declared supported prematurely
- Negative tests and recovery tests cover the delivered behavior, with real-environment evidence or explicit unsupported reasons.
- Maintain accepted ADRs 0002/0004/0005/0006/0008, as amended by #267's dated amendments: controller owns GitHub writes, exact-candidate verification, evidence, state transitions, and worker locks.
- Coordinate any persisted-state schema/number with #23; preserve current
bwrapbehavior, avoid Sandcastle orchestrator, arbitrary mounts or credential exposure.
Verification and constraints
Implement/prototype only in scoped surface; retain the typed policy, strict subprocess argv and fail-closed required-mode. No automatic public-release claim and no hard dependency on Public Alpha #255.
Planning reconciliation (2026-10-23)
Artifact: planning update from the 2026-10-23 reconciliation of EPIC #266 with its architecture review (#266 comment). Baseline re-read: main 388ecb3. Planning only: nothing here implements a feature or checks off a criterion. The earlier sections stay authoritative where this one does not change them.
Native dependencies (verified read-back 2026-10-23): blocked_by #267, #269, #270. Wave C.
- Wording versus the runtime model. "Streaming/heartbeat" here means the liveness of a remote execution resource, as observed by one local controller process. It is not a heartbeat protocol between AutoForge processes, a lease service or any other distributed machinery, which root
AGENTS.md("Runtime model") rules out for problems a single process holding a local lock does not have. The spike must keep that distinction and keep every workflow effect on the host. - Scheduler admission.
autoforge epic runtreats a blocker as satisfied only when it is closed as completed. This issue becomes admissible as soon as #267, #269 and #270 close, which is before the Docker MVP (#274) is done. An operator who does not want the spike to run in parallel with the MVP should leave it out of that run. - No-go handling. If the recorded decision is no-go, close #277 as not planned in the same action that closes this issue. #277 is natively
blocked_bythis issue and #274, so closing this one as completed would otherwise satisfy its blocker. - Egress. A remote backend's network policy is compared against #294's design questions, and its residuals are stated the same way (#270).
- Source delivery: pack transfer only (owner decision 2026-10-23, #267 decision 12).
- A remote sandbox never gets a bind mount, because a host path would resolve on another machine.
- Input: the workspace seed pack, copied in. It carries the exact tree, so no separate
/sourcecopy is sent. - Output: a bounded Git pack plus manifest, strictly imported by the controller (#269).
- rsync, or a provider's file-sync API, may only be a transport optimisation underneath the Git-object integrity check. It is never the content boundary, and never the way files come back.
- The spike compares the providers on this basis: how they upload and download a pack, size limits, cost of transfer, and how a partial transfer fails.
- Terminology: here "remote" means a remote execution sandbox, not AutoForge's REMOTE workflow mode.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- Avg merge
- 5h 57m
- Merged PRs (30d)
- 71
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from iceboundrock/AutoForge
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
iceboundrock/AutoForge#304 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
iceboundrock/AutoForge#333 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
iceboundrock/AutoForge#332 ·
Maintainers usually reply within 1 day
-
Difficulty 5/5 Over a week Newbie friendliness 1/100
iceboundrock/AutoForge#331 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 45/100
iceboundrock/AutoForge#329 · 1 comment ·
Maintainers usually reply within 1 day
All issues in iceboundrock/AutoForge
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 85/100
521xueweihan/HelloGitHub#4115 ·
-
get_lldp_neighbors_detail: query asks for 'max-address' (typo for 'mac-address'), so remote_chassis_id is always emptyPossibly taken @Jah-yee claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 88/100
-
lesson-submission pending-review
Difficulty 1/5 Under an hour Newbie friendliness 74/100
Ikalus1988/MisakaNet#3899 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
aws-samples/sample-per-model-bedrock#549 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100