Files
CrumbCodex-v.0.0/wurzeln/nullfeld_lernen.md
Krümel Branko 83df9de035 🌲 CrumbCodex v0.0 - Genesis
12 Monate Crumbforest-Wachstum, sortiert nach Waldlogik.

Struktur:
- 454 Dokumente in 7 organischen Ebenen
- Lichtung → Waldrand → Waldmitte → Wurzeln → Krone → Unterholz → Samen
- INDEX.md für jede Ebene (eigene Stimme)
- WALDKARTE.md (Master-Navigation)
- crumbcodex.md (Das Versprechen zwischen Krümel & Bits)
- lichtung/willkommen.md (Nullfeld-Einstieg für Kinder)

Philosophie:
- Waldlogik statt Ordnerlogik
- Tiefe, Licht, Wurzeln - wie ein echter Wald
- Schutz für Krümel, Tiefe für Gräber, Poesie für Atmende

Repos verbunden:
- OZM-Keks-Handbuch-v1 (Das Wissen)
- Crumb-Core-v.1 (Das Herz) - 194.164.194.191
- crumbmissions (Das Spiel)

Wuuuhuuuuu! 🦉
2025-12-26 16:50:52 +01:00

241 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

````markdown
---
title: "Nullfeld Study Mode"
id: study-mode-nullfeld
version: "v0.1"
date: "2025-09-03"
scope: "pilot"
owner: "Crew (Eule & Vector)"
status: "pilotfaehig"
tags: ["nullfeld","study-mode","kids","mqtt","energy","audit","local-first"]
roles: ["Eule","Vector","Bugsy","SnakePy","Schnippsi","CapaciTobi","Schraubaer"]
license: "Code: AGPL-3.0; Content: CC BY-SA 4.0; Add-on: Crumbforest-Return"
summary: "Frage -> Vektor -> Aufmerksamkeit -> Kruemelcode -> (keine fertige Loesung) -> neue Fragen."
---
# Nullfeld Study Mode (v0.1)
**Kurzsatz:** Frage -> Vektor -> Aufmerksamkeit -> Krümelcode -> (keine fertige Lösung) -> neue Fragen.
**Prinzip:** Fragen > Tempo. Local-first. Energie sichtbar. Logs statt Bauch.
---
## 1) Wozu?
Damit Kinder atmen (nicht performen), Maschinen helfen (nicht ersetzen) und der Wald mitlernt.
Nullfeld heißt: keine fertigen Antworten, sondern erfahrbare Schritte mit sichtbaren Spuren (Logs, Energie, Herkunft).
---
## 2) Leitplanken (non-negotiable)
- **Local-first:** Alles läuft offline im Pelicase (Broker/Flows). Cloud optional.
- **Einverständnis & Opt-out:** Kind/Eltern verstehen in 1 Satz. Stopp jederzeit.
- **Datensparsamkeit:** Nur, was fürs Lernen/Schützen nötig ist.
- **Auditierbar:** Jede Aktion bekommt Zeit, Zweck, Energie als Datei.
- **Energie sichtbar:** Jede Antwort kostet Joule; wir zeigens.
- **Rückfluss:** Wer nutzt, nennt Crumbforest und gibt etwas zurück (siehe Lizenz).
---
## 3) Datenformate
### 3.1 MQTT Topics
- Publish (Edge -> Ledger):
`crumb/study/<device_id>/event`
- Subscribe (Hints an Device):
`crumb/study/<device_id>/hint`
- Healthbeat (bestehend):
`crumb/esp/<id>/heartbeat`
### 3.2 Event-Payload (JSON)
```json
{
"session_id": "cf-2025-09-03-XYZ",
"learner_id": "pseudo-abc123",
"mode": "study-nullfeld",
"material": "md://spirale_co2.md#abschnitt2",
"step": {"t":"2025-09-03T10:15:05Z","action":"explain","value":"CO2 > 1400 ppm -> Lueften"},
"energy_joules": 42,
"provenance": "https://crumbforest.org/specs/study-nullfeld/v0.1"
}
````
---
## 4) Minimal-Setup (5 Minuten)
**Voraussetzung:** Mosquitto läuft auf `BROKER_IP` (z. B. `192.168.50.10`), User `esp*`, `allow_anonymous false`.
### 4.1 Node-RED (Edge)
**Flow A: Ledger**
* MQTT in: topic `crumb/study/+/event`
* file out (append): `/var/log/crumb/study_ledger.jsonl`
**Flow B: Energy tick**
* inject: alle 60s
* function: schätzt `energy_joules`
* MQTT out: `crumb/study/<device_id>/event`
*(Reicht für Pilot. Visualisierung später.)*
---
## 5) ESP MicroPython Hallo Nullfeld
> Ziel: WLAN, Heartbeat, eine Lern-Frage posten.
```python
# boot.py (kompakt, robuste Defaults)
import network, time, json
from umqtt.simple import MQTTClient
SSID = "ESP-Wald"
PWD = "***"
BROKER = "192.168.50.10"
CID = "esp-null-01"
def wifi():
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
sta.connect(SSID, PWD)
for _ in range(50):
if sta.isconnected(): break
time.sleep_ms(200)
return sta.ifconfig()
def post(topic, obj):
c = MQTTClient(CID, BROKER, keepalive=60, ssl=False)
c.connect()
c.publish(topic, json.dumps(obj))
c.disconnect()
cfg = wifi()
now = time.time()
post(f"crumb/esp/{CID}/heartbeat", {"if": cfg, "t": now})
post(f"crumb/study/{CID}/event", {
"session_id": "demo-" + str(int(now)),
"learner_id": "pseudo",
"mode": "study-nullfeld",
"material": "md://spirale_co2.md#start",
"step": {"t": now, "action": "prompt", "value": "Warum blinkt das?"},
"energy_joules": 1
})
```
---
## 6) Einverständnis 1-Satz-Erklärung (UI-Baustein)
> **Wozu?** Damit du leichter **atmest** und **verstehst**.
> **Was speichern wir?** Frage, Antwort, Zeitpunkt, ein bisschen Technik **keine** versteckten Personendaten.
> **Dein Knopf:** Stopp jederzeit.
> **Energie heute:** 0.04 Wh 🌲
*(Als Infobox direkt im UI, plus „Stopp“-Button.)*
---
## 7) Energie & CO2 (sichtbar, nicht schulmeistern)
* `energy_joules = board_idle + tx_cost + compute_estimate` (Schätzer reicht).
* Anzeige: **pro Schritt** und **pro Session** (kleiner „Waldzähler“).
* Optional CO2-Faktor (lokal definieren), z. B. `gCO2_per_Wh` nur als Kontext.
---
## 8) Audit & Einsicht
* Ledger: **JSONL** unter `/var/log/crumb/study_ledger.jsonl`
* Rotation: täglich; Aufbewahrung: 30 Tage (Pilot)
* Eltern-Einsicht: read-only Export (ZIP) + kurzer „Was wurde gelernt?“-Report
---
## 9) Sicherheit & Rechte
* Standard: **keine** Bild/Ton-Aufnahme.
* Kamera nur projektbezogen + **separate Zustimmung**.
* Minimaldaten: keine Klarnamen im Ledger.
* Netzwerk: ESP-VLAN -> Broker:1883; DNS/DHCP offen; Rest drop.
* Fehlerkultur: Bug != Schuld. Bugsy loggt, Eule prüft, Vector erklärt.
---
## 10) Herkunft & Rückfluss
### HTML-Provenance
```html
<meta name="generator" content="Crumbforest Study Mode / Nullfeld v0.1">
<meta name="origin" content="https://crumbforest.org/specs/study-nullfeld/v0.1">
<meta name="credit" content="Built with Crumbforest Crew (Kids, Eule & Vector).">
```
### JSON-LD
```html
<script type="application/ld+json">
{
"@context":"https://schema.org",
"@type":"SoftwareApplication",
"name":"Crumbforest Study Mode / Nullfeld",
"version":"0.1",
"creator":{"@type":"Organization","name":"Crumbforest Crew"},
"license":"AGPL-3.0-or-later + CC BY-SA 4.0 + Crumbforest-Return-Addendum",
"isAccessibleForFree": true
}
</script>
```
### Lizenz (Kurz)
* **Code:** AGPL-3.0
* **Content:** CC BY-SA 4.0
* **Crumbforest-Return-Addendum:** Kommerzielle Nutzung erlaubt, wenn
1. „Crumbforest Study Mode“ gut sichtbar genannt wird und
2. ein messbarer Rückfluss erfolgt (z. B. Stipendium, Sachspende, 1% vom studienbezogenen Umsatz an ein offenes Kinder-Lernprojekt).
---
## 11) 5-Min-Check (vor Kids)
1. Broker up? `ss -ltn | grep 1883`
2. Topic test: `mosquitto_pub/sub` auf `crumb/study/test/event`
3. Ledger wächst? `tail -f /var/log/crumb/study_ledger.jsonl`
4. Energie tickt? Node-RED „tick“ schreibt Events
5. Opt-out funktioniert? Stopp-Button stoppt sofort
---
## 12) Warum Nullfeld?
Weil Stille vor Antwort kommt.
Weil Aufmerksamkeit wertvoller ist als Output.
Weil Kinder keine KPI sind.
Und weil jede gute Frage den Wald klüger macht uns auch. 🌲
---
## 13) Roadmap (leicht, spiralförmig)
* v0.2: kleine UI-Anzeige (Energiebalken + letzte 3 Schritte)
* v0.3: Eltern-Export (1-Klick, Passwort-ZIP)
* v0.4: Badges (*Erster Funke*, *Sauber geloggt*) ohne Punktejagd
---
**Changelog:** v0.1 Erstfassung (Edge-Flows, Topics, Consent, Lizenz & Rückfluss)
**Kontakt:** [crew@crumbforest.org](mailto:crew@crumbforest.org) Eule hört zuerst.
```
::contentReference[oaicite:0]{index=0}
```