Add serializable project commands
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user