b5e961ebe9
- Reuse valid deterministic git mount clones on repeated starts - Remove incomplete clone destinations before retrying - Add regression coverage for cached and partial clones - Document OpenSpec change fix-config-profile-git-mount-clone-reuse Quality gates: pytest (13 passed), ruff, mypy
1.3 KiB
1.3 KiB
Fix config profile git mount clone reuse
Problem
Starting a tool instance with a Config Profile git mount can omit the mount when the repository was already cloned into the instance cache. The startup log reports that the destination path already exists and is not an empty directory.
Root cause
clone_git_repo() computes a deterministic cache directory but calls clone_repository() before checking whether that directory already contains a clone. git clone therefore fails on repeated starts or overlapping start requests. resolve_single_git_mount() treats auxiliary mount failures as non-blocking, so startup continues without the configured volume.
Required behavior
- A valid existing git mount clone must be reused and updated instead of cloned again.
- A missing clone must still be created normally.
- An incomplete clone directory must not permanently prevent a later retry.
- A clone/update failure remains non-blocking at the git mount resolver boundary.
Scope
- Correct clone-cache handling in
apps/api/src/services/tool/instance_service.py. - Add focused regression tests in
apps/api/tests/unit/test_instance_service.py. - No API, database, frontend, or Docker Compose contract changes.
Verification
- Targeted
pytestfor git mount clone reuse and instance service tests. - Ruff and mypy checks for changed backend files.