## Implementation Plan ### Changes Required 1. **`devplacepy/project_files.py` – remove spurious write guard** At line 688, delete the line `_guard_writable(project_uid)`. *Context:* `export_to_dir` is a read‑only operation; the guard incorrectly blocks exports for any project with `read_only=True`. 2. **`devplacepy/cli/jobs.py` – fix stale constant import** *Line 10:* Replace `from devplacepy.services.jobs.zip_service import STAGING_DIR` with `from devplacepy.config import ZIP_STAGING_DIR` *Line 15:* Replace `STAGING_DIR / job["uid"]` with `ZIP_STAGING_DIR / job["uid"]` 3. **`tests/api/forks.py` – correct stale monkeypatch** *Line 19:* Change the target string from `"devplacepy.services.jobs.fork_service.STAGING_DIR"` to `"devplacepy.services.jobs.fork_service.FORK_STAGING_DIR"` No other files need modification. All three changes are isolated, syntax‑safe, and independently testable. ### Definition of Done - [ ] All three source changes above are applied and verified (`git diff` shows only those lines changed). - [ ] Lint command passes without errors: `pip install -q ruff && ruff check .` - [ ] Test command passes with exit code 0: `pip install -e '.[dev]' -q && make test-unit` (If the environment restricts system‑site‑packages, the executing agent must first create and activate a virtual environment before running the pip command.) - [ ] No leftover uncommitted changes after verification.