# Session F-03/04/05 — 2026-06-03 - **Rolle:** worker - **Modell:** Sonnet 4.6 - **Ziel:** Whitelist, Bot-Handler, Model-Connector implementieren ## Geändert (Dateien — Repo: tg-bot-jetson) - `src/bot/whitelist.py` — `get_whitelist_filter()` via `filters.User(user_id=...)` - `src/bot/connector.py` — `ask_model()` async httpx POST /v1/chat/completions - `src/bot/handlers.py` — `cmd_start`, `cmd_help`, `handle_message` - `src/main.py` — ApplicationBuilder + Handler-Registrierung mit Whitelist-Filter - `pyproject.toml` — `pythonpath = ["src"]` für pytest - `tests/test_whitelist.py`, `tests/test_connector.py`, `tests/test_handlers.py` ## Entscheidungen - PTB v22 installiert (nicht v21 wie in pyproject.toml spezifiziert, da >= 21). `filters.User(user_id=...)` — Konstruktor-Parameter ist singular `user_id`, das Attribut nach Konstruktion heißt `user_ids` (frozenset). - `pythonpath = ["src"]` in pytest nötig für src-Layout ohne editable-Install. - pydantic-settings v2: `list[int]`-Env-Var muss JSON-Array-Format `[1,2,3]` haben. ## Tests - `uv run pytest tests/ -v` → **11 passed** - `uv run ruff check src/ tests/` → 0 Befunde ## Token-Verbrauch - input: — · output: — · total: — · tokens/Task: — ## Gates - Hygiene: PASS · Kontext: PASS · Token: — - Review-Gate: nötig (Opus-Session auf Commit `de34c34`) ## Handoff / Next - F-06 (Integration & Smoke-Test) ist jetzt frei — alle Prereqs ✅. - Review-Gate nötig? Ja — Opus-Session auf `de34c34`. ## Clean-Start-Check - [x] Orientierung allein aus AGENTS/STATE/CONVENTIONS möglich.