Maintenance Notes

Inkonsistenzen, Altlasten und sichere Erweiterungspunkte

Diese Seite trennt bestätigte Codeabweichungen von bewusster Kompatibilität. Sie ist als Checkliste für kommende Patches gedacht.

Bestätigte Abweichungen

Darkweb-Level ist nicht einheitlichAPP_ACCESS.APP_DEFINITIONS.darkweb.level ist 12. DARKWEB.requireAccess() verlangt Level 20. Entscheidung nötig: UI-Gate auf 20 anheben oder Service-Regel auf 12 senken; anschließend Texte und Tests gemeinsam anpassen.
Mehrere Speicher-APIs existieren parallelDer Produktionspfad nutzt IDB, trotzdem enthalten PLANT, LAMP, WEED_INVENTORY, CRYPTO_CURRENCY_API und USER_API direkte LocalStorage-Zugriffe. Das ist überwiegend Kompatibilität, erhöht aber die Gefahr neuer Zwei-Quellen-Fehler.
Dokumentationsstand und Code müssen getrennt bewertet werdenREADME.md, Patchpläne und Audits enthalten Historie. Für aktive Regeln sind Kataloge, Services und Validatoren maßgeblich.

Wahrscheinliche Legacy- oder Zukunftsmodule

DateiBefundEmpfehlung
ENGINE.jsleere Klasse, keine aktive Importkanteentfernen oder klare künftige Rolle dokumentieren
ECONOMY_API.jskleiner Altadapter, nicht im aktiven Modulgraphgegen ECONOMY_SERVICE prüfen und ausmustern
ITEM_API.jsseparate ältere Item-API, aktiver Pfad nutzt ITEM_CATALOG + INVENTORY_SERVICEImporte verbieten oder konsolidieren
PLANT_VISUAL_STATE.jsreine alternative Bildzustandslogik ohne aktive Importkantemit PLANT_IMAGES zusammenführen oder als Testmodul markieren
SAVE_TRANSFER_TEST.jsEntwickler-/Testhilfe, kein Seiteneinstiegin separates tests-Verzeichnis verschieben
slotshop.htmlnur Guards, kein eigenes produktives Modul im SnapshotRoute entfernen oder vollständigen Einstieg herstellen
MINING_STORAGE.jsLocalStorage-Kompatibilitätsanzeige neben IDB-Miningnur lesend halten; nicht für neue Buchungen verwenden
CHEMISTRY_TABLE.jsältere Fallback-API neben CHEMISTRY_TRANSACTIONSBrowserpfad konsequent auf IDB-Service halten

Kopplungspunkte mit hohem Änderungsrisiko

Billing ↔ Produktion

Änderungen an Perioden, Visibility oder Strom müssen zugleich Lampenzähler, Pflanzenwachstum, Mining und activeClockAt berücksichtigen.

Polizei ↔ Warenbewegung

Neue Verkaufs-, Produktions- oder Inventaraktionen müssen unter offenem Polizeifall von assertPoliceFreeze() erfasst werden.

Verkauf ↔ Reservierungen

Jeder neue Verkaufskanal muss freeSaleStock, reserveSale, pruneSales und assertSales integrieren.

State ↔ Mirror

Neue State-Felder, die alte UI liest, benötigen eine explizite Mirror-Abbildung. Mirrorfelder dürfen umgekehrt nicht zur Commit-Basis werden.

Migration ↔ Backup

Jede State-Versionsänderung braucht vor dem Upgrade ein unverändertes Backup, eine neue Upgrade-Funktion und eine strenge Validierung.

Access ↔ Service

UI-Gates sind Komfort, keine Fachgarantie. Die Service-Schicht muss dieselbe Regel nochmals prüfen – aber mit denselben Konstanten.

Sicheres Muster für neue Mechaniken

  1. Katalog/Config: unveränderliche IDs, Preise, Level und Limits definieren.
  2. Pure Rules: Migration, Validierung und zustandslokale Mutation ohne DOM entwickeln.
  3. State-Version: bei struktureller Änderung erhöhen, Backup und Upgrade implementieren.
  4. Service: Use-Case mit stabiler Transaktions-ID über TRANSACTION_MANAGER.commit().
  5. Globale Invarianten: Validierung in validate() oder einem aufgerufenen Regelvalidator ergänzen.
  6. Mirror: nur falls Legacy-UI das Feld benötigt.
  7. UI: erst nach prepareEconomy() aufbauen; Servicefehler sichtbar behandeln.
  8. Tests: Erfolg, Duplicate, Reload, zweiter Tab, Reset/Epoch, Migration und Grenzwerte prüfen.

Empfohlene Regressionstests

BereichMinimaler Test
Idempotenzdenselben eventId zweimal senden; nur ein Bestands-/Geldeffekt
Multi-Tabzwei Seiten, konkurrierende Käufe/Verkäufe; keine verlorene Aktualisierung
Resetalter Tab nach neuer Epoch darf nicht committen
Billingaktive 15 Minuten, Hidden/Resume, Page Cache und Periodengrenze
RechnungenTeilzahlung, mehrere offene Belege, Hinweis schließen, Sperre/Entsperrung
Pflanzenjede Lampe nur für ihre Pflanze; Stromsperre pausiert; Lager voll blockiert Ernte
MiningCoinwechsel erhält Carry/Balance; keine Offline-Produktion; Claim nur einmal
ChemieQueue, Cancel-Erstattung, volles Lager, Polizei-Freeze, Upgrade-Dauer
VerkaufTür- und Darkweb-Hold dürfen dieselbe Ware nicht überbuchen
Accessjedes Menü/App-Gate gegen Fachservice-Regel vergleichen

Priorisierte Wartungsreihenfolge

P1Darkweb-Level vereinheitlichensichtbarer Funktionsbruch
P2Legacy-Grenzen markierenneue Fehlimporte verhindern
P3Teststruktur trennenProduktgraph übersichtlicher
P4Regelkonstanten teilenAccess und Service synchron