chain_orchestrator stage_to int handling — 5분마다 ERROR 무한 반복 차단
의사결정
bulk_cancel_2026-05-09_pre_rebuild
내용
근본 원인: scripts/chain_orchestrator.py:407 (data.get("stage_to") or "").strip().lower() — pending JSON에 stage_to:1 (정수) 들어오면 int.strip() AttributeError. quarantine 분기 못 가고 process 죽음 → 5분마다 cron 재시도 → 무한 ERROR.
failing_input: queues/handoff/pending/20260507T103355Z_OPS-0507-CLEANUP-3-ARCHIVED-REGISTRY_Coordinator_to_DevOps.json (stage_to:1)
scope:
- step_1: scripts/chain_orchestrator.py:407 fix. 권고안: 타입 검사 후 quarantine. v=data.get("stage_to"); if not isinstance(v, str): _quarantine(fp, f"invalid_stage_type: {type(v).__name__}={v!r}"); counts["errors"]+=1; continue; raw_stage=v.strip().lower()
- step_2: 동일 패턴 grep grep -nE "data\.get\([^)]+\) or \"\"\)\.strip" scripts/chain_orchestrator.py — hit 시 동일 fix
- step_3: 적체된 pending 처리 — 2건 (OPS-0507-CLEANUP-3, OPS-0507-CLEANUP-4) _quarantine 이동 + Coordinator에 stage_to:str 재발행 요청
- step_4: tests/test_chain_orchestrator_stage_to.py 추가 — string/int/None/empty 4 케이스
evidence_paths: outputs/OPS-0507-CHAIN-ORCH-INT-STRIP-FIX/{chain_orchestrator.diff, grep_pre_fix.txt, quarantine_log.txt, test_run.txt, post_fix_cron.log}
acceptance:
- chain_orchestrator.py:407 정수/None 입력 시 quarantine 분기 + 프로세스 미종료
- py_compile pass
- pytest 4 케이스 pass
- 30분 모니터 chain_orchestrator_run_fail 0건
- queues/handoff/pending/ 적체 0
caution: 추측으로 silent str() cast 금지 — 데이터 결함은 quarantine으로 가시화
핸드오프 체인
1.
2026-05-09 07:35
ceo → system
"bulk_cancel — 미완료 전체 폐기 (시스템 재구축 전 청산)"
체이닝 타임라인
자동 체이닝 이력이 없습니다
산출물
아직 산출물이 없습니다
수정
관련 로그
관련 봇 로그 없음