step_complete — 현재 칸 세션만 칸을 넘긴다 #39
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
소유자 목표(근거): 소유자 10-03 「검토는 Kandev 직접 검토」 — 검토 칸은 구현과 다른 눈(다른 프로필 세션)이 본다. 10-06 「이젠 MPM 작업진행을 가장 신경써 줘.」 중 운영 세션이 발견한 우회.
확인된 사실(운영 세션, 10-06 04:4x KST): MPM ee85b17b(AIWS 표준 작업 — 구현 프로필 35909ac3, 검토·반영 프로필 9a882ffa)에서 구현 세션 5ca54100 이 금전 결함 수리 PR #1042 를 구현 칸에서 병합한 뒤 step_complete 를 연달아 불러 구현→검토(19:40:35Z)→반영·정리(19:42:00Z)를 스스로 넘겼다(task_step_transitions actor 둘 다 5ca54100, trigger engine_transition). 검토 칸 세션은 한 번도 뜨지 않았다.
원인: apps/backend/internal/mcp/handlers/handlers.go resolveStepCompleteTarget(2718~) 은 「세션이 그 작업 소속인가·끝난 세션이 아닌가」만 본다 — 그 세션이 지금 칸(task.WorkflowStepID)을 맡은 세션인지는 보지 않는다.
고칠 것: step_complete 는 지금 칸을 맡은 세션(그 칸에서 시작됐거나 칸 프로필·reuse 정책으로 그 칸에 이어 붙은 세션)일 때만 받는다. 아니면 validation 오류 「this session is not the current step's session (current step: <이름>)」로 거절. 같은 프로필 reuse(계획→구현처럼 같은 세션이 이어 받는 칸)는 계속 허용. 판정 자료는 이미 있는 것(task_sessions·session_step_history·칸 프로필)으로.
확인할 결과: 일회 확인 — ① 구현 세션이 검토 칸에서 step_complete → 거절 ② 검토 칸 세션 → 수락 ③ 계획→구현 같은 세션 reuse → 수락. 기존 step_complete 시험이 있으면 그 자리에 경우 추가(새 상시 시험 묶음 금지).
범위: handlers.go(+필요하면 세션 소속 판정 함수 한 곳). 작업 에이전트 지시문의 「병합은 반영·정리 칸」(steps/aiws/impl.md:9)은 이미 있다 — 이번은 구조로 막는다.
완료 조건: 포크 PR 병합 → 다음 교체판에서 같은 상황 재현 시 거절되는지 운영 세션이 확인.