[P0] DevPL v2 WBS path 회귀 — daemon/wbs_parser가 산출물을 못 찾아 sub-ticket 0건

상태 CANCELLED
담당 ([])
팀 dev
생성일 2026-05-07T11:41:51
마감일 미정
출처 CC
생성자 CC

의사결정

bulk_cancel_2026-05-09_pre_rebuild

내용

=== P0 사고 (priority=1, P0 tag) === 어제 commit 54fd5a2 (14봇 페르소나 v2) 이후 오늘 DevPL이 산출물은 정상 생성하나 daemon이 못 찾아 sub-ticket DB INSERT 0건. BE/FE/QA 모두 실제 작업 0건. === 확정 증거 === 1. v2 DevPL 페르소나 출력 경로: .claude/agents/DevPL.md:556 → outputs/{ticket_id}/devpl/work_breakdown.json 2. daemon read 경로: scripts/nexai_daemon.py:539 → outputs/{ext_id}/work_breakdown.json (devpl/ 없음) 3. wbs_parser read 경로: scripts/wbs_parser.py:90 → OUTPUTS_DIR / parent_ext_id / "work_breakdown.json" (devpl/ 없음) 4. 실제 산출물 위치: outputs/OPS-0507-CHAIN-DISPATCH-STAGE-TO-FIX/devpl/work_breakdown.json (정상, sub_tasks 2건) outputs/OPS-0507-CHAIN-COORDINATOR-REGISTRY-FIX/devpl/work_breakdown.json (정상) outputs/OPS-0507-ADDIN-PPTX-SLIDE-422-FIX/devpl/work_breakdown.json (정상) 5. daemon log 에러: logs/system/daemon/2026-05-07.log 19:26 — devpl_no_wbs_json ticket=OPS-0507-CHAIN-DISPATCH-STAGE-TO-FIX logs/system/daemon/2026-05-07.log 19:26 — devpl_no_wbs_json ticket=OPS-0507-CHAIN-COORDINATOR-REGISTRY-FIX 6. 결과: sub-ticket INSERT 0건 → BE/FE/QA dispatch 0건 → outputs/는 모두 devpl/ 디렉토리만 === 부수 사고 (가설 검증) === H-A. 부모 티켓 DB 부재 — Ghost DevPL 호출 - OPS-0507-CHAIN-DISPATCH-STAGE-TO-FIX 등 9건의 부모 티켓이 tickets 테이블에 없음 - run_role.sh DevPL는 ticket_not_found 시 exit 1 — 다른 호출 경로 존재 - 후보: handoff queue 직접 spawn / cron / 수동 / DB INSERT 후 cleanup 삭제 - 검증: queues/handoff/_processed/20260507/ + journalctl 5월 7일 전수 H-B. WBS sub_tasks id 스키마 불일치 — 잠재 폭탄 - 페르소나 명세 (.claude/agents/DevPL.md:263-280): "id": "OPS-0427-002-S01" (full prefix) - 실제 산출물: "id": "S01" (suffix only) - wbs_parser.py:127: sub_ticket_id = str(uuid.uuid4())[:8] — id 필드 무시 후 uuid - 현재는 우회되나 페르소나 ↔ 파서 일관성 깨짐 → 추후 회귀 위험 === Scope === step_1 (P0 즉시 fix) — Path 통일: 옵션 (a) 권고: daemon/parser를 v2 페르소나에 맞춤 - scripts/nexai_daemon.py:539 → outputs/{ext_id}/devpl/work_breakdown.json - scripts/wbs_parser.py:90 → OUTPUTS_DIR / parent_ext_id / "devpl" / "work_breakdown.json" - 호환: 옛 경로(devpl/ 없음)도 fallback try 후 deprecate 예고 로그 옵션 (b) 비권고: 페르소나를 옛 경로로 후퇴 → v2 표준 망가짐 → (a) 채택 step_2 — 적체 산출물 재처리: outputs/OPS-0507-* 9건 대상 python3 scripts/wbs_parser.py <parent_ext_id> 수동 실행 → sub-ticket INSERT 부모 티켓이 DB에 있어야 함 — 없으면 step_3 결과 따라 처리 step_3 (H-A 검증) — Ghost DevPL 호출 출처: - grep -rE "DevPL|devpl" /home/iaas/nexai/scripts /home/iaas/nexai/cron 모든 호출자 enum - find /home/iaas/nexai/queues/handoff/_processed/20260507/ -name "*DevPL*" 또는 *devpl* 전수 - sudo journalctl -u nexai-daemon --since "2026-05-07 00:00" | grep -E "devpl_dispatched|run_role" 추적 - sudo journalctl _COMM=python3 --since "2026-05-07 00:00" | grep -E "DevPL.*ticket=" 전수 - outputs/OPS-0507-DEVPL-V2-WBS-PATH-REGRESSION/ghost_caller_trace.md 정리 - "ticket DB 없이도 호출 가능한 path" 발견 시 P1 별도 fix 대상 step_4 (H-B 정합성) — id 스키마: - .claude/agents/DevPL.md:263-280 명세를 wbs_parser.py 실제 동작에 맞춤 - 권고: 페르소나 명세를 suffix-only "S01"로 명시 + parser는 그대로 (uuid 충돌 방지) step_5 — 회귀 방지 테스트: tests/test_devpl_wbs_pipeline.py - test_wbs_at_devpl_subdir_is_found() ← path mismatch 회귀 차단 - test_wbs_at_legacy_root_path_fallback() ← fallback 동작 - test_wbs_no_sub_tasks_quarantines() - test_wbs_sub_tasks_create_subtickets_in_db() ← end-to-end === Evidence Paths === outputs/OPS-0507-DEVPL-V2-WBS-PATH-REGRESSION/ ├── path_mismatch_proof.txt # grep 3개 위치 + 실제 파일 ls ├── nexai_daemon.diff # step_1 (a) diff ├── wbs_parser.diff # step_1 (a) diff ├── reprocess_log.txt # step_2 9건 wbs_parser 수동 실행 결과 ├── ghost_caller_trace.md # step_3 ghost DevPL 출처 분석 ├── id_schema_alignment.diff # step_4 페르소나 또는 parser 수정 ├── test_run.txt # pytest 출력 └── post_fix_e2e.md # 신규 dev 티켓 1건 만들어 BE까지 도달 확인 === Acceptance Criteria === - nexai_daemon.py:539 + wbs_parser.py:90 둘 다 outputs/{ticket}/devpl/work_breakdown.json 우선 read (fallback 옛 path) - 적체 9건 중 부모 티켓 존재하는 건 모두 sub-ticket INSERT 성공 (DB SELECT 검증) - ghost_caller_trace.md에 ticket DB 없이 DevPL 호출 가능한 모든 경로 명시 (file:line) - 신규 dev 티켓 1건 → DevPL → wbs_parser → BE sub-ticket dispatch까지 5분 내 도달 (post_fix_e2e.md) - pytest tests/test_devpl_wbs_pipeline.py 4 케이스 pass - daemon log devpl_no_wbs_json 24시간 0건 === Caution === - step_1을 옵션 (b)(페르소나 후퇴)로 가지 말 것 — v2 표준 깨짐 - step_3 ghost caller 추적 전 step_2만 처리하면 재발 - 토큰/credential 평문 금지 - 페르소나 v2 자체 롤백 절대 금지 (다른 13봇 영향 → 새 회귀) === Why P0 (priority=1) === - 오늘 dev 작업 통째로 마비. outputs/만 쌓이고 BE/FE/QA 0건 - 매 5분 daemon log ERROR + 실패 텔레그램 1건씩 누적 - 어제 commit 회귀 직접 추적 가능한 단순 path 사고 - 6시간 이내 fix 추정 handoff_after_done: QA → reviewer (correctness + testing-reviewer 필수)

핸드오프 체인

1. 2026-05-09 07:35 ceo → system "bulk_cancel — 미완료 전체 폐기 (시스템 재구축 전 청산)"

체이닝 타임라인

자동 체이닝 이력이 없습니다

산출물

아직 산출물이 없습니다

수정

관련 로그

관련 봇 로그 없음

위험 구역