OptionalcategoriesOptionalfgOptional flat-field slots that the parser populates for sports which need them. NHL skaters use fg=PPG, threeP=PPA so the Power Play Points adapter sums them. Other sports leave these undefined; adapters that don't need them ignore the field.
OptionalftOptionalmlbOptionalmlbOptionalnhlNHL-only position discriminator. Same role as mlbRole — the parser (or boxscore-shape adapter) sets it; per-prop NHL adapters guard on it so Saves never reads against a skater row and Goals never reads against a goalie row.
OptionalplusOptionalsoccerSoccer-specific extras (v1.0). Soccer match data shape differs
enough from US-major sports that it gets its own bag rather than
remapping onto the flat fields. Adapters read from here for
Shots, Shots on Target, Passes Completed, Tackles,
Yellow Cards, Pass Accuracy. Goals + Assists reuse the
canonical flat slots (points, rebounds) for consistency with
other sports — see SOCCER_ADAPTERS.
Minimal shape of a per-game log entry that grading needs. Structurally compatible with PlayerGameLogEntry from the gamelog service — keeping this independent so the pure module never transitively imports RN deps.
mlbRoleis set by the parser on MLB entries based on the upstream isMLBPitcher detection. MLB adapters dispatch on it so a "Walks" (batter BB) leg never accidentally reads against a pitcher row's remapped fields, and vice versa for "Walks Allowed" / "Hits Allowed" / "Pitches Thrown". Non-MLB entries leave it undefined.