공학

아무도 원하지 않는 작업인 포크 유지 관리 자동화

포크를 유지 관리하는 것은 화려하지 않고 완료되지 않으며 조용히 비용이 많이 듭니다. 또한 상담원에 대한 열정이 제시하는 것보다 드물게 상담원에게 적합한 작업을 만드는 속성도 정확하게 갖추고 있습니다.

Yaju 팀 · 2026년 5월 21일

상당한 소프트웨어를 실행하는 대부분의 조직에는 갖고 싶지 않은 포크가 하나 이상 있습니다. 업스트림 요구 사항에 대해 패치된 라이브러리는 사용되지 않습니다. 로컬 수정이 포함된 공급업체 종속성입니다. 3년 전에 누구도 완전히 설명할 수 없는 이유로 갈라진 일이 있었습니다.

최신 상태를 유지하는 작업은 중요하지만 결코 긴급하지 않은 작업의 정의입니다. 즉, 죄책감이 폭발적으로 발생한다는 의미입니다.

이 작업이 적합한 이유

제안된 대부분의 에이전트 작업은 세 가지 테스트 중 하나에 실패합니다. 이것은 모두 통과합니다.

잘 명시되어 있습니다. 업스트림 변경 사항을 가져와 알려진 로컬 수정 사항이 있는 트리에 적용하고 기계적 충돌을 해결하고 테스트를 실행합니다.

자연스러운 리뷰 포인트가 있습니다. 출력은 풀 요청(Pull Request)이며, 이를 검토하는 것은 이미 엔지니어가 수행하는 작업입니다.

그것은 제한되어 있습니다. 정의된 업스트림 커밋 세트와 정의된 트리가 있으므로 에이전트가 무한정 이동할 수 없습니다.

이를 세 가지 모두 실패하는 "고객 문의 처리"와 비교하면 결과의 차이가 신비롭지 않습니다.

상담원이 해야 할 일과 하지 말아야 할 일

기계적 변경 사항을 적용하고, 변경 구조에 따른 해결 방법으로 충돌을 해결하고, 테스트 스위트를 실행하고, 수행한 작업과 해결된 충돌 및 방법에 대한 설명을 작성해야 합니다.

실패한 테스트가 허용 가능하다고 결정하거나, 충돌했기 때문에 로컬 수정 사항을 조용히 삭제하거나 도중에 발견한 리팩터링을 포함하도록 범위를 넓혀서는 안 됩니다.

마지막 것은 들리는 것보다 더 중요합니다. 개선이 요청되지 않은 사항을 개선하는 에이전트는 교체한 작업보다 검토하기 어려운 풀 요청을 생성합니다.

진짜 어려움은 어디에 있는가

패치를 적용하는 중이 아닙니다. 어떤 로컬 수정 사항이 하중을 지탱하는지 파악합니다.

포크는 변경 사항을 축적하며, 그 중 일부는 고의적이며 일부는 아무도 제거하지 못한 사고입니다. 에이전트는 코드만으로는 차이점을 알 수 없으며 의도적인 변경 사항을 조용히 폐기하는 충돌 해결은 가장 많은 비용이 드는 실패입니다.

완화는 의도에 대한 문서입니다. 각 로컬 수정이 존재하는 이유에 대한 기록이 포크와 함께 유지됩니다. 이를 갖춘 조직은 훨씬 더 나은 결과를 얻을 수 있으며 이를 작성하는 연습은 일반적으로 그 자체로 가치가 있습니다.

평가하기

유용한 기준은 구체적입니다. 테스트 스위트를 통과했습니까? 모든 로컬 수정 사항이 보존되었거나 이유와 함께 삭제된 것으로 명시적으로 표시되었습니까? 범위가 업스트림 변경으로 제한되었습니까? 차이점에 대한 설명이 정확합니까?

이러한 항목은 모두 자동으로 확인 가능하므로 사람이 모든 실행을 동일한 주의를 기울여 검토하는 대신 평가자가 모든 실행에 점수를 매길 수 있습니다.

솔직한 결과

작업이 제거되지는 않습니다. 하루의 기계적 노력을 검토하는 시간으로 변경하고, 케이던스를 가끔이 아니라 규칙적으로 만들어 대부분의 이점이 있습니다. 작고 빈번한 병합은 연간 따라잡기보다 훨씬 쉽습니다.

다음

Software Factory 페이지에서는 백로그 작업이 검토 준비 풀 요청이 되는 방법을 다룹니다. 에이전트 오케스트레이션 시스템 페이지에서는 평가, 정책 및 비용 귀속을 다룹니다.