Add immutable layered Python environments #206

Merged
weichen merged 3 commits from feature/layered-python-env into main 2026-10-15 14:24:46 +00:00
3 Commits
Author SHA1 Message Date
weichenandCursor ab12fea474 Register exec env tables in storage migration
ci / vet-and-test (pull_request) Successful in 1m1s
Why: Schema 35 adds exec_env_requests and exec_env_bindings. The SQLite-to-Postgres copier refuses to run when a business table is missing from its ordered list.
Evidence: SELF go test ./cmd/storage-migrate -run TestCopyOrderCoversAllFixtureTables. CI run 3343 failed on this exact check.
Impact: Those two tables move with the rest of the database. They have no foreign keys, so they can follow the existing recovery tables.
Refs: pull 206
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-15 14:04:03 +00:00
weichen 9a54845d40 Merge remote-tracking branch 'origin/main' into feature/layered-python-env
ci / vet-and-test (pull_request) Failing after 59s
2026-10-15 14:01:27 +00:00
weichenandCursor b85a1e1ca3 Add immutable layered Python environments for the sandbox.
Why: The sandbox hides the host home directory and has no network, so pip install --user cannot supply python-docx, and the service PATH resolved python3 to a linuxbrew path that does not exist inside the sandbox.
Evidence: SELF go test of execenv, tools, store, app, server, runmgr, config, and cmd/agent-system on this worktree. CI has not run.
Impact: Sessions inherit a read-only base layer. Extra packages are requested through python_env, auto-approved only from the allowlist, and mounted per conversation. Schema 35 adds the request and binding tables.
Refs: .task/feature-layered-python-env.md
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-15 13:52:48 +00:00