18 Commits
Author SHA1 Message Date
eltonandClaude Fable 5.1 279d022afd Nimm die Quellen-Checkouts aus der Ablage heraus
Andreas 04.09.: "nimm den info-checkout aus silverbullet raus". Die
Quellen liegen jetzt unter <data>/quellen/<name> neben der Ablage — die
Oberfläche sieht sie nicht mehr. Der Index führt sie unter dem
virtuellen Pfad <ns>/doku/<name>/…, read löst ihn auf die Datei im
Checkout auf (mit Wurzelprüfung). Kein Zurückschreiben mehr: geändert
wird im Quell-Repo, gelesen über die gebaute MkDocs-Seite.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 22:14:59 +02:00
eltonandClaude Fable 5.1 a8704fcddd Beschreibe den Doku-Leseweg über die gebaute MkDocs-Seite
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 20:03:07 +02:00
eltonandClaude Fable 5.1 125a8b9c0f Baue die Doku-Quellen als statische MkDocs-Seite
Andreas 04.09.: SilverBullet ist für die Doku nicht das Richtige — die
Doku soll aussehen wie sie soll, lesen statt editieren, und ohne
Auto-Commit-Problem. km baut deshalb je Quelle mit mkdocs.yml nach jedem
Pull mit Änderung eine statische Seite nach <data>/site/<name>; Caddy
liefert sie unter /doku/<name>/ aus. Ein Baufehler lässt die alte Seite
stehen und wird im Lauf gemeldet. Image bekommt mkdocs-material.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 19:58:57 +02:00
eltonandClaude Fable 5.1 91a4d8c8a6 Nenne die richtige gitignore-Liste im deploy-README
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 19:54:37 +02:00
eltonandClaude Fable 5.1 371d65c87a Behalte _plug/ in der Ablage — die Seitenleiste braucht die Datei
TreeView-Plug für SilverBullet, konfiguriert in CONFIG; ohne die
committete Plug-Datei fehlt nach einem frischen Checkout die Navigation.
Doku im deploy-README.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 19:54:16 +02:00
eltonandClaude Fable 5.1 d63ffa1bec Nimm weitere Git-Repos als Quellen in die Ablage — zuerst die info-Doku
KM_SOURCES=name=url@branch legt je Quelle einen Checkout unter
<ns>/doku/<name> in der Ablage an. SilverBullet sieht die Seiten, der
Index nimmt sie mit (typ doku, projekt = Name), und je Takt gehen
Änderungen aus der Oberfläche als Commit ins Quell-Repo zurück, danach
pull --rebase. Die Ablage ignoriert */doku/, damit die Wahrheit nur im
Quell-Repo liegt. Vorerst komplett und ungefiltert (Andreas 04.09.:
"sobald hive.corp steht, trennen wir die Quellen"). Doku in
docs/quellen.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 19:26:15 +02:00
eltonandClaude Fable 5.1 f133cdd869 Beschreibe den Betrieb von km auf hive.home
Wirt, Ports, Volume, Routen über Caddy, Einrichtung und die drei Dinge,
die beim ersten Aufsetzen Zeit gekostet haben.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:56:24 +02:00
eltonandClaude Fable 5.1 4d9a8399a6 Überspringe Repos ohne Issue-Einheit und lass ein Repo nicht alle stoppen
www.ent-spannung.de auf git.home hat Issues abgeschaltet; jeder
Issue-Endpunkt antwortet dort mit 404 und riss den ganzen Lauf. Jetzt
filtert die Repo-Liste nach has_issues, ein 404 auf die Kommentare gilt
als leer, und ein Fehler je Repo landet im Ergebnis statt im Abbruch.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:54:25 +02:00
eltonandClaude Fable 5.1 0a13de7ab1 Verlasse dich nicht auf compose-Defaults
podman-compose auf Debian 13 reicht ${VAR:-x} wörtlich durch; km bekam
den Platzhalter als Repo-Namen. Jede Variable steht jetzt in der .env
(Vorlage deploy/env.example), und die Konfiguration verwirft Werte, die
wie ein unersetzter Platzhalter aussehen.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:52:22 +02:00
eltonandClaude Fable 5.1 6fc1e1a3c6 Gib km die interne Root-CA mit
Ohne das CA-Bündel des Wirts scheitert jeder Aufruf an git.home an
CERTIFICATE_VERIFY_FAILED, weil requests sein eigenes Bündel benutzt.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:50:45 +02:00
eltonandClaude Fable 5.1 0770ff06f0 Initialisiere die Ablage in place statt zu klonen
SilverBullet mountet dasselbe Volume und legt seine Dateien an, bevor km
dran ist — der clone scheiterte auf hive.home an einem nicht leeren
Verzeichnis. Jetzt: init im Verzeichnis, Remote holen, Branch auschecken
wenn vorhanden, sonst legt der erste Push ihn an. Die Eigendateien der
Oberfläche (.silverbullet*, _plug/) kommen in die .gitignore der Ablage.
Dazu die restlichen Umlaute im compose-Kommentar.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:49:17 +02:00
eltonandClaude Fable 5.1 996d82b26f Korrigiere den zweiten Umlaut im compose-Kommentar
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:48:11 +02:00
eltonandClaude Fable 5.1 a99f6eaf68 Korrigiere den Umlaut im compose-Kommentar
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:46:46 +02:00
eltonandClaude Fable 5.1 9b8b3d98ad Mache km zum Dienst: HTTP-API, Takt, Git-Ablage, Image und compose
Ein Prozess (image/km/main.py) mit API (read, search, summary, health,
refresh) auf Standardbibliothek und einem Takt, der die Ablage zieht,
Gitea einliest, indexiert und alles Geänderte committet und pusht — auch
Änderungen aus SilverBullet. Die Ablage ist ein Git-Checkout auf dem
Volume, der Index eine SQLite-Datei daneben; ein Start ohne nötige
Umgebung hält mit einer Liste an.

deploy/compose.yml: km plus SilverBullet auf demselben Volume, für den
oci-Betrieb in hive.home unter /km (SB_URL_PREFIX). deploy/health für
42i-hc. Lokal gegen ein Bare-Remote und spine/core durchgespielt: Ingest,
Index, Commit, Push, Suche, Read mit Kanten in beide Richtungen, und eine
von Hand angelegte Seite landet im nächsten Takt im Remote.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:44:50 +02:00
eltonandClaude Fable 5.1 4986ef0575 Baue den Index als SQLite mit FTS5 und sqlite-vec, dazu die Suche
Entscheidung Andreas 2026-09-04 (spine/core#8): kein Datenbankdienst. Der
Index ist eine abgeleitete Sicht auf die Markdown-Ablage in einer Datei im
Volume, jederzeit neu baubar. image/km/index.py zerlegt die Dateien in
Chunks (Chunking aus info/ai/scripts/index_docs.py übernommen), hält
Volltext in FTS5 und Vektoren aus bge-m3 in sqlite-vec, inkrementell über
SHA-256 je Datei. image/km/search.py sucht Volltext führend, Vektor
ergänzend, mit Filtern vor dem Ranking (0 Treffer statt gesperrt).

Ingest: Kommentare bei der Erstbefüllung repo-weit statt je Vorgang —
die erste Fassung hing bei live/live nach 371 Vorgängen; jetzt 2175 in zwei
Minuten. Gemessen: Volltext über 61.000 Chunks in 3 s, Vektoren 0,31 s je
Chunk auf der CPU-Box. Kein Bytecode mehr im Repo.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:04:35 +02:00
eltonandClaude Fable 5.1 1e08de2d05 Hole Tickets und Kommentare aus Gitea in die km-Ablage
Erster Baustein von spine/core#13: image/km/ingest_gitea.py liest Issues,
Pull Requests und Kommentare je Repo oder Organisation und schreibt je
Vorgang eine Markdown-Datei mit Frontmatter (Zustand, Labels, Milestone,
Beteiligte, Zeitstempel, Verweise auf andere Vorgänge als Kanten) unter
<ablage>/<namespace>/vorgaenge/<owner>/<repo>/<nummer>.md.

Inkrementell über since je Repo, idempotent, Stand erst nach vollständigem
Durchlauf. Zugang aus OpenBao wie beim Gitea-Helfer, nie in der Ausgabe.
Schreibt nichts nach Gitea zurück. Gemessen: 1165 Vorgänge in drei Minuten.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 17:29:44 +02:00
elton 2353d3725d Das Chart gehoert hive -- das Compose ist die Referenz, nicht der Notbehelf
Andreas: "lass das chart raus, das ist hive. Aber compose rein. das ist
das demo fuer das chart. damit ist auch der schnitt klar: hive hat charts
und deren orchestrierung, aber bedient sich fuer allgemeine dienste bei
spine statt es selber zu bauen. Selber bauen nur fuer sachen, die nur
hive braucht und sonst niemand."

chart/ ist raus. Damit aendert sich die Rolle des Compose: Es ist nicht
die Uebergangsform bis zum Chart, sondern die lauffaehige Vorfuehrung des
Dienstes. Wer ein Chart baut, sieht daran, welche Images, welche Umgebung
und welche Volumes noetig sind -- und kann es gegen etwas Laufendes
pruefen statt gegen eine Beschreibung.

Der Schnitt steht jetzt im README, mit dem Pruefstein: Braucht es ausser
hive noch jemand? Dann spine. km ist genau so ein Fall -- er entsteht
hier, ausserhalb von hive, weil die 42i ihn braucht, und ist damit
erwiesenermassen uebergreifend.

Und die Referenz schuldet einem kuenftigen Chart, was das team-Chart uns
geschuldet hat: nicht nur DASS eine Einstellung so ist, sondern WARUM.
Dessen drei teuer gelernte Punkte liefen beim Nachbau in der 42i ohne
eine einzige eigene Entdeckung durch.
2026-09-02 06:50:39 +02:00
elton 96ba3fdcb4 spine/km: das Zuhause fuer den Wissensdienst
Andreas: "lass uns ein repo in spine machen, fuer das knowledge
management thema. Darin sollen images gebaut werden und ein compose und
charts, sodass daraus dann km.lan betrieben werden kann. alles zu dem
thema kann dann da rein wandern, als doku und als tickets."

Vier Verzeichnisse: image/ fuer den Dienst, deploy/ fuer den Betrieb
heute (LXC und podman ueber oci), chart/ fuer den Betrieb spaeter (hive
und k8s), docs/ fuer Konzept und Entscheidungen.

Compose und Chart sind ausdruecklich gleichrangig und beschreiben
DENSELBEN Dienst. Beim Teamspace hat genau das getragen: Das hive-Chart
war die Vorlage, und seine drei teuer gelernten Einstellungen liefen in
der 42i ohne eine einzige eigene Entdeckung durch. Driften sie, wird der
Umzug nach k8s ein Neubau statt eines Wechsels.

docs/konzept.md fuehrt spine/core#8 zusammen: Andreas Entwurf woertlich,
dazu die Praezisierungen aus den Kommentaren -- Konzepte als eigene
Kategorie, Projekt als zweite Achse, und dass ein Eintrag ohne
Projekt-Tag der Organisation gehoert statt keinem. Mit den offenen
Punkten, die noch niemand entschieden hat.

Das README benennt zwei Dinge, die man sonst spaeter diskutiert: warum
das Repo von der spine-Konvention abweicht (Image und Chart liegen sonst
zentral -- km ist eigene Entwicklung, kein fertiges Upstream-Produkt),
und dass hive den Dienst verwenden kann, weil er nichts 42i-spezifisches
eingebaut hat.
2026-09-02 06:48:21 +02:00