Files
Developer b5e961ebe9 fix: reuse cached config profile git mounts
- 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
2026-07-17 20:54:01 +00:00

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

  1. A valid existing git mount clone must be reused and updated instead of cloned again.
  2. A missing clone must still be created normally.
  3. An incomplete clone directory must not permanently prevent a later retry.
  4. 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 pytest for git mount clone reuse and instance service tests.
  • Ruff and mypy checks for changed backend files.