--- name: loop-setup description: 합의된 목표·권한·예산을 이어받아 loop_setup/LOOP.md에 개발 루프를 준비한다. 루프 세팅 요청을 다루며 Loop 시작이 승인되면 질문 없이 구현·검증·복구·최종 보고까지 이어 간다. 기존 운영 조정은 loop-update로 다룬다. '루프로 완성해줘', '구현까지 진행해줘'처럼 실행을 요청하면 제품 Loop 계약(네 게이트·별도 세션 검증)을 위해 직접 구현하기 전에 사용한다. --- # 개발 루프 세팅과 실행 합의한 범위에서 기능을 완성하고 실제 증거로 검증하며, 중단돼도 같은 결정과 예산으로 재개하게 한다. ## 입력과 실행 전 합의 - 현재 코드·실행 환경, `plan_setup/PLAN.md`·관련 phase/task·`STATE.md`·`LOG.md`, `harness_setup/`을 읽는다. - `docs/PRD.md`의 `## 자율운영 합의`와 관련 요구·설계를 확인한다. 기존 결정·사용자 금지·남은 예산을 재사용한다. - 처음 진입하면 OS·셸·현재 도구·권한·외부 의존을 조사한다. 사용 가능한 CLI·브라우저·서브에이전트 기능은 도구 목록과 도움말로 확인한다. 호스트 제품명으로 기능 부재를 단정하지 않는다. - 사용자만 정할 목표/제외·선택 재량·허용 로컬 변경/복구·외부 접근/비용/데이터 경계·시간/사용량 상한·역할별 기본 모델과 한도 도달 시 처리·실행 환경·커밋/게시 권한·실패 대안을 Loop 전에 해소한다. 이미 정한 것을 다시 묻지 않고 미응답을 승인으로 읽지 않는다. 확정 답은 PRD 합의 절에 `(사용자)` 출처와 함께 남긴다. '답이 없으면 기본값으로 하겠다'는 식으로 확인을 생략하지 않는다. 답하지 않은 항목은 `(미정)`으로 두고 `(사용자)`로 적지 않는다. - 앞 단계 산출물(PRD·TRD·설계·계획·하네스)이 없거나 부족하면 이 스킬 안에서 한꺼번에 만들지 않는다. 빠진 가장 앞 단계 스킬부터 진행해 단계마다 결과 보고·진행 확인을 받고, 작은 제품은 각 산출물을 작게 유지한다. 사용자가 자기 말로 단계별 확인 생략을 지시했으면 요청에 필요한 최소 부분만 이어서 준비한다. 미해소 필수 결정·권한은 실행 전에 해소하거나 그 작업을 제외한 결과를 합의한다. - 문서/운영 계획만 요청하면 세팅으로 끝내고 Loop 시작을 제안한다. 그 밖에도 Loop 실행 전에는 준비 결과(실행 방식·병렬·검증·예산·남은 결정)를 보고하고 Loop 실행 여부를 사용자에게 확인한다. 사용자가 자기 말로 단계별 확인 생략을 지시했고 필수 디자인 승인이 충족됐을 때만 확인 없이 시작한다. '만들어줘'·'끝까지'나 사전 권한·예산 합의만으로는 생략하지 않고, 에이전트는 확인 생략이나 자동 진행을 먼저 권하거나 생략 방법을 안내하지 않으며, 그렇게 받은 선택도 근거가 아니다. 실행이 확인된 뒤에는 질문 없이 진행한다. 관련 UI 범위의 Loop 진입 전 디자인 정본에서 유효한 사용자 승인 근거·대상 버전·범위를 확인한다. 필요한 미리보기·최종 디자인 선택은 PRD 단계에서 먼저 확보한다. 승인이 없으면 임시 후보를 구현 기준선으로 쓰지 않는다. Loop 시작 전이면 실제 미리보기를 제시하고 결정을 요청한다. 사용자가 미뤘거나 응답할 수 없을 때만 영향 UI 태스크를 blocked로 두고 비화면 작업을 진행하며 미리보기·결정 요청을 보존한 미완료로 보고한다. '마지막에 모아서 묻기'는 승인 시점을 미룬 것이지 디자인 위임이 아니다. Loop 중 승인 범위 밖 새 결정이 필요하면 중간 질문·자체 승인 없이 영향 UI·의존만 차단하고 독립 작업을 계속한다. 미확정 미리보기·증거·재개 조건을 보존해 최종 미완료로 보고한다. ## 환경 선택과 실행 준비 실행 환경(Orca / 일반 환경 / Others 실제 도구명)은 사용자가 정한다. 사용자가 고른 근거가 있는 기존 선택(PRD 합의의 `(사용자)` 표시 등)은 보존한다. 출처 표시가 없거나 `(에이전트 기본값)`·`(미정)`인 환경은 선택으로 보지 않는다. 선택이 없으면 각 수단의 설치·사용 가능 여부(예: `orca` CLI)를 실제로 확인해 차이·추천과 함께 Loop 전에 묻는다. 기술·실행 위임이나 단계별 확인 생략은 실행 환경 선택이 아니며, 묻기 전에 한 환경을 골라 준비하지 않는다. OS·권한·도구·가용 메모리·기존 서비스·외부 의존을 조사하고 부담에 맞는 구성을 추천한다. 미확정 선택과 필요한 사전 안내/동의 → 허용 구성 → 실제 무인 실행 경로 시험 순서로 준비한다. Orca는 설치된 orca-cli·orchestration의 현행 스킬과 공식 CLI를 읽고 재사용한다. Others는 도구의 현재 지침·공식 문서·CLI와 출처를 확인하고 일반 환경은 실제 제공 수단을 사용한다. 누락 도구는 출처·준비 방법·변경 범위·대안을 안내하고 기존 허용 설치/설정은 재승인하지 않는다. 새 계정·비용·범위 밖 변경·사용자 로그인 등 필요한 동의는 Loop 전에 해소한다. 실제 경로의 시작·작업 폴더·모델/인증·허용 명령·상태·종료·완전한 결과 회수·독립 관찰 연결을 시험한다. 도움말·입력 접수·부모 권한만으로 무인 준비 완료를 선언하지 않는다. 자식 금지 시 시험을 강행하지 않고 미검증을 적는다. 현재 세션 밖 자동 지속/재시작은 실제 실행 기반이 확인된 범위만 약속한다. ## 배정·회수·통합과 안전 중단 매 배정마다 현재 통합·검증된 선행, 단독 소유권, 실제 파일·DB·포트·앱·설정 충돌, 가용 메모리·잔여 전체 예산을 확인한다. 정적 DAG 폭만으로 배정하지 않는다. 배정/선점과 공유 STATE·LOG 반영은 한 주체가 관리하고 실제 수정 범위 변경 시 충돌 판단을 갱신한다. 동시에 코드를 바꾸는 작업은 서로의 미완·보존 변경이 검사 대상에 섞이지 않는 위치에서 하며, 별도 작업 사본에는 미커밋 문서가 없을 수 있으니 문서 정본 위치를 알린다. 워커 수와 빌드·브라우저·컨테이너 등 무거운 작업의 동시 상한을 따로 정한다. 이름을 붙일 수 있는 실행 환경(Orca 워크트리·터미널 등)에서는 워커를 `phase-NN-task-MM-worker`(검증은 `phase-NN-task-MM-validation-worker`), 조정자를 담당 phase 기준 `phase-NN-coordinator`(여러 phase면 `phase-01-03-coordinator`처럼 범위)로 이름 짓는다. 서비스는 재사용하고 필요한 데이터/앱만 격리하며 Docker 사용 시 실제 설정에 자원 제한을 적용한다. 자원 부족 시 신규 배정·무거운 작업을 줄여 동시 수 1까지 축소한다. 타인 프로세스를 종료해 자원을 확보하지 않는다. 공유 DB 준비/초기화·마이그레이션·시드 명령과 실제 접속, 앱의 대상 코드/데이터 동일성·readiness를 확인한다. 포트 열림만으로 준비 완료를 판정하지 않으며 검증 중 앱/DB 교체를 막는다. 결과는 태스크·시도·대상 코드/미커밋 해시·환경·관찰 증거와 연결한다. 입력 접수·시작·종료·완전 회수를 구분한다. 늦거나 중복된 결과는 현재 배정/시도와 대조해 거부하거나 한 번만 반영한다. 대상 변경 시 영향 판정을 무효화한다. 개별 PASS는 통합 PASS가 아니다. 통합 뒤 영향 검사와 phase/프로젝트 수용 기준을 재검증한다. 한 워커 실패로 무관 작업을 세우지 않으며 종료 확인된 자리는 충돌 없는 작업에 재사용한다. 조용함만으로 사망을 단정하지 않지만 합의 기한은 살아 있는 작업에도 집행한다. 기한/사용자 중단 시 신규 배정을 멈추고 소유권·동일성을 확인한 자기 작업만 안전 중단·종료 확인·회수한다. 종료 불명은 점유/미확인을 기록하고 종료 확인이나 격리 없이 중복 실행하지 않는다. 이름·오래된 PID만으로 정리하지 않는다. ## 지속 기록과 새 세션 재개 작업 시작과 중요한 코드/문서·검증·분석·배정/반영·중단 전환마다 대상 문서·태스크·STATE·LOG를 증분 저장한다. STATE는 급작스러운 중단 뒤 원 대화 없이 안전하게 재개하기 위한 기록이다. 태스크·git에서 다시 얻을 수 없는 진행 중 실행자·작업 폴더·기준 코드·미반영 결과·누적 시도/전략·사용/잔여 예산 참조·다음 행동을 담고, 상태 전이를 기록하는 저장·커밋에 그 시점의 STATE를 함께 포함한다. LOG는 누적 이력이며 요약으로 원기록을 지우지 않는다. 채택 로그·이미지·트레이스·코드 식별은 비밀값 없이 지속 경로에 보존한다. 임시 경로만 남기지 않으며 기록 갱신 중 중단돼도 이전 기록과 불완전한 갱신을 구분한다. 원 대화 없는 새 세션은 LOOP·STATE·관련 기록과 실제 코드·미커밋 변경·살아 있는 실행자·미반영 결과를 대조한다. 기존 합의·누적 시도/전략·전체 사용 예산을 계승하고 유효성을 확인한 다음 행동부터 재개한다. 완료 작업 재구현·생존 작업 중복 실행·미관찰 PASS 추정을 금한다. 자동 재시작과 기록 기반 재개는 별도로 확인한다. 기획/문서만 요청도 해당 문서에 현재 단계·확정/미결·다음 행동을 남기되 전체 Loop를 새로 강제하지 않는다. ## 최소 산출물 `loop_setup/LOOP.md`에 아래를 이 프로젝트의 실제 값과 문서 참조로 짧게 쓴다. - PRD 합의 위치, 허용/금지 경계와 예산 추적 위치, 실제 실행 수단과 작업 주체. - 실제 사용하는 역할별 모델·추론 강도·허용 대체 범위와 확인한 사용값을 한 곳에 기록한다. 다른 문서는 이를 참조한다. 기존 합의·위임·예산 안에서 선택하며 기본값 상속·미지원·미확인은 구분해 적고 조용히 대체하지 않는다. 기록을 위해 새 역할이나 질문을 만들지 않는다. - 작업 선택·구현·검증·복구·완료/미완료 판정 방법, 동시 작업 상한과 필요한 충돌 방지. - 상태 기록 위치, 중단 후 재개 순서, 복구를 중단할 조건과 최종 보고에 남길 증거. `plan_setup/STATE.md`에는 현재 작업·다음 행동·차단·잔여 예산·재개 지점을 보완한다. 태스크 상태가 완료 판정의 정본이며 STATE는 재개 기록이다. 이력과 실제 실행 증거는 `plan_setup/LOG.md`에 남긴다. 기존 `Retry`·`Standing Decisions`·배정 정보가 있으면 이력·유효 범위·만료를 보존해 읽는다. 경로·ID·절 참조·사용자 변경·완료 작업을 초기화하지 않는다. 현재 세션으로 충분하면 직접 이어 실행한다. 기존 도구·CLI·Orca 실행 수단을 우선 사용한다. 구동 스크립트나 `loop_setup/DAG.md`는 실제 반복 비용을 줄일 때만 둔다. 프로젝트마다 범용 구동기·감시·상태판·질문/답변 플랫폼을 생성하지 않는다. 루트 지침은 후속 세션이 LOOP·STATE를 찾도록 필요한 포인터만 보완한다. ## 실행 사이클 1. LOOP·STATE와 관련 태스크를 읽고 진행 중 변경·실행 주체·기존 증거를 확인한다. 태스크와 STATE가 어긋나면 실제 변경과 검증 이력을 대조해 태스크 정본에 맞추고 복구 이유를 기록한다. 2. `depends_on`이 완료되고 차단 근거가 해소된 작업을 고른다. 순환·미존재 참조는 원인을 조사해 합의 안에서 고친다. 차단이 해소됐으면 관련 문서·`blocked_by`·상태·하네스 대상도 함께 맞춘다. 3. 시작을 `in_progress`로 기록하고 기능을 구현한다. `files`는 예상 범위다. 합의 안의 관련 코드·테스트·하네스·문서 수정은 이유를 남기고 포함한다. 4. 태스크 `verification`과 하네스의 현재 정의에서 필요한 검사·실제 명령/관찰을 읽고 실행한다. 변경 영향에 맞춰 검사하며 작업 묶음 끝에는 통합 결과를 확인한다. 5. 실패를 분류하고 아래 복구 원칙으로 수정·재검증한다. 중요한 상태 전이마다 변경·판정·잔여 예산을 기록한다. 6. 수용 기준과 필요한 회귀 검사가 입증됐을 때만 `completed`로 기록하고 STATE·LOG를 맞춘다. phase/프로젝트도 소속 작업과 묶음 수용 기준으로 판정한다. 유효한 범위 결정으로 정식 폐기한 작업은 기록·색인·의존을 맞춘 뒤 집계 대상에서 제외한다. 폐기는 PASS가 아니며 실패·차단·미검증을 완료나 임의 폐기로 처리하지 않는다. 7. 요청 범위가 끝나거나 더 진행할 수 없을 때까지 다음 작업을 이어 간 뒤 최종 결과를 보고한다. ## 검증과 작업 단위 - 제품 Loop는 `lint → unit → e2e → task_validation` 판정 순서를 유지한다. `harness_setup/quality_gates/`의 네 정의와 HARNESS·태스크 verification 연결을 확인하고 누락은 복구한다. 앞 실패 복구 전 뒤의 완료 판정을 열지 않는다. 현재 코드·설정·의존성·데이터 조건과 영향이 같은 근거가 있는 결과는 재사용하고 같은 코드 상태 태스크를 묶어 검사할 수 있으나 각 수용 기준의 태스크별 대응을 남긴다. 검증 전 completed 처리나 후행의 완료 선행 사용을 금한다. 준비 미활성은 PASS가 아니며 준비 증거와 후속 활성 담당/시점을 연결한다. 문서·세팅만 요청과 작은 독립 수정에는 전체 Loop를 강제하지 않는다. 기존 Loop의 작업 범위에 속하는 제품 변경은 계약을 계승한다. LOOP.md의 존재만으로 새 독립 요청을 편입하지 않으며 현재 요청·유효한 합의·태스크 연결로 범위를 판단해 기록한다. 사용자 명시 기본값 변경·자식 금지가 우선하며 보장 변경과 미검증을 기록한다. - 모든 게이트의 판정 중 제품 소스·수용 기준·통과 단언을 자동 수정하지 않는다. 수정은 구현 단계에서 수행하고 영향받은 판정을 무효화해 재검증한다. 기준을 바꾸지 않는 허용된 테스트 데이터 준비는 가능하다. - 화면은 브라우저/실행 E2E, 비화면은 적합한 HTTP·CLI·DB로 실제 관찰한다. 중요한 실패 경로도 확인한다. 코드 작성·명령 종료 코드 0·테스트 0건·전부 skip·미활성·서비스 미실행은 기능 완료 증거가 아니다. 제품 최종 완료는 필요한 네 게이트와 포함 범위 수용 기준의 실제 증거로 닫는다. - task_validation은 해당 변경을 구현하지 않은 비상속 별도 세션이 맡는다. 같은 모델도 가능하나 구현 대화·추론·자체 통과 결론을 상속한 자식이나 같은 세션 역할 변경은 독립 검증이 아니다. 구현 태스크마다 새 세션은 요구하지 않는다. 요구·수용 기준·필요 설계·대상 코드 식별·환경/접속·허용 데이터/권한·잔여 예산을 주며 코드/diff 열람은 허용한다. 운영 제약은 필요한 절만 전달하고, 구현 추론·자체 판정이 담긴 STATE/LOG 전체를 검증 입력으로 넘기지 않는다. 검증자는 제품·수용 기준·통과 단언을 수정하지 않는다. 직접 수정한 변경은 다른 독립 검증자가 판정한다. 실제 관찰의 기준별 PASS/FAIL·환경 문제/판정 불가·재현 증거를 완전히 회수한다. 테스트 재실행·코드 리뷰·구현자 보고로 대체하지 않는다. - 독립·준비된 작업은 병렬 기본이며 배정 조건과 사용자 상한을 적용한다. - 커밋·병합·게시·데이터 초기화는 기존 권한 범위에서만 한다. 사용자 변경을 덮거나 권한을 우회하지 않는다. ## 질문 없는 복구와 종료 Loop 시작 후 사용자 질문·재승인·수동 명령/새 세션 요청은 0회다. 후속 세션도 같은 합의와 잔여 예산을 이어받는다. 실패는 코드 결함·검사/문서 불일치·환경·흔들림·판정 불가로 가르고 원인에 맞게 고친다. 합의 안의 기술·설계·계획·하네스 조정은 영향 있는 앞 문서부터 맞춰 계속한다. 필요한 스킬이 자동 호출되지 않으면 해당 지침을 읽고 직접 절차를 이어 수행한다. 같은 방식의 수정은 3회 이내, 진전이 없으면 더 일찍 자율 심층 분석으로 전환한다. 실패 관찰·가설·수정 결과 대조 → 원인 조사/가설 구분 실험 → 근거 있는 다른 전략과 관찰 방법 기록 → 전체 예산 안에서 계속한다. 3회는 자동 실패나 사람 질문 기준이 아니다. 이름만 바꾼 같은 조치·검사 약화(대상 축소·재실행으로 통과 만들기 포함)는 새 전략이 아니다. 제품/환경 실패·워커 시작 실패·불완전 결과·흔들림·통합 실패를 구분해 복구한다. 세션 교체·실패 분류·태스크 분할·하네스 변경에도 누적 시도·분석·전략·전체 사용 예산을 초기화하지 않는다. 부모·자식·대기·복구·통합·종료/결과 회수 여유를 포함한 집행 가능한 전체 시간 상한을 관리한다. 토큰/비용 미측정은 미확인이며 정확한 잔여 비용을 주장하지 않는다. 검증이 끊기거나 결과가 불완전하면 성공으로 읽지 않고 실제 실행 상태를 확인한 뒤 예산 안에서 복구한다. 다른 실행 주체의 생존은 실제 상태와 증거로 판단하고 조용하거나 오래 걸린다는 이유만으로 종료·중복 실행하지 않는다. 새 사용자 결정·권한 없이는 못 하는 작업과 그 의존 작업만 차단하고 독립 작업을 계속한다. 질문 파일이나 사람 응답 대기를 남기지 않는다. 전체 예산 소진·필수 권한 부재와 대안 없음·분석 후 실행 경로 없음일 때만 근거를 남기고 변경을 보존한 최종 미완료로 종료한다. 사용자가 자동 재시작을 합의하지 않았으면 부모(조정) 세션이 끊길 때 자동 재시작·이어 실행 없이 중단한다. 사용자가 다시 부르면 기록과 워커 실제 상태를 확인해 재개한다. STATE·LOG와 최종 보고에 완료/미완료 범위·실행 증거·실패 원인·시도·잔여 예산·재개 명령/조건을 남긴다. 새 직접 지시가 오면 합의와 남은 작업에 반영하되 과거 실패를 성공으로 바꾸지 않는다. ## 완료 증거와 환경 참고 세팅 완료는 실제 실행 수단·검증 전제·재개 경로가 확인된 상태다. 제품 완료는 실제 수용 기준 충족으로 별도 판정한다. 실행 요청은 구현·복구까지 수행한 결과와 미검증 한계를 보고한다. 문서 생성이나 질문 없는 실패를 완성으로 세지 않는다. 환경 차이가 관련될 때만 [Claude Code](references/claude-code.md), [Codex](references/codex.md), Orca를 실제 사용할 때만 [Orca](references/orca.md)를 읽는다.