# OBS-004 — stderr für stdio-Server: stdout reserviert für Protocol
# Status: PASS
# Reasoning: Keine print()-Statements im src/ (CRITICAL-Anti-Pattern vermieden). logging.StreamHandler ist explizit auf sys.stderr konfiguriert. structlog läuft via stdlib-logging-Adapter (ProcessorFormatter), erbt damit den stderr-Handler. dual-Transport (stdio default, sse / streamable-http optional) verwendet identische Logging-Config — kein transport-abhängiger Switch.

## Modus: automated (print-Statements suchen)
$ grep -rnE 'print\(' src/ --include='*.py'
(no output)
=> PASS: keine print()-Statements im src/.

## Modus: automated (stderr-Konfiguration)
$ grep -rnE 'StreamHandler|sys\.stderr|sys\.stdout' src/
src/srgssr_mcp/logging_config.py:74:        handler = logging.StreamHandler(sys.stderr)
=> PASS: StreamHandler auf sys.stderr (NICHT sys.stdout).

## Modus: code_review (stderr-Konfiguration im Detail)
$ grep -B2 -A10 "StreamHandler" src/srgssr_mcp/logging_config.py
    if not any(getattr(h, "_srgssr_mcp_handler", False) for h in root.handlers):
        handler = logging.StreamHandler(sys.stderr)
        handler._srgssr_mcp_handler = True
        root.addHandler(handler)
=> PASS: idempotente Handler-Registrierung, keine Duplikate, garantiert stderr.

## Modus: console.log/info (TS — n/a für Python)
$ grep -rnE 'console\.log|console\.info' src/ --include='*.ts' --include='*.js'
(no output)
=> n/a (Python-only-Repo).

## Modus: dual-transport-Konsistenz
$ grep -A20 "if settings.transport == \"stdio\"" src/srgssr_mcp/server.py
    if settings.transport == "stdio":
        server.run(transport="stdio")
    else:
        server.run(transport=settings.transport, mount_path=settings.mount_path)
NOTE: Logging-Konfig läuft beim Import (configure_logging() in _app.py), unabhängig vom Transport. Kein transport-abhängiger Logging-Switch — Pass-Pattern erfüllt.
