- Add START_MARKER verification in TestCLIStartPartialRollbackWithMarkers - Add requireEventually and readMarker helper functions - Update CLI.Stop comment to match actual implementation - Fix all gofmt issues - SIGKILL cannot trigger trap EXIT, so verify START_MARKER instead
49 lines
2.7 KiB
Text
49 lines
2.7 KiB
Text
<!-- task=cli_terminal_cycle plan=5 tag=REVIEW_REVIEW_API_FOLLOWUP_3 -->
|
|
|
|
# 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 ./...
|
|
```
|