Skip to content

chore: add Cloud Agent development environment config - #50

Merged
jkbennitt merged 2 commits into
masterfrom
cursor/setup-dev-environment-31ab
Sep 4, 2026
Merged

chore: add Cloud Agent development environment config#50
jkbennitt merged 2 commits into
masterfrom
cursor/setup-dev-environment-31ab

Conversation

@jkbennitt

@jkbennitt jkbennitt commented Sep 4, 2026

Copy link
Copy Markdown
Member

Summary

Sets up the Cloud Agent development environment for RLE so future agents boot into a ready-to-use Python 3.14 + uv workspace.

Adds:

  • .cursor/environment.json — repository-managed environment (default base image, ubuntu user, install runs the bootstrap script).
  • .cursor/install.sh — idempotent bootstrap that installs uv (which manages the pinned Python 3.14 toolchain via .python-version) and runs uv sync --extra dev --frozen against the committed uv.lock.

Also fixes a pre-existing lockfile mismatch:

  • uv.lock pinned the local package at 0.3.0 while pyproject.toml declares 0.4.1, so any non-frozen uv sync/uv run rewrote that metadata line. Regenerated with uv lock so uv sync --frozen is now a clean no-op.

Validation (this VM)

Check Result
uv sync --extra dev --frozen from scratch (fresh .venv) Python 3.14.7, 31 packages installed
Install idempotence Ran repeatedly; lockfile untouched
uv sync --frozen no-op after lockfile fix Clean, no drift
uv run pytest 519 passed
ruff check src/ tests/ scripts/ All checks passed
mypy src/ (strict) Success: no issues in 46 source files
run_benchmark.py --dry-run --ticks 10 (all 6 scenarios, mock RIMAPI + mock LLM) 6/6 ran, 100% parse rate, avg score 0.804
Fresh Cloud Agent (booted from tested build bld-20260904-c481ac0a) uv 0.12.9, Python 3.14.7, tests / ruff / mypy / offline run all passed

Notes

  • The live/interactive paths — the real --smoke-test (needs an LLM API key), the React dashboard (separate rimapi-dashboard repo + bun), the Docker headless benchmark (needs game files), and the live scenario (needs RimWorld + the RIMAPI mod) — depend on secrets and external services not available in a headless Linux cloud VM. The fully-offline --dry-run path exercises the complete multi-agent orchestration, scoring, and conflict-resolution pipeline end-to-end.
Open in Web Open in Cursor 

cursoragent and others added 2 commits September 4, 2026 05:49
Add .cursor/environment.json and an idempotent install script that
bootstraps uv (managing the pinned Python 3.14 toolchain) and syncs
dependencies from the committed lockfile with 'uv sync --extra dev
--frozen'.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
The lockfile pinned rimworld-learning-environment at 0.3.0 while
pyproject.toml declares 0.4.1, so any non-frozen 'uv sync'/'uv run'
rewrote that metadata line. Regenerate the lockfile with 'uv lock' so
it matches pyproject and 'uv sync --frozen' stays a no-op.

Co-authored-by: Jason <jkbennitt@users.noreply.github.com>
@jkbennitt
jkbennitt marked this pull request as ready for review September 4, 2026 06:05
@cursor

cursor Bot commented Sep 4, 2026

Copy link
Copy Markdown

Review

Reviewed the full diff (3 files, +28/-1). Scope is tight and appropriate for an environment-setup PR.

.cursor/environment.json — Minimal and correct. Default base image + ubuntu user (matches the VM user) + install running the bootstrap script. No start/terminals, which is right: the core dev loop (tests, lint, type-check, offline --dry-run benchmark) has no long-running server, and the live/dashboard paths require external services (RimWorld + RIMAPI, LLM key, separate dashboard repo) that can't run headless.

.cursor/install.shset -euo pipefail, guarded uv install (skips if already present), exports PATH for the script's own run, and uv sync --extra dev --frozen. --frozen is the key choice: setup never silently rewrites the lockfile. Verified idempotent (repeated runs, no drift) and clean from a fresh .venv.

  • Minor, non-blocking: the uv installer pulls the latest release (0.12.9 at build time) rather than a pinned version. Dependency versions are still fully pinned by uv.lock, and uv sync --frozen is stable across uv patch releases, so this is acceptable. Can pin later via UV_INSTALL_VERSION if strict uv reproducibility is ever desired.

uv.lock — Fixes the pre-existing 0.3.00.4.1 local-package mismatch with pyproject.toml. Regenerated via uv lock; the only change is that one metadata line, no dependency resolution churn.

Validation — Reproduced the full quality gate against the committed state: 519 tests pass, ruff clean, mypy strict clean (46 files), offline --dry-run runs all 6 scenarios at 100% parse rate, and uv sync --frozen is now a true no-op. A fresh Cloud Agent booted from the tested build (bld-20260904-c481ac0a) passed the same checks.

No blocking issues. Merging.

@jkbennitt
jkbennitt merged commit f3182b8 into master Sep 4, 2026
3 checks passed
@jkbennitt
jkbennitt deleted the cursor/setup-dev-environment-31ab branch September 4, 2026 06:06
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.

2 participants