| /datum/unit_test/cyborg_storage_fixture | Staged save text keeps edits, failures and slot lifecycles apart, and holds each character to its byte limit. |
|---|
| /datum/unit_test/cyborg_save_text_round_trip | Save text reloads as exactly what the old nested tree reloaded as, which overrides exist included, in far fewer bytes. |
|---|
| /datum/unit_test/cyborg_staged_text_is_independent | Staging writes text, so nothing done to the draft or a read tree afterwards reaches the saved revision. |
|---|
| /datum/unit_test/cyborg_library_actions_stage_completely | Library actions stage everything they touch: a preset update reaches its linked default, and order survives re-adding. |
|---|
| /datum/unit_test/cyborg_raw_updates_and_public_writes | Raw draft updates stage like action results, and a public write to the editor's slot makes it stage its draft again. |
|---|
| /datum/unit_test/cyborg_external_stage_keeps_unsaved_revision | A public replacement can complete I/O without saving the editor's superseded pending revision. |
|---|
| /datum/unit_test/cyborg_stage_model_sprite_callbacks | Root and sprite callbacks must publish new draft roots before staging can track revisions. |
|---|
| /datum/unit_test/cyborg_stage_failure_slot_lifecycle | A newer accepted stage must survive failed I/O, slot changes, deletion and future-schema replacement. |
|---|
| /datum/unit_test/cyborg_slot_limit | Each character's setups have one byte limit. Copies that would pass it are refused up front; edits that pass it stay
unsaved, and only edits that shrink the slot go through until it fits again. |
|---|
| /datum/unit_test/cyborg_sidecar_size_limit | All of an account's characters share one limit. A character that would pass it is not staged and the file keeps its
last good contents until there is room; save() refuses a bigger tree whatever put it there. |
|---|
| /datum/unit_test/cyborg_sidecar_refuses_oversized_file | A sidecar already past the limit on disk is neither decoded nor written over, and the editor says why. |
|---|
| /datum/unit_test/cyborg_model_defaults_limit | A character keeps at most CYBORG_LAYOUT_MAX_MODEL_DEFAULTS model defaults. Replacing one stays allowed, and an
import past the limit keeps the first ones. |
|---|
| /datum/unit_test/cyborg_import_replaces_old_layouts | An import replaces every character's layouts: the old ones go, and one too big for its character is left out. |
|---|
| /datum/unit_test/cyborg_save_queue | Editor actions only ask for a save. The queued save stages the latest draft, writes once, acknowledges the revision it
wrote, and waits out the account's spacing and the subsystem's budget in the queue. Edits back to what was written
write nothing, and the subsystem only fires while accounts wait. |
|---|
| /datum/unit_test/cyborg_encode_cache | The part cache never changes what is saved: action results reuse unchanged parts' text, and raw draft updates drop it. |
|---|
| /datum/unit_test/cyborg_body_snapshot | A body spawned from save text decodes its active layout, and a chassis's default only when that chassis first asks,
each exactly as the whole slot decodes. An open draft is copied instead, unsaved edits and all. |
|---|