Discover before deciding
Repository discovery extracts project metadata, lock state, source imports, and stable fingerprints. The graph records explicit relationships between repositories, manifests, modules, packages, and resolved versions.
Native CLI implementation
From an unknown repository to a reversible environment.
A local dependency-intelligence engine for Python repositories, implemented in Rust. Converge discovers manifests, lockfiles, and imports; constructs typed evidence; produces deterministic repair actions; validates a candidate in a temporary copy; and applies changes with snapshots and undo.
Dependency repair is a state transition, not just an install command. The interesting problem is preserving the relationship between evidence, a proposed edit, the exact candidate that passed validation, and the host files that are finally changed.
Repository discovery extracts project metadata, lock state, source imports, and stable fingerprints. The graph records explicit relationships between repositories, manifests, modules, packages, and resolved versions.
Diagnostics cite source locations and confidence. The planner creates typed AddDependency and lockfile actions for mapped missing dependencies, preserves existing version intent, and derives an ID from evidence and actions.
A temporary repository copy receives the candidate edits. Tool invocations use structured arguments, then uv generates or checks the lock and performs a frozen sync dry run according to the plan’s verification contract.
The executor rechecks the fingerprint under a repository lock, snapshots affected files, uses atomic file replacement, and stores a receipt. Undo reads the recorded prior state rather than guessing an inverse patch.
The host mutation boundary sits after isolated checks and a fresh fingerprint.
Model missing imports, how many have supported distribution mappings, and a repository edit after planning. Watch which actions are justified and when application must stop.
Illustrative evidence accounting; “known mappings” summarizes coverage and is not a configurable source-code confidence threshold. No packages are installed or files changed.
Known import-to-distribution mappings justify declaration edits. An unused-dependency warning acknowledges dynamic or plugin use, so missing static imports alone do not justify silently deleting a dependency.
The temporary candidate, verification report, and live fingerprint form distinct boundaries. The executor can reject a stale plan even if its earlier sandbox checks passed.
uv remains the Python resolver and environment backend. Converge owns evidence, typed planning, isolated checks, host application, and recoverable snapshots around that resolver.
Implementation details, examples, and project documentation.
Cited diagnostics, ordered actions, plan hashing, and the concrete current repair scope.
Temporary candidate preparation and structured uv verification.
Report validation, stale fingerprint refusal, snapshots, replacement, and undo.
Explicit evidence nodes and deterministic edges.
Architecture and descriptions reflect the linked repository snapshot. The playground explains a mechanism; it does not execute the repository or report measured performance.