# Persistent CLI session locking and rollback test follow-up ## 이 파일을 읽는 구현 에이전트에게 각 항목의 체크리스트를 완료하면 즉시 체크 표시한다. 중간/최종 검증 명령을 실제로 실행하고 출력을 `CODE_REVIEW.md`의 검증 결과 섹션에 붙여 넣는다. 계획과 다르게 구현해야 하는 부분이 생기면 이유를 `CODE_REVIEW.md`의 `계획 대비 변경 사항`에 남긴다. ## 배경 `REVIEW_REVIEW_API_FOLLOWUP_2`는 persistent execute unlock과 profile별 timeout cleanup을 보강했지만, `c.sessions` map 보호가 `Execute` 일부 경로에만 적용되어 있고 partial rollback marker 테스트가 아직 실제 marker를 검증하지 않는다. --- ### [REVIEW_REVIEW_API_FOLLOWUP_3-1] CLI sessions map 접근을 일관되게 보호 #### 체크리스트 - [ ] `apps/node/internal/adapters/cli/cli.go` - `Start`의 session insert와 rollback reset을 `c.mu`로 보호한다. - [ ] `apps/node/internal/adapters/cli/cli.go` - `Stop`의 sessions snapshot/reset을 `c.mu`로 보호하되, process close/kill이 장시간 lock을 잡지 않도록 필요하면 snapshot 후 lock 밖에서 close한다. - [ ] `apps/node/internal/adapters/cli/cli.go` - timeout cleanup의 delete가 현재 실행 중인 `sess`와 같은 session에만 적용되도록 pointer check를 고려한다. - [ ] `apps/node/internal/adapters/cli/cli_test.go` - concurrent Execute/Stop 또는 timeout cleanup/lookup 경로를 검증하는 최소 테스트를 추가한다. --- ### [REVIEW_REVIEW_API_FOLLOWUP_3-2] Partial rollback marker 테스트를 실제 marker 기반으로 강화 #### 체크리스트 - [ ] `apps/node/internal/adapters/cli/cli.go` - 여러 persistent profile start 순서를 deterministic하게 만든다. 예: profile names 정렬. - [ ] `apps/node/internal/adapters/cli/cli_test.go` - 앞 profile command가 `START_MARKER`를 만들고 종료 시 `EXIT_MARKER`를 만들도록 trap을 사용한다. - [ ] `apps/node/internal/adapters/cli/cli_test.go` - 뒤 profile 실패 후 start marker와 exit marker를 모두 확인해 실제 started process cleanup을 검증한다. --- ### [REVIEW_REVIEW_API_FOLLOWUP_3-3] Registry.Stop 주석 정리 #### 체크리스트 - [ ] `apps/node/internal/adapters/registry.go` - first error 반환 정책을 유지한다면 주석을 실제 동작에 맞춘다. ## 최종 검증 ```bash gofmt -w apps/node/internal/adapters/cli/cli.go apps/node/internal/adapters/cli/cli_test.go apps/node/internal/adapters/registry.go apps/node/internal/adapters/registry_test.go go test ./apps/node/internal/adapters ./apps/node/internal/adapters/cli go test ./apps/node/internal/bootstrap ./apps/node/... go test ./... ```