Regeln und Konzept an den Stand angleichen

CLAUDE.md: Die Regeln für den Kern gelten für den Quelltext in
core/src/, nicht für die Tests. World::set_all_offline ist als einzige
Ausnahme von der Regel genannt, dass sich die Welt nur durch Befehle
ändert. Die Überlaufregel sagt jetzt, dass Taktzähler normal addiert
werden und Werte aus geladenen Dateien beim Laden geprüft werden. Ein
neuer Absatz erklärt, was bei einem Fehler in golden.rs zu tun ist.

KONZEPT.md: Das Konzept ist bestätigt. Hochladen, Branches, Issues und
Pull Requests sind freigegeben, und die veraltete Angabe, das Archiv
sei noch leer, ist entfernt. Die Reihenfolge der Rückkehrer steht
jetzt bei den Festlegungen statt bei den offenen Punkten.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Steven Wroblewski
2026-09-30 22:18:45 +02:00
parent 3857fe99a6
commit c75b629dfd
2 changed files with 9 additions and 8 deletions
+5 -3
View File
@@ -18,15 +18,15 @@ Faustregel: Was im Speicherstand steht oder alle Spieler betrifft, gehört in de
## Regeln für den Kern
Alle Spieler simulieren die Welt selbst und tauschen nur Befehle aus (Gleichschritt). Das funktioniert nur, wenn der Kern auf jedem Rechner exakt gleich rechnet. Deshalb gilt in `core/`:
Alle Spieler simulieren die Welt selbst und tauschen nur Befehle aus (Gleichschritt). Das funktioniert nur, wenn der Kern auf jedem Rechner exakt gleich rechnet. Deshalb gilt für den Quelltext des Kerns in `core/src/`. Die Tests in `core/tests/` dürfen zum Beispiel Dateien lesen.
- Nur ganze Zahlen, keine Gleitkommazahlen.
- Keine Uhr, keine Dateien, kein Netzwerk, keine Threads, keine Umgebungsvariablen.
- Zufall nur über `rng::Rng` mit fester Startzahl.
- Keine Sammlung mit wechselnder Reihenfolge. Statt einer Hash-Tabelle nimmst du `Vec`, `BTreeMap` oder `BTreeSet`.
- Die Welt ändert sich nur durch einen `Command` in `World::step`.
- Die Welt ändert sich nur durch einen `Command` in `World::step`. Einzige Ausnahme ist `World::set_all_offline`: Es darf nur direkt nach dem Laden eines Speicherstands aufgerufen werden, bevor jemand beigetreten ist.
- Alles, was zum Zustand der Welt gehört, steht im Snapshot. Wer ein Feld ergänzt, ergänzt es in `snapshot.rs` und erhöht `SNAPSHOT_VERSION`.
- Wo eine Rechnung überlaufen kann, steht eine ausdrückliche Wahl: `saturating_`, `wrapping_` oder `checked_`.
- Wo eine Rechnung im Spiel überlaufen kann, steht eine ausdrückliche Wahl: `saturating_`, `wrapping_` oder `checked_`. Taktzähler (`u64` bei 20 Takten pro Sekunde) laufen praktisch nie über und werden normal addiert. Werte aus geladenen Dateien müssen deshalb beim Laden geprüft werden.
- Keine fremden Crates im Kern.
Der Test `core/tests/forbidden_apis.rs` durchsucht den Quelltext des Kerns nach verbotenen Begriffen. Sie dürfen dort auch in Kommentaren nicht vorkommen.
@@ -41,6 +41,8 @@ cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
```
Schlägt `core/tests/golden.rs` fehl, haben sich Regeln oder ein Format geändert. Die Fehlermeldung nennt die Versionskonstante, die dann erhöht werden muss. Erst danach wird der festgeschriebene Wert bewusst angepasst.
## Sprache
- Code, Bezeichner und Kommentare im Code: Englisch.