Make dependency workspace preparation fresh-generation only

Require the caller-selected source, output, seed and prepared environment. Delete reusable-root defaults, changed detection, seed precedence, replacement cleanup and fallback engine creation. Preserve frozen recorded-workspace replay; refuse existing outputs and missing explicit seeds.

Migrate lifetime tests onto fresh snapshots and real uv builds. Remove obsolete managed-uv default-lifetime tests, retaining explicit-engine routing coverage. Combined focused acceptance: 221 passed, 2 skipped; known stale node-sidecar and bionic PATH assertions excluded, along with unavailable Python 3.11 bootstrap.
This commit is contained in:
ethernet
2026-09-12 18:57:22 -04:00
parent da076f3fa4
commit 7f82a86978
9 changed files with 148 additions and 302 deletions

View File

@@ -429,7 +429,7 @@ class Venv(StatePackage):
replay = recorded.parent
seed = (Path(prior["resolved_lock"]) if members and prior.get("resolved_lock")
else project / "uv.lock")
lock_and_sync(members, extras, venv_dir=candidate, root=generation / "workspace",
lock_and_sync(members, extras, root=generation / "workspace",
seed_lock=seed, frozen=repair or not members, replay=replay,
source=project, environment=environment)
resolved_lock = generation / "workspace" / "uv.lock"