Regelwerk, Agenten, Skills und Werkzeuge veröffentlichen

Erster Stand des öffentlichen Ausschnitts aus dem Vault. Die .gitignore
arbeitet als Positivliste: ausgeschlossen ist alles, eingeschlossen nur,
was ausdrücklich wieder aufgenommen wird. Notizen, Projekte, Finanzen,
das Sitzungsgedächtnis und settings.local.json bleiben damit außen vor.

Der Kundenname in AI/Regelwerk/seo.md ist durch eine neutrale
Bezeichnung ersetzt; die Regeln selbst sind unverändert.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
Pascal MichelandClaude Opus 5 committed 2026-09-17 22:38:15 +02:00
commit 2c9a4475fc
97 files changed
+14627

No files matched your search

@@ -0,0 +1,58 @@
"""Eigener Lauf zu Teil 3b: Bekommen zwei Verbindungen am laufenden Backend denselben Snapshot?
Koordinator-Pruefskript, nicht fuers Repo. Laeuft in WSL gegen ws://127.0.0.1:8144/ws/uebersicht.
Frage: Tragen die Snapshots beider Verbindungen dieselben zeit-Werte (ein Bau je Takt), und kommt
der erste Snapshot einer spaeteren Verbindung sofort? Herkunft: Projektvorgabe (Spec, C4a).
Was es nicht sieht: die Zahl der Broker-Anfragen selbst (die zaehlt der Test mit der Attrappe).
"""
import asyncio
import json
import sys
import time
import websockets
PORT = sys.argv[1] if len(sys.argv) > 1 else "8144"
ADRESSE = f"ws://127.0.0.1:{PORT}/ws/uebersicht"
async def lies(name: str, anzahl: int, ergebnis: dict) -> None:
t0 = time.monotonic()
async with websockets.connect(ADRESSE) as strom:
zeiten = []
for i in range(anzahl):
daten = json.loads(await strom.recv())
if i == 0:
ergebnis[name + "_erste_nach_s"] = round(time.monotonic() - t0, 3)
zeiten.append(daten["zeit"])
ergebnis[name] = zeiten
async def main() -> int:
ergebnis: dict = {}
erste = asyncio.create_task(lies("a", 4, ergebnis))
await asyncio.sleep(2.0)
zweite = asyncio.create_task(lies("b", 3, ergebnis))
await asyncio.gather(erste, zweite)
print(json.dumps(ergebnis, indent=2))
gemeinsam = set(ergebnis["a"]) & set(ergebnis["b"])
print("gemeinsame zeit-Werte:", len(gemeinsam))
befunde = []
if len(gemeinsam) < 2:
befunde.append("die zwei Verbindungen teilen weniger als zwei Snapshots")
if ergebnis["b"][0] not in ergebnis["a"]:
befunde.append("der erste Snapshot der spaeteren Verbindung ist kein Snapshot der ersten")
if ergebnis["b_erste_nach_s"] > 1.0:
befunde.append(f"die spaetere Verbindung wartete {ergebnis['b_erste_nach_s']} s auf ihren ersten Snapshot")
for text in befunde:
print("BEFUND:", text)
return 2 if befunde else 0
if __name__ == "__main__":
try:
sys.exit(asyncio.run(main()))
except Exception as ausnahme:
print("BEFUND: unerwarteter Abbruch:", repr(ausnahme))
sys.exit(2)