docs: F-01 done — skeleton deployed, board + manifest aktualisiert
F-01 auf ✅, F-03/F-04/F-05 auf 🔲 (ready). R-0001/R-0002/R-0003/R-0008/R-0009 done. Session-Log F-01-2026-06-03 angelegt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
10
ROADMAP.md
10
ROADMAP.md
@@ -39,10 +39,10 @@ F-01 (Skeleton) ──┬──► F-03 (Whitelist) ──┐
|
|||||||
|
|
||||||
| ID | Item | Typ | Status | Prereqs | Rolle · Modell | Aufwand |
|
| ID | Item | Typ | Status | Prereqs | Rolle · Modell | Aufwand |
|
||||||
|----|------|-----|--------|---------|----------------|---------|
|
|----|------|-----|--------|---------|----------------|---------|
|
||||||
| F-01 | Projekt-Skeleton (pyproject.toml, Paketstruktur, CI-Stub) | 🧱 | 🔲 | — | Worker · Sonnet | ~0.5 d |
|
| F-01 | Projekt-Skeleton (pyproject.toml, Paketstruktur, CI-Stub) | 🧱 | ✅ | — | Worker · Sonnet | ~0.5 d |
|
||||||
| F-03 | Whitelist-Middleware (User-ID-Allowlist, Env-Var-Config) | 🧱 | ⏸ | F-01 | Worker · Sonnet | ~0.5 d |
|
| F-03 | Whitelist-Middleware (User-ID-Allowlist, Env-Var-Config) | 🧱 | 🔲 | F-01 | Worker · Sonnet | ~0.5 d |
|
||||||
| F-04 | Telegram-Bot-Handler (Polling-Loop, /start, /help, Nachricht-Relay) | 🔌 | ⏸ | F-01 | Porter · Sonnet | ~1 d |
|
| F-04 | Telegram-Bot-Handler (Polling-Loop, /start, /help, Nachricht-Relay) | 🔌 | 🔲 | F-01 | Porter · Sonnet | ~1 d |
|
||||||
| F-05 | Modell-HTTP-Connector (httpx-Client gegen konfigurierbaren OpenAI-compat Endpoint) | 🔌 | ⏸ | F-01 | Porter · Sonnet | ~0.5 d |
|
| F-05 | Modell-HTTP-Connector (httpx-Client gegen konfigurierbaren OpenAI-compat Endpoint) | 🔌 | 🔲 | F-01 | Porter · Sonnet | ~0.5 d |
|
||||||
| F-06 | Integration & Smoke-Test (Whitelist + Handler + Connector verdrahtet, E2E-Test) | 🧱 | ⏸ | F-03, F-04, F-05 | Worker · Sonnet | ~1 d |
|
| F-06 | Integration & Smoke-Test (Whitelist + Handler + Connector verdrahtet, E2E-Test) | 🧱 | ⏸ | F-03, F-04, F-05 | Worker · Sonnet | ~1 d |
|
||||||
| F-07 | Deployment-Config (.env.example, Docker oder systemd-Unit) | 🧱 | ⏸ | F-06 | Worker · Haiku | ~0.5 d |
|
| F-07 | Deployment-Config (.env.example, Docker oder systemd-Unit) | 🧱 | ⏸ | F-06 | Worker · Haiku | ~0.5 d |
|
||||||
|
|
||||||
@@ -54,4 +54,4 @@ F-01 (Skeleton) ──┬──► F-03 (Whitelist) ──┐
|
|||||||
## Done
|
## Done
|
||||||
| ID | Item | Session | Commit |
|
| ID | Item | Session | Commit |
|
||||||
|----|------|---------|--------|
|
|----|------|---------|--------|
|
||||||
| — | — | — | — |
|
| F-01 | Projekt-Skeleton | F-01 (2026-06-03) | `82eb6a6` |
|
||||||
|
|||||||
17
STATE.md
17
STATE.md
@@ -2,24 +2,21 @@
|
|||||||
|
|
||||||
> Einzige Quelle für "wo stehen wir". Jede Session aktualisiert dies am Ende.
|
> Einzige Quelle für "wo stehen wir". Jede Session aktualisiert dies am Ende.
|
||||||
|
|
||||||
**Letzte Session:** S-BOOTSTRAP / 2026-06-03 · **Aktive Rolle:** leader
|
**Letzte Session:** F-01 / 2026-06-03 · **Aktive Rolle:** worker
|
||||||
|
|
||||||
## Now (in dieser Session im Fokus)
|
## Now (in dieser Session im Fokus)
|
||||||
- Scope-Korrektur: Jetson/Modell-Server ist extern — F-02-Spike entfernt, DAG vereinfacht.
|
- _(keine laufende Arbeit)_
|
||||||
|
|
||||||
## In Progress (begonnen, nicht fertig)
|
## In Progress (begonnen, nicht fertig)
|
||||||
- _(keine — bereit zum Dispatch)_
|
- _(keine — F-01 ist gemerged)_
|
||||||
|
|
||||||
## Blocked
|
## Blocked
|
||||||
- F-03 Whitelist — wartet auf F-01 (`⏸`).
|
|
||||||
- F-04 Bot-Handler — wartet auf F-01 (`⏸`).
|
|
||||||
- F-05 Model-Connector — wartet auf F-01 (`⏸`).
|
|
||||||
- F-06 Integration — wartet auf F-03 + F-04 + F-05 (`⏸`).
|
- F-06 Integration — wartet auf F-03 + F-04 + F-05 (`⏸`).
|
||||||
- F-07 Deployment — wartet auf F-06 (`⏸`).
|
- F-07 Deployment — wartet auf F-06 (`⏸`).
|
||||||
|
|
||||||
## Next (priorisiert)
|
## Next (priorisiert)
|
||||||
1. **F-01** dispatchen (Worker · Sonnet) — `session-prompts/F-01-skeleton.md`.
|
1. F-03, F-04, F-05 können **parallel** dispatcht werden (alle prereqs ✅).
|
||||||
2. Nach F-01 ✅: F-03, F-04, F-05 können **parallel** dispatcht werden.
|
Prompts: noch zu erstellen (Leader-Aufgabe).
|
||||||
|
|
||||||
## Offene Audit-Findings
|
## Offene Audit-Findings
|
||||||
- _(keine)_
|
- _(keine)_
|
||||||
@@ -27,4 +24,6 @@
|
|||||||
## Datei-Ownership (aktiv)
|
## Datei-Ownership (aktiv)
|
||||||
| Paket | Dateien/Pfade | Owner |
|
| Paket | Dateien/Pfade | Owner |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| skeleton | `pyproject.toml`, `src/`, `tests/` | worker-F01 |
|
| whitelist | `src/bot/whitelist.py`, `tests/test_whitelist.py` | worker-F03 |
|
||||||
|
| handler | `src/bot/handlers.py`, `src/main.py`, `tests/test_handlers.py` | worker-F04 |
|
||||||
|
| connector | `src/bot/connector.py`, `tests/test_connector.py` | worker-F05 |
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ Eine Zeile je Erfolgskriterium. Der Reviewer prüft Spalte für Spalte.
|
|||||||
|
|
||||||
| ID | Anforderung | Datei(en) | Test/Prüfbefehl | Status |
|
| ID | Anforderung | Datei(en) | Test/Prüfbefehl | Status |
|
||||||
|----|-------------|-----------|-----------------|--------|
|
|----|-------------|-----------|-----------------|--------|
|
||||||
| R-0001 | `uv sync` läuft ohne Fehler | `pyproject.toml`, `uv.lock` | `uv sync` | todo |
|
| R-0001 | `uv sync` läuft ohne Fehler | `pyproject.toml`, `uv.lock` | `uv sync` | done |
|
||||||
| R-0002 | Pytest-Suite grün | `tests/` | `uv run pytest tests/ -v` | todo |
|
| R-0002 | Pytest-Suite grün | `tests/` | `uv run pytest tests/ -v` | done |
|
||||||
| R-0003 | Ruff meldet 0 Befunde | `src/`, `tests/` | `uv run ruff check src/ tests/` | todo |
|
| R-0003 | Ruff meldet 0 Befunde | `src/`, `tests/` | `uv run ruff check src/ tests/` | done |
|
||||||
| R-0004 | Bot antwortet nur auf whitelistete User-IDs | `src/bot/whitelist.py` | `uv run pytest tests/test_whitelist.py -v` | todo |
|
| R-0004 | Bot antwortet nur auf whitelistete User-IDs | `src/bot/whitelist.py` | `uv run pytest tests/test_whitelist.py -v` | todo |
|
||||||
| R-0005 | Nicht-whitelistete User erhalten keine Antwort | `src/bot/whitelist.py` | `uv run pytest tests/test_whitelist.py::test_blocked_user -v` | todo |
|
| R-0005 | Nicht-whitelistete User erhalten keine Antwort | `src/bot/whitelist.py` | `uv run pytest tests/test_whitelist.py::test_blocked_user -v` | todo |
|
||||||
| R-0006 | Connector sendet POST /v1/chat/completions an MODEL_BASE_URL | `src/bot/connector.py` | `uv run pytest tests/test_connector.py -v` | todo |
|
| R-0006 | Connector sendet POST /v1/chat/completions an MODEL_BASE_URL | `src/bot/connector.py` | `uv run pytest tests/test_connector.py -v` | todo |
|
||||||
| R-0007 | Modell-Antwort wird an User zurückgesendet | `src/bot/handlers.py` | `uv run pytest tests/test_handlers.py -v` | todo |
|
| R-0007 | Modell-Antwort wird an User zurückgesendet | `src/bot/handlers.py` | `uv run pytest tests/test_handlers.py -v` | todo |
|
||||||
| R-0008 | Config lädt aus Env-Vars ohne Exception | `src/bot/config.py` | `uv run pytest tests/test_config.py -v` | todo |
|
| R-0008 | Config lädt aus Env-Vars ohne Exception | `src/bot/config.py` | `uv run pytest tests/test_config.py -v` | done |
|
||||||
| R-0009 | `.env` nicht im Git-Index | `.gitignore` | `git ls-files .env` → leer | todo |
|
| R-0009 | `.env` nicht im Git-Index | `.gitignore` | `git ls-files .env` → leer | done |
|
||||||
|
|
||||||
Status: `todo` · `in_progress` · `done` · `drift` (vom Audit markiert).
|
Status: `todo` · `in_progress` · `done` · `drift` (vom Audit markiert).
|
||||||
|
|||||||
38
sessions/F-01-2026-06-03.md
Normal file
38
sessions/F-01-2026-06-03.md
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
# Session F-01 — 2026-06-03
|
||||||
|
|
||||||
|
- **Rolle:** worker
|
||||||
|
- **Modell:** Sonnet 4.6
|
||||||
|
- **Ziel:** Projekt-Skeleton für tg-bot-jetson anlegen
|
||||||
|
|
||||||
|
## Geändert (Dateien — Repo: tg-bot-jetson)
|
||||||
|
- `pyproject.toml` — deps: python-telegram-bot v21, httpx, pydantic-settings; dev: pytest, ruff
|
||||||
|
- `src/bot/config.py` — Settings-Klasse mit lru_cache-Factory
|
||||||
|
- `src/bot/{whitelist,handlers,connector}.py` — Platzhalter
|
||||||
|
- `src/main.py` — Platzhalter
|
||||||
|
- `tests/test_config.py` — 3 Tests
|
||||||
|
- `.env.example`, `.gitignore`
|
||||||
|
|
||||||
|
## Entscheidungen
|
||||||
|
- pydantic-settings v2 parst `list[int]` via JSON-Array-Format (`[111,222]`),
|
||||||
|
nicht Comma-Separated. `.env.example` und Tests entsprechend angepasst.
|
||||||
|
- `settings` wird nicht auf Modulebene instantiiert — stattdessen `get_settings()`
|
||||||
|
mit `@lru_cache`, damit Tests und Prod unabhängig bleiben.
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
- `uv run pytest tests/ -v` → 3 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 (Skeleton-Code — Worker-Session)
|
||||||
|
|
||||||
|
## Handoff / Next
|
||||||
|
- F-03 (Whitelist), F-04 (Bot-Handler), F-05 (Connector) sind jetzt alle frei.
|
||||||
|
- Leader erstellt die drei Prompts und dispatcht sie parallel.
|
||||||
|
- Review-Gate nötig? Ja — Opus-Session auf Commit `82eb6a6`.
|
||||||
|
|
||||||
|
## Clean-Start-Check
|
||||||
|
- [x] Orientierung allein aus AGENTS/STATE/CONVENTIONS möglich.
|
||||||
Reference in New Issue
Block a user