Files
przygody-pana-cegly/progression.adapters/SaveEnvelope.cs
Gabriel Kaszewski 7a69292066 feat(progression): json stores on a real filesystem (slice 8)
new progression.adapters project, no engine reference. Stores take a
directory path; Godot resolves user:// with GlobalizePath and passes it
in, which is what makes them testable at all - originally I'd written
this slice off as untestable.

version lives in a file envelope, not the snapshot, so the domain only
knows the current shape. A newer-build save reports Corrupt with a
reason instead of masquerading as "no save" and getting overwritten.

atomic write via temp + rename. One file per aggregate: saving a run
leaves the profile file byte-identical, asserted.

guard rail fixed - it was matching prose in doc comments, now anchored
to using-directives plus a project.assets.json check. 63 tests.
2026-07-28 19:35:43 +02:00

11 lines
403 B
C#

namespace Mr.BrickAdventures.Progression.Adapters;
/// <summary>
/// What actually goes in a save file: a version alongside the snapshot.
/// </summary>
/// <remarks>
/// The version lives here rather than in the snapshot record so the domain only ever knows the
/// current shape. Migration is entirely this layer's problem.
/// </remarks>
internal sealed record SaveEnvelope<T>(int Version, T Data);