--- type: types/source.md source_type: transcript author: Torben raw_files: ['raw/notes/Conversation Transcript - Public Release, Corpus Purge and History Squash Session 2026-09-01.md'] source_language: de date: 2026-09-01 tags: [] entities: [Chemenu, wikitool] concepts: [Mass-Update Gate, Delete Rather Than Anonymize, Dual Licensing by File Plan] summary: 'Sitzung, die den Chemenu-Stack von einer privaten Testinstanz in ein oeffentliches Repo ueberfuehrt: Korpus geloescht statt anonymisiert, Git-History auf einen Commit gesquashed, AGPL-3.0/CC-BY-4.0-Dual-Lizenz gewaehlt, dist export um einen Leak-Canary gehaertet.' fidelity: verbatim authority: reporting --- # Source: Public Release, Corpus Purge and History Squash Session 2026-09-01 **Autor:** Torben **Datum:** 2026-09-01 **Raw-Dateien:** raw/notes/Conversation Transcript - Public Release, Corpus Purge and History Squash Session 2026-09-01.md **Typ:** Notes ## Zusammenfassung Torben bat darum, den Chemenu-Korpus zu bereinigen und das Repo zu veröffentlichen, mit ausdrücklichem Wunsch nach Teufels-Advokat-Modus und einer kleinen Multi-Agent-Debatte. Drei parallele Explore-Agenten inventarisierten private Daten, den Distributionsmechanismus und die Git-History; die History-Prüfung erklärte den Baum fälschlich für „safe to publish", ohne `USER.md` je zu öffnen — ein Befund, der später den Ausschlag für den vollständigen History-Schnitt gab. Drei geforkte Debattierer (harte Trennung, geteiltes Upstream, Teufels-Advokat) argumentierten gegeneinander; die Synthese übernahm „löschen statt anonymisieren" und „History squashen" von der harten Position, das Clone-mit-Upstream-Modell von der geteilten Position, aber unter der Bedingung, dass ein Remote-Gate zuerst existiert — eine Bedingung, die der Teufels-Advokat mit seinem Leck-Argument erzwang. Nutzer traf vier Entscheidungen über `AskUserQuestion`: Gitea öffentlich schalten (kleinste Änderung), Korpus chirurgisch löschen, private Instanz als Clone mit Upstream und Gate zuerst, und als Lizenz AGPL-3.0 (Stack) + CC-BY-4.0 (Inhalte) — die Affero-Variante bewusst wegen Issue #19 (MCP-Frontend als Netzdienst). Ausgeführt wurde: Lizenzdateien (AGPL-Text von gnu.org geholt, nicht aus dem Gedächtnis rekonstruiert), ein Leak-Canary in `dist export` (`find_leaks()`, strukturell statt textbasiert, weil ein Muster-Scan den eigenen legitimen Host mit ausschließen müsste), die Korpus-Löschung (108 Seiten statt der im Plan geschätzten ~35, weil 40 Seiten mit generischen Titeln tatsächlich um die private Infrastruktur herum geschrieben waren), der History-Squash auf einen Commit, und die Veröffentlichung selbst. Zwei Annahmen wurden durch Messung widerlegt und korrigiert: Ein Force-Push allein reicht nicht — der alte HEAD blieb per SHA abrufbar, bis Reflogs auf dem Server verfielen und `gc --prune=now` lief. Und `rg`-Scans ohne `--hidden` übersehen `.gitea/`, `.github/`, `.vibe/` — ein zweiter Fund (private Referenzen in `ci.yml`) kam erst über `git grep` zum Vorschein. ## Kernaussagen - Ein Seitentitel ist der einzige Identifier des Wikis; Löschen (`wikitool rm`) ist dafür billiger und sicherer als Anonymisieren, das die volle `page-lifecycle`-Prozedur pro Seite verlangt. - Der eigentliche Preisgeber bei einem Infrastruktur-Handbuch ist die Topologie, nicht der Hostname — gefälschte IPs entschärfen keine Angriffskarte. - Ein Force-Push macht alte Commits unreferenziert, aber nicht unerreichbar: Sie bleiben per SHA fetchbar, bis Server-Reflogs verfallen sind und `git gc --prune=now` gelaufen ist. - `dist export`s Lizenz-Dateien mussten zur Pflicht werden (`REQUIRED_ROOT_FILES`), weil das übliche `if source.is_file()`-Muster eine fehlende Lizenz still überspringen würde — bei AGPL eine Verletzung, sobald eine Instanz öffentlich landet. - Ein Text-Muster-Scan für Leaks scheitert an legitimen Vorkommen des eigenen Hostnamens; ein struktureller Scan (welche Pfade/Dateien dürfen nie im Plan stehen) umgeht das. ## Aufgaben - [x] Korpus bereinigt, History gesquasht, Lizenzen gesetzt, Repo veröffentlicht (in dieser Sitzung erledigt) - [ ] Siehe Issue #27 (Decay-/Lint-Ausschluss für mitgelieferte Seiten) und #28 (Demo-Korpus als eigene Fixture) für Folgearbeit aus dieser Sitzung ## Nicht übernommen - Die konkreten Namen und Details der gelöschten privaten Infrastruktur (Hostnamen, IP-Bereiche, persönliche Angaben) sind bewusst nicht in diese Source-Seite übernommen — sie zu wiederholen widerspräche dem Zweck der Sitzung. Wo sie als Beispiel dienen mussten, steht hier nur die Art der Information (z. B. "eine Homelab-Cluster-Dokumentation"), nie der Wortlaut. - Der volle Wortlaut der drei Debattenpositionen ist nicht übernommen - nur ihre tragenden Argumente und was aus ihnen in die Synthese einging. Der vollständige Text steht im Transkript. ## Verwandte Entities - [[Chemenu]] - [[wikitool]] ## Verwandte Concepts - [[Mass-Update Gate]]