Constraints — common (all myloop runs)

Pipeline-wide discipline that applies regardless of which graph is being worked on. Bootstrap merges this file as layer 1 into every vN/constraints.md.

Edit scope

Implementation note for server-mode edits (TODO #60, 2026-05-15): server nodesets at workspace/nodesets/server/** with parallelism="shared" (VLM / detection / policy inference services) used to require a manual backend restart to test overlay edits. They now auto-spawn an ephemeral auto_host child at eval admit time whenever the overlay's source content hashes differently from the frozen baseline. Implications: - First iter that touches a shared nodeset pays a one-time spawn cost (≈ 30–60 s for VLM-class models). Subsequent iters with the same overlay content reuse nothing (per-eval lifecycle); plan eval_profile.overrides.per_step_budget_sec accordingly. - VRAM doubles for the duration of the eval (frozen singleton + ephemeral child both live). If the iter's overlay touches a ~14 GB VLM on a 24 GB GPU, raise marginal_vram_mb on the experiment profile by the ephemeral's expected footprint, or explicitly unload_nodeset(name) on the frozen one beforehand. - parallelism="replicated" server nodesets (habitat / simpler / libero / openeqa / etc.) already hot-reload from the overlay — they spawn per-eval-worker inside the eval subprocess, no special treatment needed.