Summary
At b0e9d0ca81328d3c91a08ab8c7a0e8963c2fa7ae, UvSyncPlan.create(all_packages=True, dagger_codegen=True) runs codegen only at . instead of for each local workspace member.
Expected behavior
all_packages is documented to install every workspace member. Dagger codegen is documented to run for the package being built before uv sync, so every selected local Dagger member needs its generated SDK materialized.
Actual behavior
Codegen paths are derived only from the explicit package list. The normal empty list used with all_packages=True falls back to ['.'] before local members are discovered.
Reproduction
PYTHONPATH=repositories/daggerverse/github/src:repositories/daggerverse/ruff/src:repositories/daggerverse/uv/src \
evidence/daggerverse/venv314/bin/pytest -q \
evidence/daggerverse/repros/test_candidates.py::test_all_packages_codegen_visits_each_local_member
Observed: expected ['packages/app-one', 'packages/app-two']; actual codegen visits ['.'].
The explicit package=['app-one', 'app-two'] control visits both member paths and passes.
Impact
A pure workspace root can omit gitignored generated SDK sources before frozen sync, so an all-packages build can fail even though explicit selection of the same members works. A full Dagger container build was not run in this audit.
Root cause
uv/src/uv/workspace/plan.py:204-210 computes codegen paths from explicit packages only, before _discover_local_packages handles all_packages.
Suggested fix and regression test
When all_packages is true, derive and deduplicate codegen paths for all reachable local members. Preserve current explicit-package and bare-root behavior. Add a two-member pure-workspace regression plus explicit/default controls.
Duplicate check
The full all-state tracker and actual open patches were inspected. Fresh searches covered all_packages, dagger_codegen, UvSyncPlan.create, workspace member paths, generated SDKs, and skip/selection synonyms. PRs #2/#3 establish codegen necessity and PR #81 changes eligibility, but none addresses all-packages selection.
Summary
At
b0e9d0ca81328d3c91a08ab8c7a0e8963c2fa7ae,UvSyncPlan.create(all_packages=True, dagger_codegen=True)runs codegen only at.instead of for each local workspace member.Expected behavior
all_packagesis documented to install every workspace member. Dagger codegen is documented to run for the package being built beforeuv sync, so every selected local Dagger member needs its generated SDK materialized.Actual behavior
Codegen paths are derived only from the explicit
packagelist. The normal empty list used withall_packages=Truefalls back to['.']before local members are discovered.Reproduction
Observed: expected
['packages/app-one', 'packages/app-two']; actual codegen visits['.'].The explicit
package=['app-one', 'app-two']control visits both member paths and passes.Impact
A pure workspace root can omit gitignored generated SDK sources before frozen sync, so an all-packages build can fail even though explicit selection of the same members works. A full Dagger container build was not run in this audit.
Root cause
uv/src/uv/workspace/plan.py:204-210computes codegen paths from explicit packages only, before_discover_local_packageshandlesall_packages.Suggested fix and regression test
When
all_packagesis true, derive and deduplicate codegen paths for all reachable local members. Preserve current explicit-package and bare-root behavior. Add a two-member pure-workspace regression plus explicit/default controls.Duplicate check
The full all-state tracker and actual open patches were inspected. Fresh searches covered
all_packages,dagger_codegen,UvSyncPlan.create, workspace member paths, generated SDKs, and skip/selection synonyms. PRs #2/#3 establish codegen necessity and PR #81 changes eligibility, but none addresses all-packages selection.