From 603319a145a31385c488cc506125bce06ee32105 Mon Sep 17 00:00:00 2001 From: Dogfather Date: Thu, 1 Oct 2026 20:04:28 +0200 Subject: [PATCH] Arbeitsschloss: zwei Sitzungen sehen sich jetzt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HEUTE ZWEIMAL NUR GUTGEGANGEN. Zwei Claude-Sitzungen arbeiteten gleichzeitig in diesem Verzeichnis, ohne voneinander zu wissen. Keine hat etwas falsch gemacht — sie konnten es nicht wissen. * Beide haben `git add -A` benutzt. Haette die eine unfestgeschriebene Arbeit der anderen im Baum gehabt, waere sie mitcommittet worden — unter fremdem Namen, in einer fremden Begruendung, und niemandem waere es aufgefallen. Nachgesehen: diesmal war nichts dabei. * Beide haben den Stempellauf gestartet. Der schreibt 45 Dateien um. Wer dort eine offen hatte, bekam sie unter den Haenden weg geaendert. Dasselbe hat in RunOne am 03.09.2026 sieben Minuten Ausfall gekostet. Dort gibt es seitdem `arbeitsschloss.sh`; diese Fassung uebernimmt seine Lehren. WAS ES IST UND WAS NICHT. Es ist kein Riegel — wer wirklich muss, kommt vorbei. Es beantwortet die eine Frage, die heute niemand beantworten konnte: „arbeitet hier gerade sonst jemand?" Die teuren Fehler liegen bei einem Schloss alle in derselben Richtung: Es blockiert zu viel und wird deshalb abgeschafft. Also: * Es blockiert NICHT, wenn das Schloss DEINES ist. RunOnes erste Fassung fragte „ist abgeschlossen" statt „haelt es jemand anders" — damit haette, wer ordentlich abschliesst, nie mehr ausliefern koennen. Dafuer gibt es `fremd`. * Es VERFAELLT nach zwei Stunden, und dass da jemand war, steht beim Uebernehmen dabei. * Es blockiert NICHT, wenn es selbst unlesbar ist — dritter Ausgang, kein Stillstand. * Notausgang: SCHLOSS_ZWANG=ja git commit … DAS PROBLEM, AN DEM RUNONE HAENGT, IST HIER GELOEST. Dort faellt die Kennung im Zweifel auf den Systembenutzer zurueck, und zwei Claudian-Sitzungen laufen BEIDE als `claudian` — die Sicherung griff ausgerechnet zwischen den zwei Faellen nicht, fuer die sie gebaut wurde. Deshalb ist dort `export ARBEITER=…` Pflicht, und Pflicht heisst: man vergisst es. Hier steht `CLAUDE_CODE_SESSION_ID` in jeder Sitzung und ist je Sitzung verschieden (nachgesehen, 36 Zeichen UUID). Zwei Sitzungen auf demselben Windows-Benutzer unterscheiden sich damit von selbst, ohne dass jemand etwas tun muss. Reihenfolge: ARBEITER, dann Sitzungskennung, dann Benutzername MIT Warnung. NIEMAND MUSS DARAN DENKEN: * die beiden Stempelwerkzeuge nehmen es selbst und geben es selbst frei — auch nach einem Absturz und bei Strg+C (wie `bauen.sh` im Shop; eines, an das man denken muss, wird vergessen und ab da umgangen) * `tools/git-haken/pre-commit` bricht jeden Commit ab, solange jemand ANDERS das Schloss haelt. Das ist die Stelle, die heute gefehlt hat: `git add -A` ist der Griff, den man ohne Nachdenken macht, und gegen einen Reflex hilft keine Regel auf Papier. * `core.hooksPath` statt `.git/hooks` — letzteres ist nicht versioniert und waere nach einem Klon genau dann leer, wenn es gebraucht wird. GEPRUEFT, server/pruef-arbeitsschloss.mjs: 33 Pruefungen, 0 Fehler — in einem WEGWERF-Verzeichnis mit eigenem git, damit kein echtes Schloss angefasst wird. Darunter am echten git: ohne Schloss committen -> geht (0) mit dem EIGENEN Schloss -> geht (0) mit einem FREMDEN Schloss -> bricht ab (1), nennt wer und warum und es stehen genau ZWEI Commits da, nicht drei SCHLOSS_ZWANG=ja -> kommt vorbei ohne das Schloss-Werkzeug -> laesst durch Dazu: verfallenes Schloss laesst durch, mit laengerer Frist blockt dasselbe Schloss wieder (Gegenprobe), unlesbarer Inhalt und unlesbarer Zeitstempel blockieren nicht. Portnummern nach der neuen Pruefdatei nachgemessen: Pruefbereich bis 5415, 462 Nummern, 0 Kollisionen. pruef-struktur 75/0, pruef-fingermass 5/0, pruef-ports 10/0. In DEPLOY.md steht es jetzt an erster Stelle — eine Sicherung, von der nur der weiss, der sie gebaut hat, ist die erste, die umgangen wird. Co-Authored-By: Claude Opus 5 --- .gitignore | 4 + 404.html | 16 +- DEPLOY.md | 46 ++++ abonnieren.html | 24 +-- agb.html | 14 +- aktion-detail.html | 18 +- assets/js/wd-core.js | 2 +- bewerben-creator.html | 22 +- bewerben-kooperation.html | 22 +- bewerben-modi.html | 22 +- bewerben-scout.html | 22 +- bewerben.html | 24 +-- casper.html | 30 +-- community.html | 22 +- creator.html | 22 +- dogfather.html | 22 +- gate.html | 16 +- hasidog.html | 26 +-- index.html | 44 ++-- kontakt.html | 16 +- links.html | 26 +-- manager.html | 26 +-- medien-casper.html | 26 +-- medien-dogfather.html | 28 +-- medien-hasidog.html | 28 +-- profil.html | 28 +-- rabattcodes.html | 22 +- server/pruef-arbeitsschloss.mjs | 256 ++++++++++++++++++++++ stimmen.html | 26 +-- streamer.html | 28 +-- streamplan.html | 22 +- supporter.html | 22 +- team-modis.html | 24 +-- team-scouts.html | 22 +- tools/arbeitsschloss.mjs | 371 ++++++++++++++++++++++++++++++++ tools/git-haken/pre-commit | 54 +++++ tools/seiten-stempel.mjs | 13 ++ tools/workspace-stempel.mjs | 13 ++ tt-muddi.html | 26 +-- vanvan.html | 26 +-- verwaltung.html | 38 ++-- webdesign/ablauf.html | 12 +- webdesign/anfrage.html | 14 +- webdesign/diagnose.html | 4 +- webdesign/faq.html | 12 +- webdesign/index.html | 20 +- webdesign/leistungen.html | 12 +- webdesign/portal.html | 14 +- webdesign/portfolio.html | 24 +-- webdesign/rechtliches.html | 12 +- webdesign/sw.js | 2 +- webdesign/ueber.html | 14 +- webdesign/verwaltung.html | 44 ++-- webdesign/widerruf.html | 14 +- webdesign/zugang.html | 18 +- werte.html | 20 +- workspace/anruf-probe.html | 10 +- workspace/app.webmanifest | 8 +- workspace/aufgaben.html | 38 ++-- workspace/automation.html | 32 +-- workspace/befinden.html | 34 +-- workspace/bereich.html | 44 ++-- workspace/bewerben.html | 38 ++-- workspace/bewerbungen.html | 36 ++-- workspace/buehne.html | 6 +- workspace/calls.html | 34 +-- workspace/chat.html | 40 ++-- workspace/content.html | 34 +-- workspace/crew-index.html | 12 +- workspace/crew.webmanifest | 8 +- workspace/dateien.html | 34 +-- workspace/entwicklung.html | 36 ++-- workspace/hilfe.html | 30 +-- workspace/index.html | 10 +- workspace/kalender.html | 34 +-- workspace/leistung.html | 32 +-- workspace/material.html | 32 +-- workspace/notizen.html | 28 +-- workspace/personen.html | 32 +-- workspace/profil.html | 36 ++-- workspace/reaktion.html | 38 ++-- workspace/rechte.html | 34 +-- workspace/report.html | 36 ++-- workspace/scouting.html | 32 +-- workspace/start.html | 32 +-- workspace/startcheck.html | 34 +-- workspace/steckbrief.html | 36 ++-- workspace/support.html | 28 +-- workspace/tafel.html | 6 +- workspace/talente.html | 36 ++-- workspace/team.html | 32 +-- workspace/teamlage.html | 34 +-- workspace/teilen.html | 30 +-- workspace/treff-moderation.html | 32 +-- workspace/treff-regeln.html | 32 +-- workspace/uebersicht.html | 32 +-- workspace/unsere-seiten.html | 30 +-- workspace/unterstuetzen.html | 32 +-- workspace/werdegang.html | 32 +-- workspace/willkommen.html | 30 +-- workspace/wissen.html | 34 +-- zeitreise.html | 20 +- 102 files changed, 1956 insertions(+), 1199 deletions(-) create mode 100644 server/pruef-arbeitsschloss.mjs create mode 100644 tools/arbeitsschloss.mjs create mode 100644 tools/git-haken/pre-commit diff --git a/.gitignore b/.gitignore index fd33791f..7f60ec04 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,7 @@ tools/.dreh* tools/.nach-* tools/.messkopf.txt + +# Das Arbeitsschloss gehoert dem Rechner, nicht dem Verlauf: Es sagt, +# wer GERADE arbeitet. Committet waere es eine Behauptung von gestern. +.arbeitsschloss diff --git a/404.html b/404.html index df3ab38a..a3d20c01 100644 --- a/404.html +++ b/404.html @@ -3,8 +3,8 @@ - - + + @@ -19,10 +19,10 @@ Seite nicht gefunden — DOGFATHER UNIVERSE - - - - + + + + @@ -42,7 +42,7 @@ - - + + diff --git a/DEPLOY.md b/DEPLOY.md index 351e6524..c84a81a0 100644 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -1,5 +1,51 @@ # DOGFATHER UNIVERSE — Go-Live-Anleitung +## ⚠️ ARBEITET HIER GERADE SONST JEMAND? (seit 01.10.2026) + +An diesem Tag arbeiteten **zwei Claude-Sitzungen gleichzeitig** in diesem Verzeichnis, +ohne voneinander zu wissen. Keine hat etwas falsch gemacht — sie konnten es nicht wissen. +Zweimal ist es nur gut gegangen: + +* Beide haben `git add -A` benutzt. Hätte die eine unfestgeschriebene Arbeit der anderen + im Baum gehabt, wäre sie **mitcommittet** worden — unter fremdem Namen, in einer fremden + Begründung, und niemandem wäre es aufgefallen. +* Beide haben `tools/workspace-stempel.mjs` laufen lassen. Der schreibt 45 Dateien um. Wer + dort eine offen hatte, bekam sie **unter den Händen weg** geändert. + +Dasselbe hat in RunOne am 03.09.2026 sieben Minuten Ausfall gekostet. + +**Vor dem Arbeiten:** + +```bash +node tools/arbeitsschloss.mjs ansehen # arbeitet hier jemand? +node tools/arbeitsschloss.mjs nehmen "was ich tue" +node tools/arbeitsschloss.mjs freigeben # am Ende +``` + +Du musst nichts von Hand tun, wenn du nur stempelst oder committest — die beiden +Stempelwerkzeuge nehmen das Schloss selbst, und ein **git-Haken** (`tools/git-haken/pre-commit`) +bricht jeden Commit ab, solange **jemand anders** das Schloss hält. + +**Was es NICHT tut** — das ist der wichtigere Teil: + +* Es blockiert **nicht**, wenn das Schloss **deines** ist. Wer ordentlich abschließt, soll + nicht bestraft werden. +* Es **verfällt nach zwei Stunden**. Ein Schloss, das man vergessen kann, blockiert sonst + dauerhaft — und wird beim ersten Ärger umgangen. Ab da ist es wertlos. +* Es blockiert **nicht**, wenn es selbst kaputt oder nicht lesbar ist. +* Notausgang, falls du trotzdem musst: `SCHLOSS_ZWANG=ja git commit …` + +**Nach einem frischen Klon einmal:** `node tools/arbeitsschloss.mjs einrichten` +(setzt `core.hooksPath`; `.git/hooks` wird nicht versioniert und wäre sonst leer). +`node server/pruef-arbeitsschloss.mjs` sagt dir, ob alles sitzt — 33 Prüfungen, +darunter ein echter Commit gegen ein fremdes Schloss. + +**Und bei zwei Claude-Sitzungen:** Das Schloss macht die Gleichzeitigkeit sichtbar, es +ersetzt das Reden nicht. `SendMessage` an die andere Sitzung kostet zehn Sekunden. + +--- + + ## ⚠️ ZUERST LESEN: Die echte Seite läuft auf dem NETCUP-SERVER, nicht auf Cloudflare Seit dem öffentlichen Start (21.08.2026) wird `dogfather-universe.com` vom **eigenen diff --git a/abonnieren.html b/abonnieren.html index 371620d9..58c5e5a6 100644 --- a/abonnieren.html +++ b/abonnieren.html @@ -5,8 +5,8 @@ DogiCrew 🩵 — DOGFATHER UNIVERSE - - + + @@ -20,10 +20,10 @@ - - - - + + + + - +
-
Dogfather Supporter-Abo
+
Dogfather Supporter-Abo
👑 DogiCrew 🩵

Mehr als ein Abo — deine Unterstützung wird Teil unserer Geschichte

@@ -604,9 +604,9 @@
- - - + + + + diff --git a/aktion-detail.html b/aktion-detail.html index d748c2e1..9e78304a 100644 --- a/aktion-detail.html +++ b/aktion-detail.html @@ -5,8 +5,8 @@ Aktion — DOGFATHER UNIVERSE - - + + @@ -20,10 +20,10 @@ - - - - + + + + @@ -52,9 +52,9 @@ - - - + + + - - + + + diff --git a/bewerben-kooperation.html b/bewerben-kooperation.html index 197f61e4..0aa4dce7 100644 --- a/bewerben-kooperation.html +++ b/bewerben-kooperation.html @@ -8,8 +8,8 @@ Kooperation anfragen — DOGFATHER UNIVERSE - - + + @@ -23,17 +23,17 @@ - - - - + + + + - +
-
+
Manager DogFather — Agentur

Kooperation anfragen

@@ -69,8 +69,8 @@
- - - + + + diff --git a/bewerben-modi.html b/bewerben-modi.html index cdba6929..e8b37e9a 100644 --- a/bewerben-modi.html +++ b/bewerben-modi.html @@ -5,8 +5,8 @@ Modi werden — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
🩵 Team Dogi — Community

Werde Modi bei Team Dogi

@@ -80,8 +80,8 @@
- - - + + + diff --git a/bewerben-scout.html b/bewerben-scout.html index d4a8edeb..42e96ac3 100644 --- a/bewerben-scout.html +++ b/bewerben-scout.html @@ -5,8 +5,8 @@ Scout werden — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Manager DogFather — Agentur

Werde Scout für DogFather

@@ -72,8 +72,8 @@
- - - + + + diff --git a/bewerben.html b/bewerben.html index 26d7f55d..2bb5b655 100644 --- a/bewerben.html +++ b/bewerben.html @@ -5,8 +5,8 @@ Bewerben — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Werde Teil vom Team

Community oder Agentur — such dir deinen Weg

@@ -42,7 +42,7 @@
@@ -78,7 +78,7 @@
@@ -86,7 +86,7 @@
- - + + diff --git a/casper.html b/casper.html index f09d2dfa..ffb9b97e 100644 --- a/casper.html +++ b/casper.html @@ -5,8 +5,8 @@ Casper — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Welt 2 — HasiDog

Casper 🐾

@@ -41,7 +41,7 @@
- Casper — Husky im Sonnenuntergang + Casper — Husky im Sonnenuntergang

Wer ist Casper?

@@ -73,10 +73,10 @@

Casper-Galerie

-
Casper
-
Casper
-
DogFather und Casper
-
HasiDog & Casper Buch-Illustration
+
Casper
+
Casper
+
DogFather und Casper
+
HasiDog & Casper Buch-Illustration
Zur ganzen Galerie @@ -86,7 +86,7 @@
- - + + diff --git a/community.html b/community.html index 7e31ecf2..41a33996 100644 --- a/community.html +++ b/community.html @@ -5,8 +5,8 @@ Die Community — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Welt 2 — HasiDog

Die Community

@@ -47,7 +47,7 @@ Discord beitreten
- Diene, Ghost, VanVan und Dogi bei einem gemeinsamen Treffen von Team Dogi + Diene, Ghost, VanVan und Dogi bei einem gemeinsamen Treffen von Team Dogi
@@ -85,7 +85,7 @@
- - + + diff --git a/creator.html b/creator.html index 2bf023c5..cabd4b61 100644 --- a/creator.html +++ b/creator.html @@ -5,8 +5,8 @@ Creator im Team — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Manager DogFather — Team

Creator im Team

@@ -61,9 +61,9 @@
- - - + + + - + + diff --git a/gate.html b/gate.html index 6294f03c..08c8beb3 100644 --- a/gate.html +++ b/gate.html @@ -5,7 +5,7 @@ Zugang — DOGFATHER UNIVERSE - + - + - - + + - +
-
+
🩵 Alle Links

Alles an einem Ort

@@ -165,15 +165,15 @@

QR-Codes

- QR-Code Instagram @sf0118 + QR-Code Instagram @sf0118

Instagram

- QR-Code Snapchat dogfather0804 + QR-Code Snapchat dogfather0804

Snapchat

- QR-Code Dogis persönlicher Teilen-Baustein + QR-Code Dogis persönlicher Teilen-Baustein

Dogis persönlicher Teilen-Baustein

@@ -183,8 +183,8 @@
- - + + - - + + + - - - - + + + + + diff --git a/medien-dogfather.html b/medien-dogfather.html index cd37b892..a6c83e04 100644 --- a/medien-dogfather.html +++ b/medien-dogfather.html @@ -5,8 +5,8 @@ Medien — DogFather — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Welt 1 — DogFather

Medien — DogFather

@@ -66,11 +66,11 @@
- - - - - - + + + + + + diff --git a/medien-hasidog.html b/medien-hasidog.html index 9b208cf2..0d1621d2 100644 --- a/medien-hasidog.html +++ b/medien-hasidog.html @@ -5,8 +5,8 @@ Medien — HasiDog — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Welt 2 — HasiDog

Medien — HasiDog

@@ -66,11 +66,11 @@
- - - - - - + + + + + + diff --git a/profil.html b/profil.html index 2d0091d4..c445e0d6 100644 --- a/profil.html +++ b/profil.html @@ -5,8 +5,8 @@ Profil — DOGFATHER UNIVERSE - - + + @@ -17,10 +17,10 @@ - - - - + + + + - +
-
+
🔒 Nur mit Konto

Rabattcodes

@@ -420,7 +420,7 @@
- Logo von Van’s DIY & Bastelbedarf @@ -475,8 +475,8 @@
- - + + - - - - + + + + + diff --git a/streamer.html b/streamer.html index 3f568d40..fa48a8fa 100644 --- a/streamer.html +++ b/streamer.html @@ -5,8 +5,8 @@ Wer ist DogFather? — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Welt 1 — DogFather

Wer ist DogFather? – Mehr als nur ein Name 🩵

@@ -55,7 +55,7 @@

Doch DogFather ist nicht einfach nur ein Name im Internet. DogFather ist ein Teil von mir.

- Filipe alias DogFather + Filipe alias DogFather
@@ -100,7 +100,7 @@ (siehe .collage-photo-kompakt in main.css, jetzt 720px statt 460px), der sich an der typischen Höhe der Textspalte in diesem Abschnitt orientiert. -->
- DogFather Maskottchen + DogFather Maskottchen

🐺 Casper – mein treuer Begleiter

@@ -161,7 +161,7 @@

Ein Mensch, der gerne lacht, andere unterhält und manchmal vollkommen verrückte Dinge macht – aber niemals vergisst, wie wichtig Menschlichkeit, Respekt und Zusammenhalt sind.

- DogFather + DogFather
@@ -199,7 +199,7 @@ 🌶️ Scout-Manager
- Spicy Media Agency Logo
@@ -218,7 +218,7 @@
- - + + diff --git a/streamplan.html b/streamplan.html index 6a397d83..9f91ce72 100644 --- a/streamplan.html +++ b/streamplan.html @@ -5,8 +5,8 @@ Streamplan & Livebereich — DOGFATHER UNIVERSE - - + + @@ -20,17 +20,17 @@ - - - - + + + + - +
-
+
Welt 1 — DogFather

Streamplan & Livebereich

@@ -127,8 +127,8 @@
- - - + + + diff --git a/supporter.html b/supporter.html index a27ec76c..f14c895c 100644 --- a/supporter.html +++ b/supporter.html @@ -5,15 +5,15 @@ Mein Supporter-Bereich — DOGFATHER UNIVERSE - - + + - - - - + + + + - +
-
Dogfather Supporter-Abo
+
Dogfather Supporter-Abo
👑 Supporter-Bereich

Dein Supporter-Bereich

@@ -516,9 +516,9 @@
- - - + + + - - + + + - - + + + - + + diff --git a/vanvan.html b/vanvan.html index 14948fba..02ddbed2 100644 --- a/vanvan.html +++ b/vanvan.html @@ -5,8 +5,8 @@ VanVan — die rechte Hand von Dogi — DOGFATHER UNIVERSE - - + + @@ -20,10 +20,10 @@ - - - - + + + + - +
-
+
🩵 Exklusive Seite

VanVan – die rechte Hand von Dogi 🩵

@@ -51,7 +51,7 @@
- VanVan + VanVan

Wer ich bin

@@ -96,7 +96,7 @@
- VanVan + VanVan

Meine Stärken

@@ -146,7 +146,7 @@

Sondern weil ich es von Herzen möchte.

- VanVan + VanVan
@@ -182,7 +182,7 @@
- - + + diff --git a/verwaltung.html b/verwaltung.html index 61820a40..6251e514 100644 --- a/verwaltung.html +++ b/verwaltung.html @@ -6,7 +6,7 @@ Verwaltung — DOGFATHER UNIVERSE - + - + - - - - + + + +