diff --git a/CHANGELOG.md b/CHANGELOG.md
index a0089e6..b89dabe 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## 1.0.2 - 2026-06-17
+- v1.0-Abnahme als `docs/V1_0_ACCEPTANCE.md` dokumentiert: erledigte,
+ teilweise erledigte und offene v1.0.x-Punkte sind getrennt sichtbar.
+- Dashboard-Startstatistik erweitert: Freigabebereitschaft, Aktiv/Shadow,
+ Gelernt/Wartet und gelernte Handlungen werden direkt im Startbereich
+ zusammengefasst.
+
## 1.0.1 - 2026-06-17
- Dashboard-UI nach v1-Korrektur neu strukturiert: feste Steuerungsleiste,
separate Geräteübersicht, klare Freigabe-/Detailfläche und Statusbereich.
diff --git a/README.md b/README.md
index 78938c1..4dbbd86 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,8 @@ nach einer ausdrücklichen Freigabe ausführen.
[`docs/OPERATIONS.md`](docs/OPERATIONS.md)
- Version 1.0.0 bedienen und prüfen:
[`docs/V1_0_0_OPERATING_GUIDE.md`](docs/V1_0_0_OPERATING_GUIDE.md)
+- Version 1.0.x Abnahme und offene Punkte:
+ [`docs/V1_0_ACCEPTANCE.md`](docs/V1_0_ACCEPTANCE.md)
- Arbeitsregeln für Coding-Agenten: [`AGENTS.md`](AGENTS.md)
## Reifegrad
diff --git a/addon/config.yaml b/addon/config.yaml
index 6c01046..4826c77 100644
--- a/addon/config.yaml
+++ b/addon/config.yaml
@@ -1,5 +1,5 @@
name: SillyHome Next
-version: "1.0.1"
+version: "1.0.2"
slug: sillyhome_next
description: Lernt automatisch aus deinem Verhalten und steuert freigegebene Aktoren
url: http://192.168.6.31:3000/pino/sillyhome-next
diff --git a/app/main.py b/app/main.py
index b04493f..6027191 100644
--- a/app/main.py
+++ b/app/main.py
@@ -105,7 +105,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]:
app = FastAPI(
title="SillyHome Next API",
description="Lokales Smart-Home-Intelligenzsystem für Home Assistant.",
- version="1.0.1",
+ version="1.0.2",
lifespan=lifespan,
)
app.state.settings = load_settings()
diff --git a/app/static/index.html b/app/static/index.html
index a8d60eb..864bcab 100644
--- a/app/static/index.html
+++ b/app/static/index.html
@@ -479,7 +479,16 @@ function renderDashboardStatus(dashboard) {
const stats = document.getElementById("dashboard-stats");
const system = dashboard.system || {};
const cache = dashboard.cache || {};
+ const actuators = dashboard.actuators || [];
const discoveryGroups = dashboard.discovery_groups || [];
+ const activeCount = actuators.filter(record => record.behavior_mode === "active").length;
+ const shadowCount = actuators.filter(record => record.behavior_mode !== "active").length;
+ const readyCount = actuators.filter(record => record.activation_ready).length;
+ const pendingCount = actuators.filter(record =>
+ ["pending_history", "pending_assignment", "archived"].includes(record.lifecycle_status)
+ ).length;
+ const trainedCount = actuators.filter(record => record.behavior_status === "trained").length;
+ const sampleTotal = actuators.reduce((sum, record) => sum + Number(record.sample_count || 0), 0);
const cacheLabel = cache.available
? `Cache aktuell mit ${cache.entity_count} Entities`
: "Cache wird nach Discovery aufgebaut";
@@ -497,7 +506,11 @@ function renderDashboardStatus(dashboard) {
`Prüfen: ${escapeHtml(system.review_required ?? 0)}`,
].join("");
stats.innerHTML = [
- `
Geladene Startdaten${escapeHtml((dashboard.actuators || []).length)} Geräte
`,
+ `Geladene Startdaten${escapeHtml(actuators.length)} Geräte
`,
+ `Freigabebereit${escapeHtml(readyCount)} Geräte
`,
+ `Aktiv / Shadow${escapeHtml(activeCount)} / ${escapeHtml(shadowCount)}
`,
+ `Gelernt / Wartet${escapeHtml(trainedCount)} / ${escapeHtml(pendingCount)}
`,
+ `Gelernte Handlungen${escapeHtml(sampleTotal)}
`,
`Discovery-Gruppen${escapeHtml(discoveryGroups.length)} Kategorien
`,
`Cache-Zeitpunkt${escapeHtml(cache.updated_at || "noch offen")}
`,
].join("");
diff --git a/docs/V1_0_0_OPERATING_GUIDE.md b/docs/V1_0_0_OPERATING_GUIDE.md
index 6915f88..28503f4 100644
--- a/docs/V1_0_0_OPERATING_GUIDE.md
+++ b/docs/V1_0_0_OPERATING_GUIDE.md
@@ -4,6 +4,10 @@ Diese Version stabilisiert den produktiven Kern: schnelle Dashboard-Nutzung,
lokales Caching, klare Aktor-/Sensor-Kategorien und nachvollziehbare Freigabe
gelernter Aktionen.
+Die detaillierte Abnahme steht in
+[`V1_0_ACCEPTANCE.md`](V1_0_ACCEPTANCE.md). Dort sind erledigte, teilweise
+erledigte und fuer v1.0.x offene Punkte getrennt dokumentiert.
+
## Grundprinzip
- Home Assistant bleibt die Quelle fuer aktuelle States und Services.
diff --git a/docs/V1_0_ACCEPTANCE.md b/docs/V1_0_ACCEPTANCE.md
new file mode 100644
index 0000000..5065287
--- /dev/null
+++ b/docs/V1_0_ACCEPTANCE.md
@@ -0,0 +1,80 @@
+# SillyHome Next v1.0 Acceptance
+
+Stand: 2026-06-17
+
+Diese Abnahme trennt belegte Umsetzung von offenen v1.0.x-Nacharbeiten. Der
+Funktionskern bleibt aktorzentriert: Nutzer waehlen Aktoren, SillyHome lernt
+Kontext und Verhalten, laeuft zuerst im Shadow-Modus und schaltet erst nach
+expliziter Freigabe.
+
+## Erfuellt
+
+- Versioniert, gepusht und installiert:
+ - `v1.0.0`: API-/Cache-Umbau
+ - `v1.0.1`: Dashboard-/Performance-Korrektur
+- Startpfad:
+ - `/v1/actuators/dashboard` liefert lokale Startdaten aus Store und Cache.
+ - Dashboard blockiert nicht mehr auf Discovery, Vorschlaegen oder
+ Automation-Refresh.
+ - Frontend bricht den Startdaten-Request nach 4,5 Sekunden ab und bleibt
+ bedienbar.
+- Cache:
+ - HA-Entity-Metadaten werden als `ha_entity_cache.json` gespeichert.
+ - Summary und Dashboard verwenden Friendly Name, Area und Device aus Cache.
+- Keine externen Abfragen im Dashboard-Startpfad:
+ - Kein Cloud-Ping, keine Fremd-API.
+ - HA-Zugriffe bleiben lokal gegen Home Assistant.
+- Dashboard:
+ - Orange ist Primaerfarbe.
+ - Cyan ist sichtbare Komplementaerfarbe.
+ - Rote UI-Flaechen wurden entfernt.
+ - Steuerung, beobachtete Geraete, Lernfortschritt/Freigabe und Systemstatus
+ sind getrennte Bereiche.
+ - Discovery, Vorschlaege und Automation-Suche laden erst bei Nutzeraktion.
+- Lernfortschritt und Freigabe:
+ - Karten zeigen Modus, Status, Handlungen, Vorhersage und Freigabestatus.
+ - Detailansicht zeigt Zuordnung, Sicherheit, Lernstand, Vorhersage,
+ Feedback, passende HA-Automationen und verwendete Sensoren/Zustaende.
+- Direkte HA-Nutzung:
+ - Aktor-Schaltungen laufen ueber Home-Assistant-Serviceaufrufe.
+ - Automation-Steuerung nutzt Home-Assistant-Endpunkte und gecachte
+ Automation-Metadaten.
+- Qualitaet:
+ - `pytest -q`
+ - `ruff check .`
+ - `mypy app backend tests`
+ - `git diff --check`
+
+## Teilweise Erfuellt
+
+- Bessere Statistik:
+ - Startbereich zeigt Aktoren, Freigabebereitschaft, Aktiv/Shadow,
+ Gelernt/Wartet, gelernte Handlungen, Discovery-Gruppen und Cache-Zeitpunkt.
+ - Noch offen: Verlaufsgrafiken, p95-Latenzen und Trendstatistik je Aktor.
+- Kontrollierte Abarbeitung und Queue:
+ - Reconciliation/Training laufen kontrolliert im Prozess und sind testbar.
+ - Noch offen: sichtbare Job-Queue mit Laufzeit, Fehlern und Retry-Status im
+ Dashboard.
+- Saubere Issues:
+ - v1.0.0-Issues #41 bis #47 wurden geschlossen.
+ - Rueckblickend waren sie zu grob; v1.0.x bekommt feinere Folgeissues fuer
+ Statistik, Queue-Sichtbarkeit und Performance-Budgets.
+
+## Offen Fuer v1.0.x
+
+- Echte Dashboard-Performance-Budget-Tests, die Start-HTML und
+ `/v1/actuators/dashboard` gegen ein 5-Sekunden-Limit messen.
+- Dashboard-Jobstatus fuer Reconciliation, Training, Discovery und
+ Automation-Refresh.
+- Mehr Entscheidungsstatistik pro Aktor: welche Sensoren wie stark
+ beigetragen haben, wie sich Confidence und Sample Count entwickeln.
+- Dokumentierte HA-Installationspruefung mit Supervisor-/Ingress-Hinweisen,
+ weil direkte Container-HTTP-Pruefung ausserhalb HA nicht immer routbar ist.
+
+## Rollback
+
+- Git-Bundle-Backups liegen unter
+ `/root/.openclaw/workspace/backups/sillyhome-next/`.
+- Vor `v1.0.1` wurde ein Home-Assistant-Teilbackup des Add-ons angelegt.
+ Referenz: `18a5b387`.
+- Letzter Vor-1.0-Stand: `v0.7.21`.
diff --git a/pyproject.toml b/pyproject.toml
index 0c3efcc..e30b8a0 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "sillyhome-next"
-version = "1.0.1"
+version = "1.0.2"
description = "Lokales Smart-Home-Intelligenzsystem für Home Assistant"
requires-python = ">=3.11"
dependencies = [