# Agent - Open Items

Only keep unfinished Agent work here.

## Active
- retention refinement for local backups/checkpoints
- runtime install verification improvements
- catalog hash validation
- runtime removal / upgrade handling
- runtime update process for dev containers
- PATH normalization
- shell profile consistency
- runtime PATH injection
- graceful shutdown verification
- process reattachment on agent restart
- SSH server install in dev provisioning
- structured logging for Loki
- `provisioningComplete` state surfacing in `/status`
- game/dev template cleanup: remove `node-exporter`, keep Alloy preinstalled, and keep `/etc/default/alloy` fixed to `/etc/alloy/config.alloy` on port `12345`
- Alloy config label cleanup for game/dev containers: keep the required label contract minimal and consistent with dashboards/discovery (`vmid`, `instance`, `container_type`, optional metadata) and remove redundant labels if they add no value
- verify automatic Alloy config refresh path on metadata changes after initial `POST /config`
- resolve dev interactive shell boundary behavior: current live validation indicates PTY/dev console sessions can traverse upward from `/home/dev/workspace`, so confirm whether shell confinement is intended and, if so, implement it at the correct layer

## Cleanup / consolidation priorities
- fold Forge + NeoForge installer flow into one shared helper without changing external behavior
- fold devcontainer runtime installers into a shared helper with thin per-runtime wrappers
- split `internal/http/agent.go` by responsibility without changing package/API shape
- add only small concrete HTTP helpers for repeated method/config/JSON response patterns
- fold repeated addon/config checks into one helper such as `HasAddon(...)`
- stop tracking runtime-generated files if they are not intentionally versioned
- keep websocket library migration separate from the first cleanup wave; only revisit after behavior-preserving dedupe/split work is complete

## Cleanup rule
- prefer behavior-preserving folding over broad refactors
- merge repeated flows, not concepts
- reduce local complexity and file sprawl before introducing new abstractions
- keep helpers small and concrete
- treat Go/runtime/toolchain upgrades as separate validation work, not part of cleanup-only changes

## Clarified boundary
- do not add agent-side remote/offsite backup sync if PBS/platform layer is the intended durability path
- agent backup scope is local, app-aware rollback
- do not assume dev-container backups are agent-owned; current likely direction is platform/LXC-snapshot ownership for dev backups unless that decision changes

## Verify before re-opening
- readiness-aware start/restart unification
- guarded operation locking
- crash recovery path consolidation
- local Minecraft backup CRUD
- pre-restore checkpoint hardening
- code-server desired-state reconciliation during dev provisioning
- code-server manual start endpoint uses service start path, not installer path
- live backup/restore validation on real Minecraft servers
- current Minecraft runtime provisioning split (`vanilla` internal profile vs normal `fabric`) and Forge/NeoForge first-start handling
- dev shell / PTY behavior relative to the intended workspace boundary model

## Not Agent-owned
- API response-shape normalization for frontend consumers
- portal UX/polish
- PBS/offsite backup strategy
- dev-container snapshot orchestration / retention policy if that ownership stays outside the agent
