Map<String, dynamic> toJson() => { 'stepIndex': stepIndex, 'timestamp': timestamp.toIso8601String(), 'changes': [for (final c in changes) c.toJson()], };