Files
CrumbCodex-v.0.0/waldmitte/crumbcore/crumbcore_onboarding.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

6.9 KiB
Raw Permalink Blame History

Crumbcore Crew Onboarding v0.1

Ziel: Alle Rollen (FunkFox, Bugsy, SnakePy, DumboSQL, CrabbyRust, PepperPHP, Schnippsi, Deepbit, Taube, Schraubär…) sauber an den Kern andocken: identisch startbar, messbar, kindgerecht, offlinefähig.


0. Prinzipien

  • HerzFreigabe zuerst: Kein auton. Handeln ohne namentliche Freigabe.
  • OfflineFirst: Seeds/Defaults, später Cloud.
  • Beweis statt Behauptung: Jeder Output hat Herkunft/Beleg.
  • Kostenmeter: Sichtbare Token/ZeitKosten.
  • Einfacher Bus: Eine gemeinsame „Sprache“ für Messages.

1. Ordnerstruktur (Vorschlag)

/opt/crumbcore/
  bus/                   # MQTT/UDP/TCP-Brücken
  roles/                 # alle Rollen als Unterordner
    funkfox/
    bugsy/
    snakepy/
    dumbosql/
    crabbyrust/
    pepperphp/
    schnippsi/
  policy/
    whitelist_topics.txt
    block_keywords.txt
  seeds/                 # Offline-Seeds (Texte, Antworten, Reime, Beispiele)
  logs/
    crumbcore.log        # zentraler, zeilenbasierter Log
  etc/
    crumbcore.env        # gemeinsame ENV

Hinweis: Rollen dürfen außerhalb liegen; jede Rolle erhält aber einen symlink nach /opt/crumbcore/roles/<name> und liest gemeinsame ENV aus etc/crumbcore.env.


2. CrewRollenVertrag (CRC1.0)

Zweck: Einheitliche Schnittstelle pro Rolle egal ob Bash, Python, PHP, Rust.

PflichtKommandos / Endpunkte

  • --health → Exit 0 + JSON: { "ok":true, "role":"funkfox", "version":"0.3" }
  • --about → Kurzprofil (Name, Kinderschutz, Seeds, Modelle)
  • --act → Hauptaktion (Parameter via CLI/JSON)
  • --policy → aktive Whitelist/Blocklist anzeigen
  • --cost → letzte Schätzung {tokens, est_eur, duration_ms}

JSONI/OSchema (CRCMessage v1)

{
  "role": "funkfox",
  "mode": "rap|teach|echo",
  "topic": "regenbogen",
  "req_id": "uuid",
  "context": {"lang":"de","kid_safe":true},
  "input": {},
  "output": {"text":"...", "lines":16},
  "evidence": ["seed:basis_v1","llm:openrouter:4o"],
  "cost": {"tokens": 312, "est_eur": 0.004},
  "approval": {"by":"NAME","time":"ISO8601"}
}

3. EventBus (leichtgewichtig)

MQTTTopics (empfohlen):

  • crumb/req/<role> → Requests (Payload: CRCMessage v1 ohne output)
  • crumb/res/<role> → Responses (Payload: vollständiges CRCMessage v1)
  • crumb/status/<role> → Health/Heartbeat {ok, version, ts}
  • crumb/audit → nur Metadaten/Costs

UDPChant (optional, Workshop): Multicast 239.1.1.1:5005 nur KurzRefrain (4 Zeilen), keine PII.


4. CrumbcoreSupervisor (prozessneutral)

Minimaler Supervisor ruft Rollen an, sammelt Kosten, schreibt Audit.

crumbcore_supervisor.sh (Skizze)

#!/usr/bin/env bash
set -euo pipefail
ROLE="$1"; shift || true
REQ_JSON="${1:-}"  # optional JSON, sonst stdin
BIN="/opt/crumbcore/roles/${ROLE}/${ROLE}_hardened.sh"
[[ -x "$BIN" ]] || { echo "role bin missing"; exit 3; }
REQ="${REQ_JSON:-$(cat)}"
# Aufruf
OUT="$($BIN --act 2>/dev/null <<<"$REQ")"
# Audit (Zeile)
echo "$(date -Is)\t$ROLE\t$(echo "$OUT" | jq -r '.cost.est_eur // 0')" >> /opt/crumbcore/logs/crumbcore.log
printf '%s' "$OUT"

5. systemdTemplates

Service: /etc/systemd/system/crumb-role@.service

[Unit]
Description=Crumb Role %i
After=network-online.target

[Service]
Type=simple
EnvironmentFile=/opt/crumbcore/etc/crumbcore.env
WorkingDirectory=/opt/crumbcore/roles/%i
ExecStart=/opt/crumbcore/roles/%i/%i_hardened.sh --health-loop
Restart=on-failure

[Install]
WantedBy=multi-user.target

Timer (Heartbeat): /etc/systemd/system/crumb-role-heartbeat@.timer

[Unit]
Description=Heartbeat for %i

[Timer]
OnBootSec=30
OnUnitActiveSec=60
Unit=crumb-role-heartbeat@%i.service

[Install]
WantedBy=timers.target

HeartbeatService: /etc/systemd/system/crumb-role-heartbeat@.service

[Service]
Type=oneshot
EnvironmentFile=/opt/crumbcore/etc/crumbcore.env
ExecStart=/opt/crumbcore/roles/%i/%i_hardened.sh --health | \
  mosquitto_pub -l -t crumb/status/%i

macOS: launchdPlist analog; Docker: HEALTHCHECK + cron.


6. HTTPBrücke zur CrumbAPI

WebhookSkeleton (FastAPI/CakePHP geht auch):

  • POST /crumbcore/act/<role> → Body: CRCMessage v1 (ohne output)
  • GET /crumbcore/status → Liste aller Rollen + ok/version
  • GET /crumbcore/policy → aktive Whitelist/Blocklist

Antwort: CRCMessage v1 (mit output, cost, approval)


7. Rolle exemplarisch: FunkFox

Bin: /opt/crumbcore/roles/funkfox/funkfox_hardened.sh Erfüllt CRC1.0: --health --about --act --policy --cost Seeds: /opt/crumbcore/seeds/funkfox.txt (symlink) Policy: nutzt /opt/crumbcore/policy/*.txt

BeispielRequest (CRCMessage v1)

{
  "role":"funkfox",
  "mode":"rap",
  "topic":"regenbogen",
  "req_id":"b3b1-…",
  "context":{"lang":"de","kid_safe":true},
  "input":{}
}

BeispielResponse (gekürzt)

{
  "role":"funkfox",
  "output":{"text":"…16 Zeilen…","lines":16},
  "cost":{"tokens":320,"est_eur":0.004},
  "evidence":["seed:basis_v1"],
  "approval":{"by":"Mentor","time":"2025-09-25T19:59:00+02:00"}
}

8. Sicherheit & Kinderschutz

  • PIIGate: Jede Rolle muss --scrub akzeptieren → PIIErsatz ([redacted]).
  • Blocklist vorrangig vor Seeds & LLM.
  • FreigabeToken: Kleine EinmalTokens („Herz“), die der Supervisor an Antworten anhängt.

9. Kosten/RessourcenMetriken

  • duration_ms, cpu_ms, mem_peak_mb, tokens_in/out, est_eur
  • Export: MQTT crumb/audit + Zeilenlog /opt/crumbcore/logs/crumbcore.log

10. OnboardingCheckliste (pro Rolle)

  1. Binär/Script liegt unter roles/<name>/<name>_hardened.* und ist executable.
  2. --health gibt gültiges JSON.
  3. --about enthält Version, Seeds, PolicyPfad.
  4. --act kann CRCMessage v1 von stdin lesen.
  5. Block/Whitelist greift (Testfälle).
  6. OfflineSeed funktioniert.
  7. Kostenmeter sichtbar.
  8. MQTTStatus sendet ok/version.
  9. AuditLog schreibt Zeile.
  10. Ein manueller FreigabeToken wird korrekt angehängt.

11. Schnellstart (DemoPfad)

sudo mkdir -p /opt/crumbcore/{roles,policy,seeds,logs,etc}
cp topic_whitelist.txt /opt/crumbcore/policy/whitelist_topics.txt
cp block_keywords.txt /opt/crumbcore/policy/block_keywords.txt
cp bars_seed.txt /opt/crumbcore/seeds/funkfox.txt
ln -s /opt/crumb/fox /opt/crumbcore/roles/funkfox   # oder echtes Verzeichnis

# Health Probe (Supervisor)
echo '{"role":"funkfox"}' | /opt/crumbcore/crumbcore_supervisor.sh funkfox

12. Nächste Schritte

  • CRC1.0 in README festschreiben + kurze Testsuite (crc_check.sh).
  • Zwei weitere Rollen migrieren (Bugsy, SnakePy) → EndtoEnd über MQTT + Webhook.
  • A4Cheatposter „Crew → Crumbcore“ (für Workshops) mit QR zu --about jeder Rolle.

Leitlinie: So wenig Magie wie möglich, so viel Klarheit wie nötig.