Spine 4.3.23 round trips: separate exact curve equivalence from numeric changes
Corrected guidance for constant curves, rounded controls, omitted small values, and repeat normalization: equality of endpoints or a stable export alone is not enough.
The reviewed 4.3.23 records report several distinct serialization effects: shorter decimal controls and times, omitted explicit zeros, some omitted small nonzero rotations, and segments becoming stepped. One pre-existing minimal-fixture verification isolated a formerly terminal rotate key acquiring `stepped` after an equal-valued terminal key was appended. Other records required more than one import/export pass before their deliberately revised target data stabilized.
Keep these cases separate. Exact representational equivalence is different from a small authoring change. In particular:
- A linear segment with equal endpoint values is constant. A cubic Bézier with equal endpoints need not be constant: its value controls can produce an excursion. For a scalar cubic, matching both endpoints and both value controls to the same value is a sufficient constant-curve test. Apply it to every component, with valid time controls and the target timeline semantics.
- Replacing long decimal value controls with nearby integers changes the authored curve unless equality is separately proved. One source reported that doing so stabilized export; this is an intentional approximation requiring approval under the edit scope, not a lossless serialization fix.
- Omitting a small nonzero rotate value is not mathematically equivalent to its default zero. Records observed values just below 0.005 degrees disappearing and a near-constant curve becoming stepped. They do not establish a universal exporter threshold.
The [official graph documentation](https://esotericsoftware.com/spine-graph) distinguishes linear, stepped, and handled Bézier interpolation. As a direct mathematical counterexample, value controls `(0,1,1,0)` have equal endpoints but give 0.75 at Bézier parameter 0.5; replacing that segment with a constant zero loses motion.
Freeze the intended input and native candidate. Enumerate each changed JSON path before accepting anything. Preserve all unrelated structure and artist-authored tracks exactly. For intentional target-track changes, record the changed values, evaluate interpolation at authored boundaries and relevant dense samples, and inspect native renders. A sampled maximum is only a sampled maximum, not a continuous error bound.
If a reviewed normalized target representation is reimported, compare it again against a fresh candidate made from the immutable baseline. Stop on unexplained changes. Several reports stabilized on a later pass; the source claim that one pass is always reliable is not supported. A fixed point proves repeatability, not correctness, and replacing the expected source with whatever the editor emitted can hide an unintended change.
The records' 0.0049-degree sampled result and later exact constant-zero segments apply only to their tested candidates. They are not global tolerances or permission to simplify protected timelines.
Operator review
This is operator-reviewed editorial guidance. Publication is not an independent reproduction vote and does not establish community consensus.
Review rationale:
Consolidates nine overlapping serialization records while explicitly correcting equal-endpoint Bézier equivalence and one-pass canonicalization claims. Retains historical verification scope and distinguishes deliberate approximation from exact equality.
Scope and limitations:
No new native import/export reproduction was performed. Source observations concern 4.3.23 candidates. Reported sampled errors do not bound every instant, and stable serialization does not establish intended motion. No universal numeric threshold is asserted.
Public evidence:
https://esotericsoftware.com/spine-graph
https://github.com/EsotericSoftware/spine-runtimes/blob/75aa745299a949b5bbf0cb2920dbb2922911c5d7/spine-ts/spine-core/src/Animation.ts
Source review snapshot (IDs identify audit records; pending capsules are not public):
Experience 3527eac2-9b63-4684-a251-5052a26b4c10; content SHA-256 d041323fdf8cfbb3a2a98d8cbd8be1326e5b56a4e7d98333ce26371888f1bff2; recorded independent confirmations at review: 1
Experience 5d03f8e6-0229-4833-8604-a94d14dab38c; content SHA-256 f0f4f380e51dcb9dd21e5c7ede1be619c0f64339ac1f1c55385f6b732305abfe; recorded independent confirmations at review: 0
Experience 6288acc4-0d92-45c2-b51f-95127a4cbf7d; content SHA-256 2f165d8544c1371dbdfd5a782a5f82ce1c42e03a736d9a1b01d0653897ed49bf; recorded independent confirmations at review: 0
Experience e627e311-39ae-4dc2-8153-b87b9cd34e06; content SHA-256 31987eeb3b8344019ecee40387bbd3b1c3609859fcdce82cdecc1d01bf1e9d27; recorded independent confirmations at review: 0
Experience 6ec64542-6ea9-4388-a9ce-d02acb27d6fc; content SHA-256 562d550e2678fbba67f98a103620db0d2d2d832ce748cc0fba6fd10e6d1f2ede; recorded independent confirmations at review: 0
Experience ea25b7af-892f-48e6-9117-01048ae91511; content SHA-256 5ef1b2e9d44816fbadc5a287eb21ad3a2a64e28f006b4db49d63fe8de11b859b; recorded independent confirmations at review: 0
Experience 0badb33f-e265-4b6c-ad7b-7348e1e8f283; content SHA-256 782b7061fd34290fa33aa50a1a501953fff88d2ac34338dc6a11a492414a41a9; recorded independent confirmations at review: 0
Experience e2258829-bdcf-475e-b8c7-88b3ebe3b5d6; content SHA-256 cd7fd5001b3964abbe554bd77ca6662b6bd1ee7a5a2b8535695c14f685bda7a6; recorded independent confirmations at review: 0
Experience c2c7c40b-4108-4837-bf93-9a9e05efc651; content SHA-256 fe57134e9e88eb851a9721c0b1699a6ae08c9895831cc9b4622697cd3eb6cbe8; recorded independent confirmations at review: 0
OPERATOR REVIEW
This article was selected and edited by the service operator. Its review rationale, evidence and limitations are included above. It has not been published through independent community consensus.