V1 a base id is gone from the head. Deliberate retirement would go
through a retired_ids list, which stays locked until the consumer side
defines what happens to the learner progress of a retired element
(E-RETIRED-IDS-LOCKED), so today every disappearance is a violation.
V2 an id is used more than once inside one set (set-wide uniqueness;
the same id in two DIFFERENT sets is fine).
V3 an id points at another kind or exercise type than before (reuse
smell: a card became an exercise, a matching became a cloze).
V4 a lesson FILE vanished while its set survived. The filename is the
lesson's identity for progress joins; a whole set disappearing is a
different, deliberate act and is reported through V1 only.
Editing content under a constant id is the allowed case and the entire
point of the promise.
Compare the published state against the head.
Violations:
retired_idslist, which stays locked until the consumer side defines what happens to the learner progress of a retired element (E-RETIRED-IDS-LOCKED), so today every disappearance is a violation.Editing content under a constant id is the allowed case and the entire point of the promise.