feat(agent-centric-logging): consolidate CoT infra in shared, close REASON→REFLECT chains

- shared/cot_logger.py is SSOT; backend/cot_logger.py deleted
- elapsed_ms timing in all REFLECT markers
- Frontend: REASON→REFLECT/EXPLORE in all fetch/post/delete/requestApi
- Dynamic src: route.GET.api.plugins instead of hardcoded api.request_handler
- trace_id generated immediately (no 'no-trace'), X-Trace-ID in both directions
- Global error handlers (window error + unhandledrejection + error.svelte)
- Fixed duplicate logging (shared/logger.py double StreamHandler)
- propagate=False in configure_logger (was in ConfigManager = duplicated startup logs)
- belief_scope: 'Coherence OK' → '{anchor}: completed' + elapsed_ms
- Fixed 28 pre-existing test failures (scheduler sig, DB columns, DRAFT validation, etc)
This commit is contained in:
2026-07-12 19:30:57 +03:00
parent 24d3b7d1f9
commit a39a76c87f
58 changed files with 1532 additions and 916 deletions

View File

@@ -88,7 +88,9 @@ def test_new_key_only_mode():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -96,8 +98,6 @@ def test_new_key_only_mode():
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="new_key_only",
)
@@ -144,7 +144,9 @@ def test_baseline_expired_fallback():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -158,8 +160,6 @@ def test_baseline_expired_fallback():
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="new_key_only",
)
@@ -211,7 +211,9 @@ def test_full_mode_default():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -219,8 +221,6 @@ def test_full_mode_default():
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
@@ -254,12 +254,12 @@ def test_inactive_schedule_skips():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
@@ -285,12 +285,12 @@ def test_schedule_not_found_skips():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
@@ -332,7 +332,9 @@ def test_baseline_expired_full_mode():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -346,8 +348,6 @@ def test_baseline_expired_full_mode():
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
@@ -390,7 +390,9 @@ def test_execution_error_handled():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -398,8 +400,6 @@ def test_execution_error_handled():
execute_scheduled_translation(
schedule_id="sched-1",
job_id="job-1",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
@@ -447,7 +447,9 @@ def test_execution_run_status_failed_path():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -455,8 +457,6 @@ def test_execution_run_status_failed_path():
execute_scheduled_translation(
schedule_id="sched-fail",
job_id="job-fail",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)
@@ -494,7 +494,9 @@ def test_execution_notification_error():
with patch(
"src.plugins.translate.orchestrator.TranslationOrchestrator"
) as mock_orch_cls, \
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()):
patch("src.dependencies.get_async_job_runner", return_value=_make_coro_runner()), \
patch("src.core.database.SessionLocal", mock_session_maker), \
patch("src.dependencies.get_config_manager", return_value=mock_config):
mock_orch = MagicMock()
mock_orch.start_run.return_value = mock_run
mock_orch_cls.return_value = mock_orch
@@ -502,8 +504,6 @@ def test_execution_notification_error():
execute_scheduled_translation(
schedule_id="sched-notif",
job_id="job-notif",
db_session_maker=mock_session_maker,
config_manager=mock_config,
execution_mode="full",
)