3081505a3d
Five new integration tests against the in-process Axum router + in-memory SQLite, covering the full HTTP transport + database layer that the web replay viewer depends on: - `replay_upload_then_fetch_round_trips_payload` — register → POST → GET → assert the fetched JSON matches the upload byte-for-byte. Canonical "the web viewer can play back what the desktop client uploaded" coverage. - `replay_fetch_unknown_id_returns_404` — exercises the `AppError::NotFound` mapping (not a 500). - `replay_recent_lists_newest_first_with_username` — two uploads, asserts received_at DESC ordering and that the username join populates the `username` field. - `replay_upload_without_auth_returns_401` — guards against the upload endpoint accidentally accepting anonymous inserts. - `replay_upload_malformed_body_returns_400` — header projector rejects payloads missing required fields with 400, not 500. Schema-correctness (round-trip, version gate, atomic write) is still covered by `solitaire_data::replay`'s unit tests; this file is strictly for the HTTP transport. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>