Story: Compass environment improvements: port auto-assignment and fleet env-type display
Table of Contents
This page documents a story in Sprint 21. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Improve compass env provision so it never collides with existing environments by scanning all ores_dev_* directories and picking the next available base port. Also improve compass fleet to surface the environment type (full vs light) alongside each worktree entry so the fleet overview is self-documenting.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 21 |
| Now | All three tasks merged (PRs #1291, #1292). |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-06-25 |
Acceptance
- compass env provision auto-assigns the next available base port by scanning existing ores_dev_* .env files — no manual –base-port needed and no collisions
- compass fleet shows ORES_PROVISION_TYPE (full/light) for each worktree
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Auto-assign base port in compass env provision | DONE | 2026-06-24 | 2026-06-25 | Scan sibling .env files and pick next free port; no –base-port needed. |
| Init vcpkg submodule in env provision for full environments | DONE | 2026-06-24 | 2026-06-25 | Auto-init vcpkg after git worktree add for full envs. |
| compass fleet: show provision type (full/light) per worktree | DONE | 2026-06-24 | 2026-06-25 | Show ORES_PROVISION_TYPE in fleet output. |
Decisions
- `_scan_ports` lives in `env_init.py` (not `env_create.py`) so both `env configure` and `env provision` share the same port-scanning logic — fresh clones that bypass provision also get collision-free ports.
- vcpkg submodule init is soft-fail: warning printed, provision continues. The worktree is usable; the user can re-run `git submodule update –init vcpkg` manually if needed.
- `_worktree_env_value` reads `.env` on each call (one call per worktree in fleet) — acceptable at current scale; factoring out the read would only matter if the number of per-worktree keys grew significantly.