virtual-insanity
← 리포트 목록

작업 #40249 장부 불일치 기록 — server.py 허용목록 수정은 반영됨, 대시보드 서버 재시작 필요

2026-09-28 hermes [ops, bus_commands, ledger-mismatch, server.py, guardian, restart-approval]

작업 #40249 장부 불일치 기록

결론

  • 장부(bus_commands id=40249)는 failed로 남아 있으나, 수정 내용(guardian·analyst-pm 허용목록 추가)은 코드에 실제로 반영돼 있다.
  • 그러나 대시보드 서버(PID 46444)는 패치 이전에 기동돼 재시작되지 않았으므로 옛 코드로 돌고 있다. 그 결과 guardian 대상 태스크 생성이 계속 HTTP 400으로 실패한다.
  • 조치: 서버 재시작 필요. 재시작은 해리 승인 후 실행(직접 재시작하지 않음). 승인 요청 DM 발송.

1. 장부 상태 (조회 2026-09-28 09:14 KST)

sqlite3 -readonly /Users/ron/.hermes/data/ops_multiagent.db "SELECT id,status,claimed_by,updated_at,title FROM bus_commands WHERE id=40249" → 40249|failed|cowork|2026-09-28 08:27:45|server.py create_bus_command 대상 에이전트 허용목록에 guardian·analyst-pm 누락 수정

2. 수정 반영 여부 — 반영됨

  • /Users/ron/.hermes/workspace/scripts/server.py 2917~2925행 (2920행 원문): BUS_COMMAND_AGENTS: tuple[str, ...] = ( — 목록에 "analyst-pm", "guardian" 포함, 2925행 BUS_COMMAND_TARGETS = BUS_COMMAND_AGENTS + ("all",)
  • 사용처: 2940행(create_bus_command), 5573·5650행(claim/agent-status), 5725행(/api/bus/command) 모두 같은 상수 참조.
  • 테스트: python3 -m pytest tests/test_server_bus_command_targets.py -q → 4 passed in 0.28s
  • 서버 실행 파이썬(3.9)으로도 문법 확인: py_compile scripts/server.py → OK

3. 시각 비교 — 장부 반려가 파일 생성보다 먼저

항목 시각 (KST)
대시보드 서버 PID 46444 기동 2026-09-27 07:55:09
scripts/server.py 수정 (패치) 2026-09-28 08:27:41
#40249 failed 처리(updated_at) 2026-09-28 08:27:45
tests/test_server_bus_command_targets.py 생성/수정 2026-09-28 08:27:58
  • 반려(08:27:45)는 테스트 파일이 생기기 13초 전 → 증거 게이트가 "테스트 파일 없음"으로 판정한 타이밍 불일치. 실제 작업은 완료됨.
  • 서버 기동(09-27 07:55:09)이 패치(09-28 08:27:41)보다 약 24시간 32분 앞섬 → 실행 중인 서버에는 패치가 올라가 있지 않음.

4. 재시작 전 실패 증거 — guardian 태스크 생성 HTTP 400

grep -n 'FAIL create task: guardian' logs/orchestrator.log (logs 경로: /Users/ron/.hermes/workspace/logs/orchestrator.log) 요청된 3건 (각 직전 행에 jpost error /api/bus/command-queue/create: HTTP Error 400: Bad Request): 1. 146402행 [07:48:39] 큐 워커 프로세스 기동시각과 agent_queue_worker.py 패치 시각 비교 — 입력 고갈 판정 로직 실제 반영 여부 점검 (400: 146401행) 2. 146411행 [08:04:59] 실패 처리된 #40243·#40244가 실제로는 코드에 반영됐는지 확인하고 장부 불일치 기록 (400: 146410행) 3. 146441행 [08:56:50] BAMLC0A0CM 등 macro-timeseries 파일 실제 갱신 주체 확인 — 수집 크론 2개가 모두 정지인데도 파일이 갱신되는 이유 (400: 146440행)

참고: 오늘 04:28 이후 같은 유형 실패 총 10건(146303·146325·146335·146343·146373·146379·146389·146402·146411·146441행). 08:56 실패는 패치 이후 시각이므로 "코드는 고쳐졌지만 서버가 옛 코드" 판정을 뒷받침.

5. 승인 요청 DM

  • 해리 DM(chat_id 492860021) 발송 완료: message_id 14637, 2026-09-28 09:14 KST (Bot API sendMessage ok=True)

6. 후속 조치

  • [ ] 해리 승인 후 대시보드 서버(scripts/server.py, PID 46444) 재시작
  • [ ] 재시작 후 검증: ps -o pid,lstart -p <새 PID> 기동시각 > 08:27:41, 다음 orchestrator 사이클에서 FAIL create task: guardian 신규 행 0건, guardian 태스크 bus_commands 신규 생성 확인
  • [ ] #40249 장부 상태는 재시작·검증 후 정정 검토(영구 변경 전 해리 확인)
  • 관련: 증거 게이트 타이밍 문제(파일 생성 전 판정) — [[completion_evidence_policy]] 참고

관련

  • [[260928_hermes_40243-40244-ledger-mismatch]] (같은 유형 장부 불일치, 존재 여부 미확인)