Skip to content

feat(scheduler): 같은 repo 비의존성 이슈 워크트리 병렬 실행 (INT-1975)#152

Merged
unohee merged 1 commit into
mainfrom
feat/same-project-concurrent
Jun 27, 2026
Merged

feat(scheduler): 같은 repo 비의존성 이슈 워크트리 병렬 실행 (INT-1975)#152
unohee merged 1 commit into
mainfrom
feat/same-project-concurrent

Conversation

@unohee

@unohee unohee commented Jun 27, 2026

Copy link
Copy Markdown
Owner

문제

워크트리 격리(FS)·KG 파일충돌 감지·blockedBy 의존성 게이트가 이미 구현돼 있지만, TaskSchedulerallowSameProjectConcurrentautonomousRunner.ts에 하드코딩 false라서 같은 repo의 비의존성 이슈가 직렬화됨. 라이브 config가 worktreeMode:true, maxConcurrentTasks:6인데도 한 repo는 heartbeat당 1개씩만 처리.

해결

  • allowSameProjectConcurrent를 config 스키마로 노출 (기본 ON, default true).
  • 안전 가드: worktreeMode가 꺼져 있으면 강제 무시 + warn. 공유 워킹트리 동시 변경 손상 차단. 가드는 두 플래그를 모두 가진 TaskScheduler 생성자(단일 지점)에 배치.
  • autonomousRunner는 config 값을 그대로 전달, 안전성은 스케줄러 가드가 보장.

기존 안전망(KG 파일충돌 감지 → 같은 모듈 수정 이슈 defer, blockedBy 의존성 게이트)은 그대로 유지되어 "비의존성 + 비충돌" 이슈만 병렬 진입한다.

검증

  • 신규 단위 테스트 4건: 기본 직렬화 / 플래그+worktree 병렬 허용 / worktree 없을 때 force-disable+warn / getNextExecutable 같은 repo 2개 디스패치.
  • npm test 전체 1175 통과, tsc 0 error.

🤖 Generated with Claude Code

allowSameProjectConcurrent를 config로 노출(기본 ON)하고, worktreeMode가
꺼져 있으면 강제 무시하는 가드를 TaskScheduler 생성자에 추가. 워크트리
격리 없이 공유 워킹트리를 동시 변경해 손상시키는 경우를 차단한다.

- core/types.ts, runnerTypes.ts: allowSameProjectConcurrent 필드
- core/config.ts: 스키마(default true) + 빌더 carry-through
- taskScheduler.ts: worktreeMode 없으면 force-disable + warn 가드
- autonomousRunner.ts: 하드코딩 false → config.allowSameProjectConcurrent ?? true
- 단위 테스트 4건(직렬화 기본·병렬 허용·가드·getNextExecutable)
@unohee unohee merged commit bbae789 into main Jun 27, 2026
9 checks passed
@unohee unohee deleted the feat/same-project-concurrent branch June 27, 2026 02:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant