app/game_record.h

the archived form of a finished game (review-docs/PLAN.md §3).

THE TRUTH IS startFen + moves (UCI). Everything else a reviewer wants — SAN, PGN, the per-ply FEN, the per-ply PieceTracker identity snapshot, the eval graph — is derived from those two by replaying them. Storing the derived forms would be storing the same fact several times, in several places that can disagree.

That the identity snapshot is derivable is what makes physical review work at all: the target of a board setup is a piece-identity state, never a FEN (PLAN §2.2 — promotion is physically faked, so a FEN can describe positions the board cannot hold).

namespace kirin

Enums

enum class GameSource

Values:

enumerator Solo
enumerator Network
enum class SeatKind

Values:

enumerator Human
enumerator Engine
enumerator Remote
struct GameRecord
#include <game_record.h>

Public Functions

inline int plyCount() const

Public Members

std::string id
GameSource source = GameSource::Solo
std::string deviceId
std::string startFen
std::vector<std::string> moves
Seat white
Seat black
GameResult result = GameResult::Ongoing
std::string reason
std::string startedAt
std::string endedAt
bool pendingUpload = false
bool pendingAnalysisUpload = false
struct Seat
#include <game_record.h>

Public Members

SeatKind kind = SeatKind::Human
std::string userId
std::string personality