Parent: #884. The package resolver's Zig 0.18 collection and ownership migration covers explicitly registered graph edges and constraints. It does not make the version solver transitive.
Source-level reproduction: AdvancedDependencyResolver.resolve topologically sorts graph before choosing package versions. resolvePackage retrieves PackageRegistry.getDependencies only after selecting a version and copies those entries into ResolvedVersion.dependencies; it never adds those dependencies to the graph or constraints. Thus, if the project depends on a and the selected a version depends on b, b is absent from the returned solution unless the caller independently registered that edge. Candidate selection takes the first version satisfying the current local constraints and cannot backtrack when a later transitive constraint conflicts.
Acceptance:
- Expand dependency closure from each selected registry version and resolve every reachable package exactly once in the final result.
- Propagate all incoming constraints before accepting a version; backtrack or report a real conflict when version choices are incompatible.
- Preserve deterministic version preference, explicit project-root semantics, cycle reporting, and clear ownership across retries, allocation failures, and repeated resolution.
- Add public tests for transitive chains, diamond constraints, incompatible version branches, cycles, missing packages, and allocator-failure rollback. Run the standalone package and top-level package-manager test graphs on pinned Zig 0.17 and Zig 0.18 in Debug and ReleaseFast.
Do not count the collection/ownership migration as a completed package solver or relax dependency assertions to make the current implementation appear transitive.