시스템 결론만 보기
구조·로그는 시스템이 보고, 여기서는 결론만 보여줍니다.
🤖 오토파일럿 상태 열기
구조 보지 말고, 판단만 보세요
시스템이 대신 요약해서 “정상 / 검토 필요 / 처리 필요”만 보여줍니다.
🧠 운영자 판단 센터 열기
머리 아프면 간단 보기부터 보세요
전체 로그 말고, 지금 처리할 항목만 추린 화면입니다.
🧭 간단 상태판 열기
🧯 사고 감지 기준 정상
현재 사고 감지 기준으로 처리할 항목이 없습니다.
2026-09-19 12:57:40 · system_incident_guard_v2_active_resolved_20260508 · SYSTEM_INCIDENT_GUARD_V2_OK
처리 기준 0건
0
현재 사고
0
검토 후보
0
cleanup 후보
0
해결 완료
0
과거 증거

시스템 생태계 관리

시스템이 스스로 도구 등록, pending, DB 오염, 문서 최신성, 최근 작업 상태를 점검하는 관제판입니다.
마지막 건강검진: 2026-09-18 18:15:32
❌ 상태: FAIL
OK78
WARN14
FAIL3
TOTAL95
평소 확인 순서
1) 상태가 OK인지 확인 → 2) 처리 필요한 항목이 0건인지 확인 → 3) 필요할 때만
시스템 로그 콘솔
SSH 답변처럼 복사해서 바로 붙여넣을 수 있는 운영 로그입니다. 카드 요약보다 이 로그를 먼저 봅니다.
수정 로그 전체 지식 로그 전체
전체 로그
==================================================
SYSTEM LOG SUMMARY
==================================================
created_at=2026-10-03 06:16:35
page=ecosystem_health.php
overall=FAIL
change_log_total=2171
change_log_ok=195
change_log_need_check=61
active_need_check_count=17
archive_need_check_count=8
knowledge_total=813
knowledge_code_changes=36
knowledge_run_events=777
pending_count=184

==================================================
ACTIVE NEED_CHECK
==================================================
active_need_check_count=17

----- ACTIVE #1 -----
group=patch_markers
name=Agent personal expense catch-all
status=WARN
detail=marker not found

----- ACTIVE #2 -----
group=patch_markers
name=Agent system gate allowed tools
status=WARN
detail=marker not found

----- ACTIVE #3 -----
group=pending
name=pending_count
status=WARN
detail=pending=184

----- ACTIVE #4 -----
group=docs
name=WORK_STATE.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #5 -----
group=docs
name=WORK_REPORT.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #6 -----
group=docs
name=repair_jobs/SSH_ANSWER_INDEX.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #7 -----
group=docs
name=reports/auto_work_summary.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #8 -----
group=docs
name=reports/personal_expense_pipeline_status.md
status=WARN
detail=mtime=2026-05-23 00:38:01 age_sec=10258607

----- ACTIVE #9 -----
group=docs
name=reports/system_ecosystem_audit.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #10 -----
group=ssh_answers
name=latest_title
status=WARN
detail=

----- ACTIVE #11 -----
group=routing_regression
name=natural_query_expected_tool
status=WARN
detail=overall=FAIL total=4 ok=0 warn=0 fail=4

----- ACTIVE #12 -----
group=system_gate_authority
name=allowed_tools_and_approval_enforced
status=FAIL
detail=overall=FAIL total=8 ok=7 fail=1

----- ACTIVE #13 -----
group=history_period_routes
name=month_recent_history_period_list
status=FAIL
detail=overall=FAIL total=4 ok=3 fail=1

----- ACTIVE #14 -----
group=object_call_graph_residual
name=low_info_residual_accepted
status=WARN
detail=unresolved=443 high=295 medium=27 accepted=428 needs_review=15

----- ACTIVE #15 -----
group=routing_regression
name=life_memo_pending_no_pollution
status=FAIL
detail=overall=FAIL total=4 ok=0 fail=4

----- ACTIVE #16 -----
group=runtime_logs
name=active_log_size_guard
status=WARN
detail=oversized_active_logs py_rag_trace=488257997

----- ACTIVE #17 -----
group=rag_index
name=faiss_freshness
status=WARN
detail=index_too_old age_sec=12679606

==================================================
ARCHIVE NEED_CHECK
==================================================
archive_need_check_count=8
note=과거 SSH 답변 중 NEED_CHECK 판정 기록입니다. 현재 처리 대상은 ACTIVE NEED_CHECK를 기준으로 봅니다.

----- NEED_CHECK #1 -----
created_at=2026-05-14 01:30:30
title=brain_decision_systemgate_toolselector_compare_dryrun_v1
judgment=BRAIN_DECISION_SYSTEMGATE_TOOLSELECTOR_COMPARE_DRYRUN_NEED_CHECK
category=도구선택
file=repair_jobs/ssh_answers/20260514_013030_brain_decision_systemgate_toolselector_compare_dryrun_v1.txt
target=

----- NEED_CHECK #2 -----
created_at=2026-05-14 01:19:22
title=expense_read_missing_slot_skip_dryrun_v1f
judgment=EXPENSE_READ_MISSING_SLOT_SKIP_DRYRUN_V1F_NEED_CHECK
category=기타
file=repair_jobs/ssh_answers/20260514_011922_expense_read_missing_slot_skip_dryrun_v1f.txt
target=engine_modules/agent/Agent.php

----- NEED_CHECK #3 -----
created_at=2026-05-14 01:18:14
title=expense_read_missing_slot_skip_dryrun_v1e
judgment=EXPENSE_READ_MISSING_SLOT_SKIP_DRYRUN_V1E_NEED_CHECK
category=기타
file=repair_jobs/ssh_answers/20260514_011814_expense_read_missing_slot_skip_dryrun_v1e.txt
target=engine_modules/agent/Agent.php

----- NEED_CHECK #4 -----
created_at=2026-05-14 01:13:40
title=expense_read_missing_slot_skip_dryrun_v1
judgment=EXPENSE_READ_MISSING_SLOT_SKIP_DRYRUN_NEED_CHECK
category=기타
file=repair_jobs/ssh_answers/20260514_011340_expense_read_missing_slot_skip_dryrun_v1.txt
target=engine_modules/agent/Agent.php

----- NEED_CHECK #5 -----
created_at=2026-05-14 01:09:54
title=expense_read_route_sanity_allow_apply_v1e
judgment=EXPENSE_READ_ROUTE_SANITY_ALLOW_APPLY_V1E_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_010954_expense_read_route_sanity_allow_apply_v1e.txt
target=engine_modules/routing/RouteSanityChecker.php

----- NEED_CHECK #6 -----
created_at=2026-05-14 01:04:56
title=expense_read_route_sanity_allow_dryrun_v1b
judgment=EXPENSE_READ_ROUTE_SANITY_ALLOW_DRYRUN_V1B_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_010456_expense_read_route_sanity_allow_dryrun_v1b.txt
target=engine_modules/routing/RouteSanityChecker.php

----- NEED_CHECK #7 -----
created_at=2026-05-14 01:03:50
title=expense_read_route_sanity_allow_dryrun_v1
judgment=EXPENSE_READ_ROUTE_SANITY_ALLOW_DRYRUN_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_010350_expense_read_route_sanity_allow_dryrun_v1.txt
target=engine_modules/routing/RouteSanityChecker.php

----- NEED_CHECK #8 -----
created_at=2026-05-14 00:55:55
title=expense_read_route_fix_dryrun_v1
judgment=EXPENSE_READ_ROUTE_FIX_DRYRUN_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_005555_expense_read_route_fix_dryrun_v1.txt
target=engine_modules/policies/CommandIntentCorrectionPolicy.php

==================================================
RECENT CHANGE LOG
==================================================
recent_changes=8

----- CHANGE #1 -----
created_at=2026-05-05 11:48:23
status=UNKNOWN
title={}_system_status_tool_validate_allow_all_v1
category=기타
judgment=
target=

----- CHANGE #2 -----
created_at=2026-05-18 19:07:47
status=UNKNOWN
title=worksite_noun_lookup_filter_v1_answer_20260518_190745
category=기타
judgment=
target=

----- CHANGE #3 -----
created_at=2026-05-16 15:31:16
status=UNKNOWN
title=worklog_test_input_delete_v1_answer_20260516_153116
category=작업기록
judgment=
target=

----- CHANGE #4 -----
created_at=2026-05-16 15:31:06
status=UNKNOWN
title=worklog_test_input_delete_v1_answer_20260516_153106
category=작업기록
judgment=
target=

----- CHANGE #5 -----
created_at=2026-05-16 15:30:50
status=UNKNOWN
title=worklog_test_input_delete_v1_answer_20260516_153050
category=작업기록
judgment=
target=
changed_items=["/volume1/web/gpt/reports/worklog_test_input_delete_v1_last.json"]

----- CHANGE #6 -----
created_at=2026-05-16 15:02:08
status=UNKNOWN
title=worklog_response_format_v1_answer_20260516_080207
category=작업기록
judgment=
target=

----- CHANGE #7 -----
created_at=2026-05-16 15:27:07
status=UNKNOWN
title=worklog_relative_date_save_patch_v1_answer_20260516_152707
category=작업기록
judgment=
target=

----- CHANGE #8 -----
created_at=2026-05-16 15:24:33
status=UNKNOWN
title=worklog_relative_date_save_patch_v1_answer_20260516_152433
category=작업기록
judgment=
target=

==================================================
SYSTEM KNOWLEDGE CODE CHANGES
==================================================
code_changes=8

----- CODE_CHANGE #1 -----
created_at=2026-05-04 15:43:25
status=OK
title=life_memo_pending_regression_lock_v1
reason=생활기록 저장, pending 오염 차단, SystemGate history_memo 라우팅, SaveReceipt mkdir 에러 재발을 자동 회귀 테스트로 고정하기 위해
call_module=Agent.php,SystemGate.php,HistoryMemoTool.php,HistorySearchTool.php,ScheduleTool.php,PaymentTool.php
call_ecosystem=pending_guard,life_memo,system_gate,routing_regression,save_receipt
save_ecosystem=reports/system_logs/code_changes.jsonl,reports/life_memo_pending_regression_lock_v1.json
judgment=LIFE_MEMO_PENDING_REGRESSION_LOCK_V1_OK

----- CODE_CHANGE #2 -----
created_at=2026-05-04 13:29:46
status=OK
title=pending_life_memo_followup_skip_fix_v1
reason=생활기록 저장 문장이 이전 입금 pending에 합성되어 payment로 오염되는 문제를 차단하기 위해
call_module=Agent.php,FollowupResolver.php,PendingRecordLookupService.php,SystemGate.php,HistoryMemoTool.php
call_ecosystem=pending_followup,life_memo,history_memo,routing_authority
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=PENDING_LIFE_MEMO_FOLLOWUP_SKIP_FIX_V1_OK

----- CODE_CHANGE #3 -----
created_at=2026-05-04 13:27:18
status=OK
title=system_gate_life_memo_save_route_fix_v1
reason=생활 서술과 저장해줘가 포함된 문장을 SystemGate가 schedule create로 오분류해 history_memo 선택이 차단되는 문제를 수정하기 위해
call_module=SystemGate.php,HistoryMemoTool.php,RouteSanityChecker.php,ToolSelector.php
call_ecosystem=system_gate,life_memo,history_memo,routing_authority
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=SYSTEM_GATE_LIFE_MEMO_SAVE_ROUTE_FIX_V1_OK

----- CODE_CHANGE #4 -----
created_at=2026-05-04 05:00:08
status=OK
title=system_gate_authority_enforcement_v2
reason=SystemGate를
call_module=SystemGate.php,RouteDecision.php,RouteSanityChecker.php,ToolSelector.php,ToolExecutor.php,Agent.php
call_ecosystem=system_gate_authority,routing,tool_execution,ecosystem_health
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=SYSTEM_GATE_AUTHORITY_ENFORCEMENT_V2_OK

----- CODE_CHANGE #5 -----
created_at=2026-05-04 04:00:42
status=OK
title=mobile_operator_toolbar_compact_v1
reason=모바일 메인 화면에서 불필요한 운영자 안내/상태 문구를 제거하고 시스템 관리/엔진 로그/기록 버튼을 한 줄로 만들기 위해
call_module=operator_status.php,operator_overhaul.css
call_ecosystem=mobile_ui,operator_toolbar,main_screen
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=MOBILE_OPERATOR_TOOLBAR_COMPACT_V1_OK

----- CODE_CHANGE #6 -----
created_at=2026-05-04 03:55:16
status=OK
title=mobile_operator_usability_fix_v1
reason=모바일에서 운영자 패널과 입력/분석 버튼이 화면 밖으로 밀려 조작이 어려운 문제를 고치기 위해
call_module=operator_overhaul.css
call_ecosystem=mobile_ui,operator_panel,input_area,ecosystem_health_ui
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=MOBILE_OPERATOR_USABILITY_FIX_V1_OK

----- CODE_CHANGE #7 -----
created_at=2026-05-04 03:36:40
status=OK
title=codefix_write_policy_smoke_v1
reason=CodeFixTool이 승인 없는 실제 쓰기를 하지 않는지 관제판에서 계속 검증하기 위해
call_module=codefix_write_policy_smoke.php,CodeFixTool.php,update_all_docs.php,ecosystem_health_check.php
call_ecosystem=codefix_write_policy,code_patch_governance,approval_policy,ecosystem_health
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=CODEFIX_WRITE_POLICY_SMOKE_V1_OK

----- CODE_CHANGE #8 -----
created_at=2026-05-04 03:23:20
status=OK
title=callable_gate_runtime_enforcement_v1
reason=호출 게이트를 보고서 판정에서 실제 ToolExecutor/Agent 실행 전 차단 경로로 연결하기 위해
call_module=CallableGatePolicy.php,ToolExecutor.php,Agent.php,ecosystem_health_check.php
call_ecosystem=callable_gate,runtime_execution,tool_registry,module_isolation,ecosystem_health
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=CALLABLE_GATE_RUNTIME_ENFORCEMENT_V1_OK

==================================================
RECENT RUN EVENTS
==================================================
run_events=8

----- RUN_EVENT #1 -----
created_at=2026-10-02 19:57:53
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #2 -----
created_at=2026-09-30 12:06:39
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #3 -----
created_at=2026-09-30 12:06:36
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #4 -----
created_at=2026-09-29 08:32:02
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #5 -----
created_at=2026-09-28 16:55:27
status=
input=시스템의 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview={"ok":true,"success":true,"http_status":200,"code":"ok","message":"Success","trace_id":"gpt_3ddb9ab4-1790582122","data":{"answer":"# 시스템 문제점 — 세 가지를 같이 봤습니다\n\n## 1. 지금 상태 (시스템 점검 8항목)\n\n- ❌ 센서: 센서1(192.168.1.23): 수신 없음

----- RUN_EVENT #6 -----
created_at=2026-09-28 16:52:03
status=
input=시스템의 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED_WITH_ERROR
output_preview={"type":2,"message":"mkdir(): File exists","file":"/volume1/web/gpt/tools/system_scan.php","line":188}

----- RUN_EVENT #7 -----
created_at=2026-09-28 16:38:09
status=
input=시스템의 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview={"ok":true,"success":true,"http_status":200,"code":"ok","message":"Success","trace_id":"gpt_c130ece4-1790581086","data":{"answer":"# 시스템 문제점 — 세 가지를 같이 봤습니다\n\n## 1. 지금 상태 (시스템 점검 8항목)\n\n- ❌ 센서: 센서1(192.168.1.23): 수신 없음

----- RUN_EVENT #8 -----
created_at=2026-09-28 16:34:49
status=
input=모듈에 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview={"ok":true,"success":true,"http_status":200,"code":"ok","message":"Success","trace_id":"gpt_f6b3f7b8-1790580888","data":{"answer":"## 코드 점검 — 파일 1804개 (저장된 결과 (2026-09-28T16:18))\n\n### 1. 부르는 곳을 못 찾은 파일 — 1개\n\n> **\"죽었
NEED_CHECK
==================================================
ACTIVE NEED_CHECK
==================================================
active_need_check_count=17

----- ACTIVE #1 -----
group=patch_markers
name=Agent personal expense catch-all
status=WARN
detail=marker not found

----- ACTIVE #2 -----
group=patch_markers
name=Agent system gate allowed tools
status=WARN
detail=marker not found

----- ACTIVE #3 -----
group=pending
name=pending_count
status=WARN
detail=pending=184

----- ACTIVE #4 -----
group=docs
name=WORK_STATE.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #5 -----
group=docs
name=WORK_REPORT.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #6 -----
group=docs
name=repair_jobs/SSH_ANSWER_INDEX.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #7 -----
group=docs
name=reports/auto_work_summary.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #8 -----
group=docs
name=reports/personal_expense_pipeline_status.md
status=WARN
detail=mtime=2026-05-23 00:38:01 age_sec=10258607

----- ACTIVE #9 -----
group=docs
name=reports/system_ecosystem_audit.md
status=WARN
detail=mtime=2026-05-23 00:38:03 age_sec=10258605

----- ACTIVE #10 -----
group=ssh_answers
name=latest_title
status=WARN
detail=

----- ACTIVE #11 -----
group=routing_regression
name=natural_query_expected_tool
status=WARN
detail=overall=FAIL total=4 ok=0 warn=0 fail=4

----- ACTIVE #12 -----
group=system_gate_authority
name=allowed_tools_and_approval_enforced
status=FAIL
detail=overall=FAIL total=8 ok=7 fail=1

----- ACTIVE #13 -----
group=history_period_routes
name=month_recent_history_period_list
status=FAIL
detail=overall=FAIL total=4 ok=3 fail=1

----- ACTIVE #14 -----
group=object_call_graph_residual
name=low_info_residual_accepted
status=WARN
detail=unresolved=443 high=295 medium=27 accepted=428 needs_review=15

----- ACTIVE #15 -----
group=routing_regression
name=life_memo_pending_no_pollution
status=FAIL
detail=overall=FAIL total=4 ok=0 fail=4

----- ACTIVE #16 -----
group=runtime_logs
name=active_log_size_guard
status=WARN
detail=oversized_active_logs py_rag_trace=488257997

----- ACTIVE #17 -----
group=rag_index
name=faiss_freshness
status=WARN
detail=index_too_old age_sec=12679606

==================================================
ARCHIVE NEED_CHECK
==================================================
archive_need_check_count=8
note=과거 SSH 답변 중 NEED_CHECK 판정 기록입니다. 현재 처리 대상은 ACTIVE NEED_CHECK를 기준으로 봅니다.

----- NEED_CHECK #1 -----
created_at=2026-05-14 01:30:30
title=brain_decision_systemgate_toolselector_compare_dryrun_v1
judgment=BRAIN_DECISION_SYSTEMGATE_TOOLSELECTOR_COMPARE_DRYRUN_NEED_CHECK
category=도구선택
file=repair_jobs/ssh_answers/20260514_013030_brain_decision_systemgate_toolselector_compare_dryrun_v1.txt
target=

----- NEED_CHECK #2 -----
created_at=2026-05-14 01:19:22
title=expense_read_missing_slot_skip_dryrun_v1f
judgment=EXPENSE_READ_MISSING_SLOT_SKIP_DRYRUN_V1F_NEED_CHECK
category=기타
file=repair_jobs/ssh_answers/20260514_011922_expense_read_missing_slot_skip_dryrun_v1f.txt
target=engine_modules/agent/Agent.php

----- NEED_CHECK #3 -----
created_at=2026-05-14 01:18:14
title=expense_read_missing_slot_skip_dryrun_v1e
judgment=EXPENSE_READ_MISSING_SLOT_SKIP_DRYRUN_V1E_NEED_CHECK
category=기타
file=repair_jobs/ssh_answers/20260514_011814_expense_read_missing_slot_skip_dryrun_v1e.txt
target=engine_modules/agent/Agent.php

----- NEED_CHECK #4 -----
created_at=2026-05-14 01:13:40
title=expense_read_missing_slot_skip_dryrun_v1
judgment=EXPENSE_READ_MISSING_SLOT_SKIP_DRYRUN_NEED_CHECK
category=기타
file=repair_jobs/ssh_answers/20260514_011340_expense_read_missing_slot_skip_dryrun_v1.txt
target=engine_modules/agent/Agent.php

----- NEED_CHECK #5 -----
created_at=2026-05-14 01:09:54
title=expense_read_route_sanity_allow_apply_v1e
judgment=EXPENSE_READ_ROUTE_SANITY_ALLOW_APPLY_V1E_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_010954_expense_read_route_sanity_allow_apply_v1e.txt
target=engine_modules/routing/RouteSanityChecker.php

----- NEED_CHECK #6 -----
created_at=2026-05-14 01:04:56
title=expense_read_route_sanity_allow_dryrun_v1b
judgment=EXPENSE_READ_ROUTE_SANITY_ALLOW_DRYRUN_V1B_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_010456_expense_read_route_sanity_allow_dryrun_v1b.txt
target=engine_modules/routing/RouteSanityChecker.php

----- NEED_CHECK #7 -----
created_at=2026-05-14 01:03:50
title=expense_read_route_sanity_allow_dryrun_v1
judgment=EXPENSE_READ_ROUTE_SANITY_ALLOW_DRYRUN_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_010350_expense_read_route_sanity_allow_dryrun_v1.txt
target=engine_modules/routing/RouteSanityChecker.php

----- NEED_CHECK #8 -----
created_at=2026-05-14 00:55:55
title=expense_read_route_fix_dryrun_v1
judgment=EXPENSE_READ_ROUTE_FIX_DRYRUN_NEED_CHECK
category=라우팅
file=repair_jobs/ssh_answers/20260514_005555_expense_read_route_fix_dryrun_v1.txt
target=engine_modules/policies/CommandIntentCorrectionPolicy.php
수정 로그
==================================================
RECENT CHANGE LOG
==================================================
recent_changes=8

----- CHANGE #1 -----
created_at=2026-05-05 11:48:23
status=UNKNOWN
title={}_system_status_tool_validate_allow_all_v1
category=기타
judgment=
target=

----- CHANGE #2 -----
created_at=2026-05-18 19:07:47
status=UNKNOWN
title=worksite_noun_lookup_filter_v1_answer_20260518_190745
category=기타
judgment=
target=

----- CHANGE #3 -----
created_at=2026-05-16 15:31:16
status=UNKNOWN
title=worklog_test_input_delete_v1_answer_20260516_153116
category=작업기록
judgment=
target=

----- CHANGE #4 -----
created_at=2026-05-16 15:31:06
status=UNKNOWN
title=worklog_test_input_delete_v1_answer_20260516_153106
category=작업기록
judgment=
target=

----- CHANGE #5 -----
created_at=2026-05-16 15:30:50
status=UNKNOWN
title=worklog_test_input_delete_v1_answer_20260516_153050
category=작업기록
judgment=
target=
changed_items=["/volume1/web/gpt/reports/worklog_test_input_delete_v1_last.json"]

----- CHANGE #6 -----
created_at=2026-05-16 15:02:08
status=UNKNOWN
title=worklog_response_format_v1_answer_20260516_080207
category=작업기록
judgment=
target=

----- CHANGE #7 -----
created_at=2026-05-16 15:27:07
status=UNKNOWN
title=worklog_relative_date_save_patch_v1_answer_20260516_152707
category=작업기록
judgment=
target=

----- CHANGE #8 -----
created_at=2026-05-16 15:24:33
status=UNKNOWN
title=worklog_relative_date_save_patch_v1_answer_20260516_152433
category=작업기록
judgment=
target=
지식 로그
==================================================
SYSTEM KNOWLEDGE CODE CHANGES
==================================================
code_changes=8

----- CODE_CHANGE #1 -----
created_at=2026-05-04 15:43:25
status=OK
title=life_memo_pending_regression_lock_v1
reason=생활기록 저장, pending 오염 차단, SystemGate history_memo 라우팅, SaveReceipt mkdir 에러 재발을 자동 회귀 테스트로 고정하기 위해
call_module=Agent.php,SystemGate.php,HistoryMemoTool.php,HistorySearchTool.php,ScheduleTool.php,PaymentTool.php
call_ecosystem=pending_guard,life_memo,system_gate,routing_regression,save_receipt
save_ecosystem=reports/system_logs/code_changes.jsonl,reports/life_memo_pending_regression_lock_v1.json
judgment=LIFE_MEMO_PENDING_REGRESSION_LOCK_V1_OK

----- CODE_CHANGE #2 -----
created_at=2026-05-04 13:29:46
status=OK
title=pending_life_memo_followup_skip_fix_v1
reason=생활기록 저장 문장이 이전 입금 pending에 합성되어 payment로 오염되는 문제를 차단하기 위해
call_module=Agent.php,FollowupResolver.php,PendingRecordLookupService.php,SystemGate.php,HistoryMemoTool.php
call_ecosystem=pending_followup,life_memo,history_memo,routing_authority
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=PENDING_LIFE_MEMO_FOLLOWUP_SKIP_FIX_V1_OK

----- CODE_CHANGE #3 -----
created_at=2026-05-04 13:27:18
status=OK
title=system_gate_life_memo_save_route_fix_v1
reason=생활 서술과 저장해줘가 포함된 문장을 SystemGate가 schedule create로 오분류해 history_memo 선택이 차단되는 문제를 수정하기 위해
call_module=SystemGate.php,HistoryMemoTool.php,RouteSanityChecker.php,ToolSelector.php
call_ecosystem=system_gate,life_memo,history_memo,routing_authority
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=SYSTEM_GATE_LIFE_MEMO_SAVE_ROUTE_FIX_V1_OK

----- CODE_CHANGE #4 -----
created_at=2026-05-04 05:00:08
status=OK
title=system_gate_authority_enforcement_v2
reason=SystemGate를
call_module=SystemGate.php,RouteDecision.php,RouteSanityChecker.php,ToolSelector.php,ToolExecutor.php,Agent.php
call_ecosystem=system_gate_authority,routing,tool_execution,ecosystem_health
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=SYSTEM_GATE_AUTHORITY_ENFORCEMENT_V2_OK

----- CODE_CHANGE #5 -----
created_at=2026-05-04 04:00:42
status=OK
title=mobile_operator_toolbar_compact_v1
reason=모바일 메인 화면에서 불필요한 운영자 안내/상태 문구를 제거하고 시스템 관리/엔진 로그/기록 버튼을 한 줄로 만들기 위해
call_module=operator_status.php,operator_overhaul.css
call_ecosystem=mobile_ui,operator_toolbar,main_screen
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=MOBILE_OPERATOR_TOOLBAR_COMPACT_V1_OK

----- CODE_CHANGE #6 -----
created_at=2026-05-04 03:55:16
status=OK
title=mobile_operator_usability_fix_v1
reason=모바일에서 운영자 패널과 입력/분석 버튼이 화면 밖으로 밀려 조작이 어려운 문제를 고치기 위해
call_module=operator_overhaul.css
call_ecosystem=mobile_ui,operator_panel,input_area,ecosystem_health_ui
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=MOBILE_OPERATOR_USABILITY_FIX_V1_OK

----- CODE_CHANGE #7 -----
created_at=2026-05-04 03:36:40
status=OK
title=codefix_write_policy_smoke_v1
reason=CodeFixTool이 승인 없는 실제 쓰기를 하지 않는지 관제판에서 계속 검증하기 위해
call_module=codefix_write_policy_smoke.php,CodeFixTool.php,update_all_docs.php,ecosystem_health_check.php
call_ecosystem=codefix_write_policy,code_patch_governance,approval_policy,ecosystem_health
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=CODEFIX_WRITE_POLICY_SMOKE_V1_OK

----- CODE_CHANGE #8 -----
created_at=2026-05-04 03:23:20
status=OK
title=callable_gate_runtime_enforcement_v1
reason=호출 게이트를 보고서 판정에서 실제 ToolExecutor/Agent 실행 전 차단 경로로 연결하기 위해
call_module=CallableGatePolicy.php,ToolExecutor.php,Agent.php,ecosystem_health_check.php
call_ecosystem=callable_gate,runtime_execution,tool_registry,module_isolation,ecosystem_health
save_ecosystem=reports/system_logs/code_changes.jsonl
judgment=CALLABLE_GATE_RUNTIME_ENFORCEMENT_V1_OK
실행 로그
==================================================
RECENT RUN EVENTS
==================================================
run_events=8

----- RUN_EVENT #1 -----
created_at=2026-10-02 19:57:53
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #2 -----
created_at=2026-09-30 12:06:39
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #3 -----
created_at=2026-09-30 12:06:36
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #4 -----
created_at=2026-09-29 08:32:02
status=
input=
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview=

----- RUN_EVENT #5 -----
created_at=2026-09-28 16:55:27
status=
input=시스템의 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview={"ok":true,"success":true,"http_status":200,"code":"ok","message":"Success","trace_id":"gpt_3ddb9ab4-1790582122","data":{"answer":"# 시스템 문제점 — 세 가지를 같이 봤습니다\n\n## 1. 지금 상태 (시스템 점검 8항목)\n\n- ❌ 센서: 센서1(192.168.1.23): 수신 없음

----- RUN_EVENT #6 -----
created_at=2026-09-28 16:52:03
status=
input=시스템의 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED_WITH_ERROR
output_preview={"type":2,"message":"mkdir(): File exists","file":"/volume1/web/gpt/tools/system_scan.php","line":188}

----- RUN_EVENT #7 -----
created_at=2026-09-28 16:38:09
status=
input=시스템의 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview={"ok":true,"success":true,"http_status":200,"code":"ok","message":"Success","trace_id":"gpt_c130ece4-1790581086","data":{"answer":"# 시스템 문제점 — 세 가지를 같이 봤습니다\n\n## 1. 지금 상태 (시스템 점검 8항목)\n\n- ❌ 센서: 센서1(192.168.1.23): 수신 없음

----- RUN_EVENT #8 -----
created_at=2026-09-28 16:34:49
status=
input=모듈에 문제점이 뭐야
call_module=api.php
call_ecosystem=api_shutdown
save_ecosystem=system_logs/run_events.jsonl
judgment=REQUEST_FINISHED
output_preview={"ok":true,"success":true,"http_status":200,"code":"ok","message":"Success","trace_id":"gpt_f6b3f7b8-1790580888","data":{"answer":"## 코드 점검 — 파일 1804개 (저장된 결과 (2026-09-28T16:18))\n\n### 1. 부르는 곳을 못 찾은 파일 — 1개\n\n> **\"죽었
시스템 구역/상세 점검을 엽니다.
지금 처리 필요한 항목 17건

⚠️ patch_markers / Agent personal expense catch-all

marker not found

⚠️ patch_markers / Agent system gate allowed tools

marker not found

⚠️ pending / pending_count

pending=184

⚠️ docs / WORK_STATE.md

mtime=2026-05-23 00:38:03 age_sec=10258605

⚠️ docs / WORK_REPORT.md

mtime=2026-05-23 00:38:03 age_sec=10258605

⚠️ docs / repair_jobs/SSH_ANSWER_INDEX.md

mtime=2026-05-23 00:38:03 age_sec=10258605

⚠️ docs / reports/auto_work_summary.md

mtime=2026-05-23 00:38:03 age_sec=10258605

⚠️ docs / reports/personal_expense_pipeline_status.md

mtime=2026-05-23 00:38:01 age_sec=10258607

⚠️ docs / reports/system_ecosystem_audit.md

mtime=2026-05-23 00:38:03 age_sec=10258605

⚠️ ssh_answers / latest_title

⚠️ routing_regression / natural_query_expected_tool

overall=FAIL total=4 ok=0 warn=0 fail=4

❌ system_gate_authority / allowed_tools_and_approval_enforced

overall=FAIL total=8 ok=7 fail=1

schedule
파일: schedule
내용: 5월 히스토리 조회

❌ history_period_routes / month_recent_history_period_list

overall=FAIL total=4 ok=3 fail=1

keyword_children_history
파일: keyword_children_history
내용: 애들 히스토리

⚠️ object_call_graph_residual / low_info_residual_accepted

unresolved=443 high=295 medium=27 accepted=428 needs_review=15

reports/php_object_call_graph_residual.json
파일: reports/php_object_call_graph_residual.json
내용: residual_needs_review

❌ routing_regression / life_memo_pending_no_pollution

overall=FAIL total=4 ok=0 fail=4

⚠️ runtime_logs / active_log_size_guard

oversized_active_logs py_rag_trace=488257997

⚠️ rag_index / faiss_freshness

index_too_old age_sec=12679606

시스템 구역 구조 문서
Pending 정리 관리자 보고서 열기
스캔 당시 pending45
자동 취소 후보0
실제 취소0
보류 pending45
테스트/오염성 pending은 자동 정리하고, 실제 업무 가능성이 있는 pending은 보류합니다.
그룹별 전체 점검 펼치기
그룹별 전체 점검
그룹 항목 상태 내용
core_files api.php ✅ OK found / 2026-09-18 09:05:02
core_files engine.php ✅ OK found / 2026-09-10 10:53:45
core_files engine_modules/agent/Agent.php ✅ OK found / 2026-06-26 23:00:18
core_files engine_modules/tools/ToolSelector.php ✅ OK found / 2026-09-18 09:05:02
core_files engine_modules/tools/bootstrap.php ✅ OK found / 2026-09-18 09:05:02
core_files engine_modules/tools/ToolRegistry.php ✅ OK found / 2026-09-18 17:20:52
core_files engine_modules/tools/ToolExecutor.php ✅ OK found / 2026-05-06 15:10:56
core_files engine_modules/tools/CallableGatePolicy.php ✅ OK found / 2026-05-26 19:32:30
core_files engine_modules/tools/PersonalExpenseTool.php ✅ OK found / 2026-05-02 12:30:40
core_files engine_modules/services/PersonalExpenseParseService.php ✅ OK found / 2026-09-18 17:48:05
core_files engine_modules/services/PersonalExpenseSaveService.php ✅ OK found / 2026-05-13 12:14:17
core_files tools/update_all_docs.php ✅ OK found / 2026-05-04 11:51:46
core_files tools/update_work_docs_from_ssh_answers.php ✅ OK found / 2026-05-03 16:27:06
core_files tools/php_function_call_inventory.php ✅ OK found / 2026-05-04 06:42:15
core_files tools/php_callable_surface_report.php ✅ OK found / 2026-05-04 09:41:07
core_files tools/php_callable_gate_check.php ✅ OK found / 2026-05-04 09:53:13
core_files tools/php_callable_gate_smoke.php ✅ OK found / 2026-05-04 09:53:52
core_files tools/codefix_write_policy_smoke.php ✅ OK found / 2026-05-04 10:32:46
core_files tools/system_gate_authority_enforcement_smoke.php ✅ OK found / 2026-05-04 11:51:06
core_files tools/php_object_call_graph.php ✅ OK found / 2026-05-04 06:49:19
core_files tools/php_object_call_graph_unresolved_triage.php ✅ OK found / 2026-05-04 06:47:44
core_files tools/php_object_call_graph_residual_report.php ✅ OK found / 2026-05-06 10:03:51
tool_registry registry_load ✅ OK class=ToolRegistry count=56
tool_registry bootstrap_failed_tools ✅ OK failed=0
tool_registry has_personal_expense ✅ OK registered
tool_registry has_history_memo ✅ OK registered
tool_registry has_history_search ✅ OK registered
tool_registry has_payment ✅ OK registered
tool_registry has_schedule ✅ OK registered
tool_registry has_customer ✅ OK registered
tool_registry has_worklog ✅ OK registered
tool_registry has_code_map ✅ OK registered
patch_markers Agent personal expense catch-all ⚠️ WARN marker not found
patch_markers Agent weather bi guard ✅ OK AGENT_WEATHER_SINGLE_BI_FALSE_POSITIVE_GUARD_V1
patch_markers Bootstrap registry cleanup ✅ OK ECOSYSTEM_BOOTSTRAP_REGISTRY_CLEANUP_V1
patch_markers Schedule history combo ✅ OK SCHEDULE_HISTORY_COMBO_ROUTE_V2
patch_markers History period filter ✅ OK HISTORY_SEARCH_PERIOD_FILTER_V2
patch_markers PersonalExpenseTool ✅ OK PERSONAL_EXPENSE_TOOL_V1
patch_markers CodeFix controlled write policy ✅ OK CODE_FIX_SYSTEM_CONTROLLED_WRITE_POLICY_V1
patch_markers Callable gate runtime policy ✅ OK CALLABLE_GATE_RUNTIME_POLICY_V1
patch_markers Callable gate ToolExecutor hook ✅ OK CALLABLE_GATE_TOOL_EXECUTOR_RUNTIME_HOOK_V1
patch_markers Callable gate Agent hook ✅ OK CALLABLE_GATE_AGENT_RUNTIME_HOOK_V1
patch_markers SystemGate authority fields ✅ OK SYSTEM_GATE_AUTHORITY_FIELDS_V2
patch_markers RouteDecision authority contract ✅ OK ROUTE_DECISION_AUTHORITY_CONTRACT_V2
patch_markers RouteSanity allowed tools enforcement ✅ OK ROUTE_SANITY_ALLOWED_TOOLS_ENFORCE_V2
patch_markers ToolSelector person domain split ✅ OK TOOL_SELECTOR_PERSON_DOMAIN_KEYWORD_SPLIT_V1
patch_markers ToolExecutor system gate allowed tools ✅ OK TOOL_EXECUTOR_SYSTEM_GATE_ALLOWED_TOOLS_V1
patch_markers Agent system gate allowed tools ⚠️ WARN marker not found
patch_markers ToolSelector route module extraction ✅ OK TOOL_SELECTOR_ROUTE_MODULE_EXTRACTION_V1
patch_markers ToolSelector history route extraction ✅ OK TOOL_SELECTOR_HISTORY_ROUTE_EXTRACTION_V1
patch_markers ToolSelector code route pre intent ✅ OK TOOL_SELECTOR_CODE_ROUTE_PRE_INTENT_RULE_V1
patch_markers ToolSelector early log code route extraction ✅ OK TOOL_SELECTOR_EARLY_LOG_CODE_GUARD_ROUTE_EXTRACTION_V1
patch_markers ToolSelector worklog period route extraction ✅ OK TOOL_SELECTOR_WORKLOG_PERIOD_ROUTE_EXTRACTION_V1
patch_markers History period human record format ✅ OK HISTORY_PERIOD_HUMAN_RECORD_FORMAT_V2
patch_markers History period memo inbox source ✅ OK HISTORY_PERIOD_MEMO_INBOX_SOURCE_V1
pending pending_count ⚠️ WARN pending=184
pending suspicious_personal_expense_pending ✅ OK count=0
database pdo ✅ OK connected
database table_personal_memo_inbox ✅ OK rows=63
database table_personal_expense_records ✅ OK rows=2
database table_personal_expense_items ✅ OK rows=5
database table_incomes ✅ OK rows=308
database table_schedule_events ✅ OK rows=84
database table_calendar_projects ✅ OK rows=74
dirty_rows incomes ✅ OK dirty_candidates=0
dirty_rows schedule_events ✅ OK dirty_candidates=0
dirty_rows calendar_projects ✅ OK dirty_candidates=0
docs WORK_STATE.md ⚠️ WARN mtime=2026-05-23 00:38:03 age_sec=10258605
docs WORK_REPORT.md ⚠️ WARN mtime=2026-05-23 00:38:03 age_sec=10258605
docs repair_jobs/SSH_ANSWER_INDEX.md ⚠️ WARN mtime=2026-05-23 00:38:03 age_sec=10258605
docs reports/auto_work_summary.md ⚠️ WARN mtime=2026-05-23 00:38:03 age_sec=10258605
docs reports/personal_expense_pipeline_status.md ⚠️ WARN mtime=2026-05-23 00:38:01 age_sec=10258607
docs reports/system_ecosystem_audit.md ⚠️ WARN mtime=2026-05-23 00:38:03 age_sec=10258605
ssh_answers latest_title ⚠️ WARN
ssh_answers recent_ok_count ✅ OK ok=0
ssh_answers resolved_need_check_count ✅ OK resolved=6
ssh_answers recent_need_check_count ✅ OK resolved_by=RESOLVE_RECENT_NEED_CHECK_CLEANUP_V1_OK resolved_titles=ecosystem_recent_run_events_panel_fix_v1_repair,ecosystem_recent_run_events_panel_fix_v1,real_tool_execution_path_probe_v1,tool_executor_run_event_probe_v1,save_receipt_route_spec_and_guard_fix_v2,save_receipt_read_tool_v1
routing_regression natural_query_expected_tool ⚠️ WARN overall=FAIL total=4 ok=0 warn=0 fail=4
routing_regression life_memo_pending_no_pollution ❌ FAIL overall=FAIL total=4 ok=0 fail=4
route_module_pipeline toolselector_route_module_call_edges ✅ OK overall=OK total=30 ok=30 warn=0 fail=0
system_gate_authority allowed_tools_and_approval_enforced ❌ FAIL overall=FAIL total=8 ok=7 fail=1
history_period_routes month_recent_history_period_list ❌ FAIL overall=FAIL total=4 ok=3 fail=1
history_period_sources personal_memo_inbox_called ✅ OK overall=OK total=10 ok=10 fail=0
history_period_answer_format saved_record_human_readable_list ✅ OK overall=OK total=11 ok=11 fail=0
function_call_inventory php_functions_and_calls_visible ✅ OK files=1458 classes=601 functions=6267 calls=76514
object_call_graph object_method_resolution_visible ✅ OK scopes=6262 edges=11821 object=6692/7122 static=4686/4699
object_call_graph_triage unresolved_calls_classified ✅ OK unresolved=443 classified=443 high=295 medium=27 low=75 info=46
object_call_graph_residual low_info_residual_accepted ⚠️ WARN unresolved=443 high=295 medium=27 accepted=428 needs_review=15
callable_surface function_direct_call_policy ✅ OK functions=6267 callable=1804 blocked_or_internal=4463
callable_gate direct_call_gate_smoke ✅ OK overall=OK ok=3 fail=0 total=3
codefix_write_policy approved_write_gate ✅ OK overall=OK ok=4 fail=0 total=4
run_events latest_event_quality ✅ OK latest=2026-09-18 18:02:17 judgment=REQUEST_FINISHED has_error=false current_bytes=4480178 rotation_threshold_bytes=67108864 latest_bytes=8041 tail_max_bytes=8630 tail_errors=16 tail_empty_output=0 tail_repeated_inputs=9 tail_duplicate_rows=0
runtime_logs active_log_size_guard ⚠️ WARN oversized_active_logs py_rag_trace=488257997
rag_index faiss_freshness ⚠️ WARN index_too_old age_sec=12679606
local_lm recent_gateway_quality ✅ OK latest_gateway_call_ok latest=2026-09-18 18:15:12 source=python_gateway model=exaone-3.5-7.8b-instruct purpose=python_rag_lm_messages latest_ms=288 latest_tps=83.33 recent_total=160 recent_ok=160 recent_fail=0 avg_ok_ms=5486 max_ok_ms=20274 avg_tps=76.3
원본 MD 보고서 보기
# 시스템 생태계 건강검진

- 생성: `2026-09-18 18:14:48`
- 전체 상태: `FAIL`
- OK: `77` / WARN: `15` / FAIL: `3`

## 한눈 요약

```text
입력 → Agent → ToolSelector → ToolRegistry/Executor → Tool/Service → DB/Reports → 운영자 UI
```

## core_files

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `api.php` | found / 2026-09-18 09:05:02 |
| ✅ `OK` | `engine.php` | found / 2026-09-10 10:53:45 |
| ✅ `OK` | `engine_modules/agent/Agent.php` | found / 2026-06-26 23:00:18 |
| ✅ `OK` | `engine_modules/tools/ToolSelector.php` | found / 2026-09-18 09:05:02 |
| ✅ `OK` | `engine_modules/tools/bootstrap.php` | found / 2026-09-18 09:05:02 |
| ✅ `OK` | `engine_modules/tools/ToolRegistry.php` | found / 2026-09-18 17:20:52 |
| ✅ `OK` | `engine_modules/tools/ToolExecutor.php` | found / 2026-05-06 15:10:56 |
| ✅ `OK` | `engine_modules/tools/CallableGatePolicy.php` | found / 2026-05-26 19:32:30 |
| ✅ `OK` | `engine_modules/tools/PersonalExpenseTool.php` | found / 2026-05-02 12:30:40 |
| ✅ `OK` | `engine_modules/services/PersonalExpenseParseService.php` | found / 2026-09-18 17:48:05 |
| ✅ `OK` | `engine_modules/services/PersonalExpenseSaveService.php` | found / 2026-05-13 12:14:17 |
| ✅ `OK` | `tools/update_all_docs.php` | found / 2026-05-04 11:51:46 |
| ✅ `OK` | `tools/update_work_docs_from_ssh_answers.php` | found / 2026-05-03 16:27:06 |
| ✅ `OK` | `tools/php_function_call_inventory.php` | found / 2026-05-04 06:42:15 |
| ✅ `OK` | `tools/php_callable_surface_report.php` | found / 2026-05-04 09:41:07 |
| ✅ `OK` | `tools/php_callable_gate_check.php` | found / 2026-05-04 09:53:13 |
| ✅ `OK` | `tools/php_callable_gate_smoke.php` | found / 2026-05-04 09:53:52 |
| ✅ `OK` | `tools/codefix_write_policy_smoke.php` | found / 2026-05-04 10:32:46 |
| ✅ `OK` | `tools/system_gate_authority_enforcement_smoke.php` | found / 2026-05-04 11:51:06 |
| ✅ `OK` | `tools/php_object_call_graph.php` | found / 2026-05-04 06:49:19 |
| ✅ `OK` | `tools/php_object_call_graph_unresolved_triage.php` | found / 2026-05-04 06:47:44 |
| ✅ `OK` | `tools/php_object_call_graph_residual_report.php` | found / 2026-05-06 10:03:51 |

## tool_registry

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `registry_load` | class=ToolRegistry count=56 |
| ✅ `OK` | `bootstrap_failed_tools` | failed=0 |
| ✅ `OK` | `has_personal_expense` | registered |
| ✅ `OK` | `has_history_memo` | registered |
| ✅ `OK` | `has_history_search` | registered |
| ✅ `OK` | `has_payment` | registered |
| ✅ `OK` | `has_schedule` | registered |
| ✅ `OK` | `has_customer` | registered |
| ✅ `OK` | `has_worklog` | registered |
| ✅ `OK` | `has_code_map` | registered |

## patch_markers

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `Agent personal expense catch-all` | marker not found |
| ✅ `OK` | `Agent weather bi guard` | AGENT_WEATHER_SINGLE_BI_FALSE_POSITIVE_GUARD_V1 |
| ✅ `OK` | `Bootstrap registry cleanup` | ECOSYSTEM_BOOTSTRAP_REGISTRY_CLEANUP_V1 |
| ✅ `OK` | `Schedule history combo` | SCHEDULE_HISTORY_COMBO_ROUTE_V2 |
| ✅ `OK` | `History period filter` | HISTORY_SEARCH_PERIOD_FILTER_V2 |
| ✅ `OK` | `PersonalExpenseTool` | PERSONAL_EXPENSE_TOOL_V1 |
| ✅ `OK` | `CodeFix controlled write policy` | CODE_FIX_SYSTEM_CONTROLLED_WRITE_POLICY_V1 |
| ✅ `OK` | `Callable gate runtime policy` | CALLABLE_GATE_RUNTIME_POLICY_V1 |
| ✅ `OK` | `Callable gate ToolExecutor hook` | CALLABLE_GATE_TOOL_EXECUTOR_RUNTIME_HOOK_V1 |
| ✅ `OK` | `Callable gate Agent hook` | CALLABLE_GATE_AGENT_RUNTIME_HOOK_V1 |
| ✅ `OK` | `SystemGate authority fields` | SYSTEM_GATE_AUTHORITY_FIELDS_V2 |
| ✅ `OK` | `RouteDecision authority contract` | ROUTE_DECISION_AUTHORITY_CONTRACT_V2 |
| ✅ `OK` | `RouteSanity allowed tools enforcement` | ROUTE_SANITY_ALLOWED_TOOLS_ENFORCE_V2 |
| ✅ `OK` | `ToolSelector person domain split` | TOOL_SELECTOR_PERSON_DOMAIN_KEYWORD_SPLIT_V1 |
| ✅ `OK` | `ToolExecutor system gate allowed tools` | TOOL_EXECUTOR_SYSTEM_GATE_ALLOWED_TOOLS_V1 |
| ⚠️ `WARN` | `Agent system gate allowed tools` | marker not found |
| ✅ `OK` | `ToolSelector route module extraction` | TOOL_SELECTOR_ROUTE_MODULE_EXTRACTION_V1 |
| ✅ `OK` | `ToolSelector history route extraction` | TOOL_SELECTOR_HISTORY_ROUTE_EXTRACTION_V1 |
| ✅ `OK` | `ToolSelector code route pre intent` | TOOL_SELECTOR_CODE_ROUTE_PRE_INTENT_RULE_V1 |
| ✅ `OK` | `ToolSelector early log code route extraction` | TOOL_SELECTOR_EARLY_LOG_CODE_GUARD_ROUTE_EXTRACTION_V1 |
| ✅ `OK` | `ToolSelector worklog period route extraction` | TOOL_SELECTOR_WORKLOG_PERIOD_ROUTE_EXTRACTION_V1 |
| ✅ `OK` | `History period human record format` | HISTORY_PERIOD_HUMAN_RECORD_FORMAT_V2 |
| ✅ `OK` | `History period memo inbox source` | HISTORY_PERIOD_MEMO_INBOX_SOURCE_V1 |

## pending

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `pending_count` | pending=184 |
| ✅ `OK` | `suspicious_personal_expense_pending` | count=0 |

## database

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `pdo` | connected |
| ✅ `OK` | `table_personal_memo_inbox` | rows=63 |
| ✅ `OK` | `table_personal_expense_records` | rows=2 |
| ✅ `OK` | `table_personal_expense_items` | rows=5 |
| ✅ `OK` | `table_incomes` | rows=308 |
| ✅ `OK` | `table_schedule_events` | rows=84 |
| ✅ `OK` | `table_calendar_projects` | rows=74 |

## dirty_rows

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `incomes` | dirty_candidates=0 |
| ✅ `OK` | `schedule_events` | dirty_candidates=0 |
| ✅ `OK` | `calendar_projects` | dirty_candidates=0 |

## docs

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `WORK_STATE.md` | mtime=2026-05-23 00:38:03 age_sec=10258605 |
| ⚠️ `WARN` | `WORK_REPORT.md` | mtime=2026-05-23 00:38:03 age_sec=10258605 |
| ⚠️ `WARN` | `repair_jobs/SSH_ANSWER_INDEX.md` | mtime=2026-05-23 00:38:03 age_sec=10258605 |
| ⚠️ `WARN` | `reports/auto_work_summary.md` | mtime=2026-05-23 00:38:03 age_sec=10258605 |
| ⚠️ `WARN` | `reports/personal_expense_pipeline_status.md` | mtime=2026-05-23 00:38:01 age_sec=10258607 |
| ⚠️ `WARN` | `reports/system_ecosystem_audit.md` | mtime=2026-05-23 00:38:03 age_sec=10258605 |

## ssh_answers

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `latest_title` |  |
| ✅ `OK` | `recent_ok_count` | ok=0 |
| ✅ `OK` | `resolved_need_check_count` | resolved=6 |
| ⚠️ `WARN` | `recent_need_check_count` | need_check=2 |
| ↳ | `20260525_132825_git_tracking_candidate_plan_v1.txt` | {"file":"20260525_132825_git_tracking_candidate_plan_v1.txt","path":"\/volume1\/web\/gpt\/repair_jobs\/ssh_answers\/20260525_132825_git_tracking_candidate_plan_v1.txt","title":"20260525_132825_git_tracking_candidate_plan_v1.txt","created_at":"2026-05-25 13:28:25","judgment":"SYSTEM_CRITICAL_STATUS_AUDIT_V1_PASS_WITH_GIT_WARN","url":"repair_jobs\/ssh_answers\/20260525_132825_git_tracking_candidate_plan_v1.txt"} |
| ↳ | `20260525_132431_git_untracked_root_cause_probe_v1.txt` | {"file":"20260525_132431_git_untracked_root_cause_probe_v1.txt","path":"\/volume1\/web\/gpt\/repair_jobs\/ssh_answers\/20260525_132431_git_untracked_root_cause_probe_v1.txt","title":"20260525_132431_git_untracked_root_cause_probe_v1.txt","created_at":"2026-05-25 13:24:31","judgment":"SYSTEM_CRITICAL_STATUS_AUDIT_V1_PASS_WITH_GIT_WARN","url":"repair_jobs\/ssh_answers\/20260525_132431_git_untracked_root_cause_probe_v1.txt"} |

## routing_regression

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `natural_query_expected_tool` | overall=FAIL total=4 ok=0 warn=0 fail=4 |
| ❌ `FAIL` | `life_memo_pending_no_pollution` | overall=FAIL total=4 ok=0 fail=4 |

## route_module_pipeline

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `toolselector_route_module_call_edges` | overall=OK total=30 ok=30 warn=0 fail=0 |

## system_gate_authority

| 상태 | 항목 | 내용 |
|---|---|---|
| ❌ `FAIL` | `allowed_tools_and_approval_enforced` | overall=FAIL total=8 ok=7 fail=1 |
| ↳ | `schedule` | 5월 히스토리 조회 |

## history_period_routes

| 상태 | 항목 | 내용 |
|---|---|---|
| ❌ `FAIL` | `month_recent_history_period_list` | overall=FAIL total=4 ok=3 fail=1 |
| ↳ | `keyword_children_history` | 애들 히스토리 |

## history_period_sources

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `personal_memo_inbox_called` | overall=OK total=10 ok=10 fail=0 |

## history_period_answer_format

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `saved_record_human_readable_list` | overall=OK total=11 ok=11 fail=0 |

## function_call_inventory

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `php_functions_and_calls_visible` | files=1458 classes=601 functions=6267 calls=76514 |

## object_call_graph

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `object_method_resolution_visible` | scopes=6262 edges=11821 object=6692/7122 static=4686/4699 |

## object_call_graph_triage

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `unresolved_calls_classified` | unresolved=443 classified=443 high=295 medium=27 low=75 info=46 |

## object_call_graph_residual

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `low_info_residual_accepted` | unresolved=443 high=295 medium=27 accepted=428 needs_review=15 |
| ↳ | `reports/php_object_call_graph_residual.json` | residual_needs_review |

## callable_surface

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `function_direct_call_policy` | functions=6267 callable=1804 blocked_or_internal=4463 |

## callable_gate

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `direct_call_gate_smoke` | overall=OK ok=3 fail=0 total=3 |

## codefix_write_policy

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `approved_write_gate` | overall=OK ok=4 fail=0 total=4 |

## run_events

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `latest_event_quality` | latest=2026-09-18 18:02:17 judgment=REQUEST_FINISHED has_error=false current_bytes=4480178 rotation_threshold_bytes=67108864 latest_bytes=8041 tail_max_bytes=8630 tail_errors=16 tail_empty_output=0 tail_repeated_inputs=9 tail_duplicate_rows=0 |

## runtime_logs

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `active_log_size_guard` | oversized_active_logs py_rag_trace=488257997 |

## rag_index

| 상태 | 항목 | 내용 |
|---|---|---|
| ⚠️ `WARN` | `faiss_freshness` | index_too_old age_sec=12679606 |

## local_lm

| 상태 | 항목 | 내용 |
|---|---|---|
| ✅ `OK` | `recent_gateway_quality` | latest_gateway_call_ok latest=2026-09-18 18:15:12 source=python_gateway model=exaone-3.5-7.8b-instruct purpose=python_rag_lm_messages latest_ms=288 latest_tps=83.33 recent_total=160 recent_ok=160 recent_fail=0 avg_ok_ms=5486 max_ok_ms=20274 avg_tps=76.3 |

## 다음 추천

- WARN/FAIL 항목부터 확인한다.
- pending 찌꺼기, DB 오염 후보, 등록 누락 도구를 우선 처리한다.

## 관리 원칙

- 이 건강검진은 읽기 전용이다.
- 실제 수정/삭제/승인은 별도 승인 흐름으로만 처리한다.
- 작업 후 `update_all_docs.php`가 실행되면 이 문서도 자동 갱신된다.

🧯 시스템 사고 감지
2026-09-19 12:57:40 · system_incident_guard_v2_active_resolved_20260508 · SYSTEM_INCIDENT_GUARD_V2_OK
정상
0
현재 사고
0
검토 후보
0
cleanup 후보
0
해결 완료
0
과거 증거