Add serializable project commands

This commit is contained in:
2026-07-23 21:23:31 +02:00
parent 903d977443
commit b79faed320
9 changed files with 206 additions and 39 deletions
+5 -3
View File
@@ -65,9 +65,11 @@ liegt über einen Host-Mount außerhalb des Containers.
Die React-Historie ist derzeit sitzungslokal. Das Datenmodell besitzt bereits
einen projektbezogenen Revisionszähler sowie getrennte Revision-/Change-Set-
Tabellen. Ein getestetes Repository kann diese Historienmetadaten optimistisch
und atomar fortschreiben. Bestehende Fachoperationen sind aber noch nicht an
diese Grenze angeschlossen; serverseitiges Undo/Redo ist daher noch nicht
verfügbar.
und atomar fortschreiben. Vorwärts- und Rückwärtskommandos besitzen einen
versionierten, JSON-sicheren Umschlag; Typ und Payload können dadurch nach
einem Neustart verlustfrei rekonstruiert werden. Konkrete Fachkommandos und
bestehende Fachoperationen sind aber noch nicht an diese Grenze angeschlossen;
serverseitiges Undo/Redo ist daher noch nicht verfügbar.
## Projektgeräte
@@ -140,6 +140,11 @@ Completed foundation:
- projects carry a monotonic `currentRevision` counter starting at zero
- project revision metadata and versioned forward/inverse change-set payloads
have separate persistence entities
- forward and inverse payloads store complete serialized command envelopes;
command type and schema version are derived from those envelopes rather than
duplicated caller metadata
- command serialization rejects non-finite numbers, `undefined`, non-plain
objects and cyclic payloads before a revision transaction starts
- the SQLite revision repository advances the project counter and stores both
history records atomically
- revision appends use an expected-revision compare-and-set and reject stale
@@ -147,7 +152,8 @@ Completed foundation:
Remaining constraints before implementing history:
- model project-scoped command descriptions independently from React callbacks
- define concrete project-scoped command unions and executors independently
from React callbacks; the generic versioned command envelope is complete
- route domain writes and revision recording through one shared project
transaction boundary; the current revision repository only commits history
records and the counter together
+4 -1
View File
@@ -359,7 +359,8 @@ Tasks:
forward/inverse payloads
- [x] add optimistic checks when appending a revision
- route domain writes and history records through one shared transaction
- model serializable domain command descriptions outside React
- define concrete serializable domain command descriptions and executors
outside React
- persist undo/redo eligibility on the server
- add named and periodic logical project snapshots
- restore a historical snapshot as a new revision
@@ -369,6 +370,8 @@ Implemented foundation:
- projects start at revision zero and advance monotonically
- each revision has one separately stored logical change set
- forward and inverse changes use complete, versioned JSON command envelopes
- invalid or lossy command payloads are rejected before persistence
- revision metadata, change-set payloads and the project counter are committed
in one SQLite transaction
- a stale expected revision produces no history writes