iop/agent-task/cli_terminal_cycle/plan_5.log
toki 1176ed844f fix(cli): add START_MARKER assertion and fix Stop comment (REVIEW_REVIEW_API_FOLLOWUP_4)
- 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
2026-05-03 16:02:37 +09:00

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 ./...
```