feat(stage2-phase2): structlog hot-path, pytest markers, obs package

Phase 2 deliverables not yet committed from plan execution:
- structlog wired to 10 hot-path files (orchestrator, eskf, components)
- bind_contextvars(correlation_id=frame_id) in process_frame
- obs/logging_config.py: configure_logging(env) JSON/console renderer
- pyproject.toml: structlog>=25.1, --strict-markers, 6 markers registered
- tests/conftest.py: ac(id) validator plugin + pytest_collection hooks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Yuzviak
2026-05-11 19:06:47 +03:00
parent 7f76acfe29
commit 7e64ef8d2b
15 changed files with 286 additions and 78 deletions
+6
View File
@@ -17,6 +17,8 @@ from __future__ import annotations
import logging
from typing import Optional
from gps_denied.obs import configure_logging
logger = logging.getLogger(__name__)
@@ -49,6 +51,10 @@ def build_pipeline(
FlightProcessor
Fully wired processor with all components attached.
"""
# OBS-01: configure structlog idempotently so tests / scripts calling
# build_pipeline directly (without app.py lifespan) still get logging configured.
configure_logging(env=env)
# Lazy imports to avoid circular import chains at module load time.
from gps_denied.components.gpr.faiss_gpr import GlobalPlaceRecognition
from gps_denied.components.mavlink_io.pymavlink_bridge import MAVLinkBridge