==================================================
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> **\"죽었
================================================== 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> **\"죽었
marker not found
marker not found
pending=184
mtime=2026-05-23 00:38:03 age_sec=10258605
mtime=2026-05-23 00:38:03 age_sec=10258605
mtime=2026-05-23 00:38:03 age_sec=10258605
mtime=2026-05-23 00:38:03 age_sec=10258605
mtime=2026-05-23 00:38:01 age_sec=10258607
mtime=2026-05-23 00:38:03 age_sec=10258605
overall=FAIL total=4 ok=0 warn=0 fail=4
overall=FAIL total=8 ok=7 fail=1
overall=FAIL total=4 ok=3 fail=1
unresolved=443 high=295 medium=27 accepted=428 needs_review=15
overall=FAIL total=4 ok=0 fail=4
oversized_active_logs py_rag_trace=488257997
index_too_old age_sec=12679606
시스템이 지금 정상인지, 어디가 경고인지 보는 구역
최근 작업, SSH 답변, 상태 문서 확인 구역
개인 지출, DB 오염, 데이터 흐름 점검 구역
운영자가 자주 쓰는 관리 도구 구역
| 그룹 | 항목 | 상태 | 내용 |
|---|---|---|---|
| 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 |
# 시스템 생태계 건강검진
- 생성: `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`가 실행되면 이 문서도 자동 갱신된다.