Chess Game Status Notation (CGSN) Specification
- Version: 1.0.0
- Author: Sashité
- Published: November 8, 2025
- License: MIT License
Overview
Chess Game Status Notation (CGSN) provides a rule-agnostic taxonomy of observable game status values for abstract strategy board games. CGSN defines standardized identifiers for terminal states, player actions, and game progression states that can be recorded independently of competitive interpretation.
Note on Terminology
While “chess” appears in the specification name for consistency with PCN (Portable Chess Notation), CGSN is rule-agnostic within its domain. It applies to Western chess, Japanese shōgi, Chinese xiangqi, Thai makruk, and other two-player abstract strategy games in the chaturanga family that share similar concepts (terminal pieces, turn-based play, piece movement).
The term “chess” reflects historical naming conventions in the Sashité ecosystem, not cultural primacy or hierarchical relationship between game traditions. CGSN is designed for games with compatible mechanics; it may not be suitable for all abstract strategy games (e.g., games without terminal pieces, simultaneous-turn games, or games with fundamentally different state concepts).
Terminology
All terms used in this specification are precisely defined in the Glossary and Protocol. Bold terms reference these formal definitions.
Key Concepts
Terminal Piece: A piece identifiable as essential to a player’s continued participation in the match. A player may control zero, one, or multiple terminal pieces depending on the rule system.
Terminal State: An observable condition indicating that the match has reached its conclusion.
Check State: An observable condition where a terminal piece can be captured by at least one move by the opponent, evaluated based on piece movement capabilities.
Move Hierarchy: The specification distinguishes three levels of moves:
- Protocol-Valid Move: Conforms to structural invariants
- Mechanically Possible Move: Conforms to piece movement capabilities and protocol constraints
- Legal Move: Satisfies all rule system constraints (including check states, historical conditions, etc.)
Side vs. Control: The Side attribute indicates a piece’s camp affiliation (first or second player), distinct from operational control. CGSN evaluates status relative to pieces matching the Active Player’s side.
Active Player: The player whose turn it currently is.
Pass Move: A move concluding the turn without displacement or mutation.
Dependencies
None. CGSN is a foundational taxonomy with no dependencies on other specifications.
Core Principles
Rule-Agnostic Foundation
CGSN records observable facts about game state without interpreting their competitive significance. The same status value may have different outcomes under different rule systems:
checkmateindicates victory in traditional chess but defeat in suicide variantsrepetitionmay result in draws, losses, or other outcomes depending on game rulesbare_kingmay be terminal in some traditions but continue play in othersstalematemay constitute a draw, a loss, or even a win depending on the rule systemstaleturnmay be treated as draw, loss, or invalid position depending on rules
This separation ensures universal applicability across different game systems while preserving implementation flexibility.
Observable vs. Competitive
CGSN maintains strict separation between:
Observable status: Factual game state that can be verified
- Example: “All terminal pieces are in check state and all mechanically possible moves would leave/place terminal pieces in check”
- Example: “No moves are mechanically possible for the active player”
- Example: “Player resigned from the game”
Competitive interpretation: Outcome determination based on rules
- Example: “First player wins” (rule-dependent)
- Example: “Game is a draw” (rule-dependent)
CGSN addresses only observable status. Competitive outcomes are determined by the specific rule system being applied.
Status Independence
Status values are independent of:
- How the status was reached
- When the status occurred
- Who benefits from the status
- What happens next
A CGSN status simply records what is observed, not why or with what consequence.
Status Categories
CGSN organizes status values into two fundamental categories based on their derivability from game position.
Inferable Statuses
Statuses that can be determined through position analysis when game rules are known:
- Terminal piece configurations (checkmate, stalemate, staleturn)
- Material conditions (bare_king, insufficient)
- Position characteristics derivable from board state
These statuses may be omitted in notation formats, allowing implementations to infer them from position when needed.
Explicit-Only Statuses
Statuses that require information external to position:
- Player actions (resignation, agreement)
- Temporal constraints (time_limit, move_limit)
- Process violations (illegal_move)
- Historical patterns (repetition - requires move history)
These statuses must be explicitly recorded as they cannot be reliably determined from position analysis alone.
Status Values
CGSN defines the following standardized status identifiers:
Complete Status Taxonomy
| Status | Category | Game Over | Involved Player |
|---|---|---|---|
in_progress |
Inferable | No | Both players |
checkmate |
Inferable | Yes | One player |
stalemate |
Inferable | Yes | One player |
staleturn |
Inferable | Yes | One player |
bare_king |
Inferable | Yes | One player |
mare_king |
Inferable | Yes | One player |
insufficient |
Inferable | Yes | Both players |
resignation |
Explicit-only | Yes | One player |
illegal_move |
Explicit-only | Yes | One player |
time_limit |
Explicit-only | Yes | One player |
move_limit |
Explicit-only | Yes | Both players |
repetition |
Explicit-only | Yes | Both players |
agreement |
Explicit-only | Yes | Both players |
Status Semantics
Note on Terminology: Active Player’s Pieces
Throughout this specification, phrases like “the active player’s terminal pieces” or “pieces of the active player’s side” refer to pieces whose Side attribute matches the Active Player.
The Side attribute indicates a piece’s camp affiliation, not operational control. The rule system determines which pieces the active player can actually play. However, for status evaluation purposes (which is rule-agnostic), CGSN evaluates conditions relative to pieces matching the active player’s side.
This distinction is important in variant games where players might control opponent pieces, but CGSN statuses are evaluated based on side affiliation.
in_progress
The game session continues with no terminal state observed. This is the default state for ongoing games.
Observable fact: “No terminal condition has been reached; the match proceeds normally.”
Terminology note: This status applies when the Active Player can make at least one Legal Move, though CGSN itself does not determine legality—that is the rule system’s responsibility.
checkmate
All Terminal Pieces of the active player’s side are in Check State. Mechanically Possible Moves exist, but all such moves would result in at least one terminal piece remaining in or being placed in check state.
Observable fact: “All terminal pieces of the active player’s side are in check state, and all mechanically possible moves would leave or place terminal pieces in check state.”
Formal definition:
- All terminal pieces in check: Each terminal piece whose Side attribute matches the Active Player can be captured by at least one opponent move (based on piece movement capabilities)
- Moves mechanically possible: At least one Mechanically Possible Move exists (conforming to piece movement capabilities and protocol constraints, without regard to check state constraints)
- All moves violate check constraint: Every Mechanically Possible Move would result in at least one terminal piece of the active player’s side remaining in or being placed in check state
Rule-agnostic interpretation: Whether this results in victory for the opponent, defeat for the active player, or other outcome depends entirely on the rule system.
Examples across game types:
- Single terminal piece (standard chess): The king is in check, and all mechanically possible moves (king moves or blocking/capturing moves) would leave the king in check or place it in check
- Multiple terminal pieces (hypothetical variant): All kings whose side matches the active player are simultaneously in check, and all mechanically possible moves would leave at least one king in check
- Asymmetric terminal pieces: All designated terminal piece(s) for one player are in check state with all moves leaving/placing them in check
Note on check state evaluation: Check State evaluates whether the opponent could capture the terminal piece using a Mechanically Possible Move. In rule systems that permit leaving terminal pieces in check state (where such moves would be Legal Moves), checkmate can still be evaluated as a position where all terminal pieces are capturable and no mechanically possible move would change this.
Nature of blockage: Mechanically possible moves exist, but all would violate the check constraint. The blockage is rule-based (constraint about check states), not mechanical.
Relationship to move hierarchy: The distinction here is between Mechanically Possible Moves and Legal Moves. Checkmate occurs when mechanically possible moves exist, but none would satisfy the check constraint that the rule system imposes for legality.
stalemate
At least one Terminal Piece of the active player’s side is not in Check State. Mechanically Possible Moves exist, but all such moves would place at least one terminal piece of the active player’s side in check state.
Observable fact: “At least one terminal piece of the active player’s side is not in check state, but all mechanically possible moves would place at least one terminal piece in check state.”
Formal definition:
- Not all in check: At least one terminal piece whose Side attribute matches the Active Player is not capturable by any opponent move (based on piece movement capabilities)
- Moves mechanically possible: At least one Mechanically Possible Move exists (conforming to piece movement capabilities and protocol constraints, without regard to check state constraints)
- All moves violate check constraint: Every Mechanically Possible Move would result in at least one terminal piece of the active player’s side being placed in check state
Rule-agnostic interpretation:
- Western chess: typically indicates a draw
- Shōgi and xiangqi: typically indicates a loss for the player without legal moves
- Other systems: may define different outcomes
Distinction from checkmate: In stalemate, at least one terminal piece of the active player’s side is NOT currently in check state. In checkmate, ALL such terminal pieces are currently in check state.
Distinction from staleturn: In stalemate, Mechanically Possible Moves exist but all would violate the check constraint (placing terminal pieces in check). In staleturn, no mechanically possible moves exist at all, regardless of check considerations.
Examples:
- Single terminal piece: King not in check, but all mechanically possible moves (king moves or other piece moves) would place the king in check
- Multiple terminal pieces: At least one king not in check, but all mechanically possible moves would place at least one terminal piece in check
Nature of blockage: Mechanically possible moves exist, but all would violate the check constraint. The blockage is rule-based (constraint about check states), not mechanical.
Relationship to move hierarchy: Like checkmate, this involves the distinction between Mechanically Possible Moves and Legal Moves. Stalemate occurs when mechanically possible moves exist, but none would satisfy the check constraint for legality.
staleturn
No Mechanically Possible Moves exist for any piece of the active player’s side according to piece movement capabilities. Every piece whose Side attribute matches the Active Player is physically blocked from moving.
Observable fact: “No moves are mechanically possible for any piece of the active player’s side; all pieces are blocked according to their movement patterns.”
Formal definition:
- No mechanically possible moves: For every piece whose Side attribute matches the Active Player, no Mechanically Possible Moves exist according to that piece’s movement capabilities (name, state, style attributes) and the current board configuration
Rule-agnostic interpretation: Different rule systems may treat this as:
- Invalid position (should never occur in proper play)
- Draw (similar to stalemate)
- Loss for the blocked player
- Special adjudication case
Distinction from stalemate: In staleturn, no pieces can move at all due to physical blockage according to piece movement patterns. The blockage is mechanical (based purely on movement capabilities and board geometry), not caused by rule-based constraints about check states.
Distinction from checkmate: In checkmate, Mechanically Possible Moves exist but all would leave/place terminal pieces in check. In staleturn, no mechanically possible moves exist at all.
Examples:
- All pieces surrounded by friendly or enemy pieces with no empty squares in their movement range
- All pieces blocked by board edges and other pieces with no accessible destinations according to movement patterns
- Complete gridlock where the board configuration prevents any piece from reaching any destination according to its movement capabilities
Nature of blockage: The blockage is purely mechanical/geometric - pieces cannot physically move according to their movement patterns (as determined by their Name, State, and Style attributes), independent of any rule constraints about check states or other game-specific rules.
Note on rarity: Staleturn is significantly rarer than stalemate and may indicate unusual board configurations, variant-specific positions, or composed problems rather than positions arising from normal play.
Relationship to move hierarchy: This status indicates that no Mechanically Possible Moves exist, which is more restrictive than both checkmate and stalemate where such moves do exist but would violate check constraints.
bare_king
Only Terminal Pieces remain on the board for at least one side, with all other pieces of that side having been captured or removed.
Observable fact: “One side is reduced to terminal piece(s) only, with no supporting pieces remaining.”
Formal definition:
- For at least one player side, the set of pieces on the board equals the set of terminal pieces
Rule-agnostic interpretation:
- Historical shatranj: often treated as immediate terminal state
- Xiangqi variants: may allow continued play
- Western chess: continues until checkmate or other terminal state
- Some variants: may be immediate win for the opponent
Support for multiple terminal pieces: This status applies when a player has only their terminal pieces remaining, regardless of how many terminal pieces the game allows per player.
Examples:
- Single terminal piece: Only the king remains on the board
- Multiple terminal pieces: Only the two or more kings remain, with all other pieces captured
- Zero terminal pieces (variant-specific): If a rule system defines no terminal pieces, this status cannot occur
Terminology note: “One side” refers to pieces sharing the same Side attribute value.
mare_king
All Terminal Pieces of one player’s side have been physically captured and removed from the board.
Observable fact: “All terminal pieces of one side have been captured and removed from play.”
Formal definition:
- For at least one player side, the set of terminal pieces whose Side attribute matches that player is empty (all have been captured)
Rule-agnostic interpretation: This typically indicates game termination, but the competitive outcome depends on the rule system. Common in variants where leaving terminal pieces in Check State is permitted by rule, allowing actual capture to occur.
Distinction from checkmate: In checkmate, terminal pieces remain on the board in check state with all mechanically possible moves leaving/placing them in check. In mare_king, the capture has actually occurred and terminal pieces no longer exist on the board.
Support for multiple terminal pieces: This status is only recorded when all terminal pieces of one side have been captured. If a player has multiple terminal pieces and only some are captured, the game continues (unless other rules terminate it).
Examples:
- Single terminal piece: The king has been captured
- Multiple terminal pieces: Both kings (or all terminal pieces) of one player’s side have been captured
- Game with capture rules: Variants that permit leaving terminal pieces in check state, allowing actual capture
Note on zero terminal pieces: In rule systems that define no terminal pieces for any player, this status cannot occur as there are no pieces designated as terminal.
Terminology note: “One player’s side” refers to pieces sharing the same Side attribute value.
insufficient
Neither player possesses sufficient material to force any Terminal State under the applicable game rules. The specific material combinations considered insufficient depend on the rule system and its winning conditions.
Observable fact: “Neither side can force any decisive outcome with remaining material according to the rule system’s terminal state definitions.”
Formal definition (rule-dependent):
- Given the current pieces and their movement capabilities, no sequence of Mechanically Possible Moves exists that would force a terminal state under the applicable rules
Rule-agnostic interpretation:
- Western chess: typically insufficient material for checkmate (e.g., lone kings, king and bishop vs king)
- Other systems: may involve different material thresholds based on their terminal state conditions
Note on evaluation: This status is rule-dependent in its evaluation but position-derivable once rules are known. The definition of “sufficient material” varies significantly across rule systems.
Examples:
- Western chess: King vs king; king and bishop vs king; king and knight vs king
- Variant-specific: Different material combinations based on the rule system’s victory conditions
resignation
A player voluntarily resigned from the game. This is a player action, not a position state.
Observable fact: “A player resigned from the match.”
Rule-agnostic interpretation: Which player resigned and the consequences of resignation are determined by the rule system. Typically, the resigning player loses, but the outcome is rule-dependent.
Note: Resignation is a speech act or declared intention, not derivable from board position. It must always be explicitly recorded.
Terminology note: This status records the fact of resignation without indicating which player resigned or the competitive outcome. Integration formats like PCN provide additional fields (such as winner) to clarify outcomes.
illegal_move
An illegal move was made during the game. The specific nature of the illegality, how it was discovered, and the consequences are rule-dependent and may vary by competition format.
Observable fact: “A move was performed that violated the rule system’s constraints.”
Rule-agnostic interpretation: The response (correction, forfeit, etc.) depends on the rule system and competitive context.
Examples of illegality:
- Move that violates rule-system constraints (e.g., leaving terminal piece in check when prohibited)
- Move that violates fundamental protocol invariants
- Move performed out of turn
- Move after terminal state reached
Relationship to move hierarchy: An illegal move is one that violates Legal Move constraints, which may include:
- Violations of protocol invariants (not a Protocol-Valid Move)
- Violations of piece movement capabilities (not a Mechanically Possible Move)
- Violations of rule-specific constraints like check states
time_limit
A player exceeded their allocated time under the applicable time control.
Observable fact: “A player exceeded their time limit as defined by the time control rules.”
Rule-agnostic interpretation: The time limit and consequences are rule-dependent and may vary by competition format. Typically, the player who exceeded time loses.
Note: Time information is external to position and must be tracked separately. Time control systems may use various schemes (Fischer increment, byōyomi periods, etc.) as defined in integration formats like PCN.
Terminology note: This status records the fact of time expiration without indicating which player exceeded time or the competitive outcome. Integration formats like PCN provide additional fields to clarify outcomes.
move_limit
The game reached a maximum move count defined by the applicable rules.
Observable fact: “The maximum number of moves as defined by the rule system was reached.”
Rule-agnostic interpretation: The specific limit and consequences are rule-dependent (draw, win for specific player, etc.).
Examples:
- 50-move rule in Western chess
- 40-move rule in certain competitions
- Variant-specific move limits
Note: Move count is tracked through move history, not derivable from position alone.
repetition
A position occurred multiple times according to the applicable repetition rule.
Observable fact: “Position repetition occurred according to the threshold defined by the rule system.”
Formal definition (rule-dependent):
- The same Position occurred N times, where N is defined by the rule system
Rule-agnostic interpretation:
- Western chess: threefold repetition allows draw claims
- Xiangqi: different perpetual check rules
- Other systems: may define other thresholds and outcomes
Note on position equality: What constitutes “the same position” is defined by the protocol. A Position captures piece locations, piece attributes, and active player identity. Position uniqueness is enforced through canonical representation.
Note on position uniqueness constraint: The protocol enforces that “all Positions within a Match must be unique” - no player may execute a move that produces a position identical to any previous position. The repetition status indicates this constraint was violated or approached (depending on rule system thresholds).
Relationship to Pass Moves: A Pass Move that results in a position identical to a previous position violates the uniqueness constraint. However, if the position after a pass move is unique (e.g., due to the active player changing), the pass is valid under the protocol.
agreement
Players mutually agreed to end the game. This is a collaborative action, not a position state.
Observable fact: “Players agreed to conclude the match.”
Rule-agnostic interpretation: The circumstances under which agreement is permitted and its consequences are rule-dependent. May result in draw, specific winner, or other outcome.
Note: Agreement is a speech act requiring consent from both players, not derivable from board position.
Terminology note: This status records the fact of mutual agreement without specifying the competitive outcome. Integration formats like PCN provide additional fields to clarify outcomes.
Hierarchical Relationship: checkmate / stalemate / staleturn
These three statuses form a conceptual hierarchy based on two independent dimensions:
Dimension 1: Check State of Terminal Pieces
- checkmate: ALL terminal pieces of the active player’s side are in check state
- stalemate: AT LEAST ONE terminal piece of the active player’s side is NOT in check state
- staleturn: (check state is irrelevant)
Dimension 2: Nature of Blockage and Move Hierarchy
All three involve the active player being unable to make a satisfactory Legal Move, but differ in where the constraint lies within the move hierarchy:
- staleturn: No Mechanically Possible Moves exist (constraint at the mechanical/protocol level)
- checkmate: Mechanically Possible Moves exist, but all would violate check constraint (constraint at the rule level; moves are mechanically possible but not legal)
- stalemate: Mechanically Possible Moves exist, but all would violate check constraint (constraint at the rule level; moves are mechanically possible but not legal)
Relationship to Move Hierarchy from Glossary
The glossary defines the following hierarchy:
Protocol-Valid Move
↓ (+ piece movement capabilities)
Mechanically Possible Move / Pseudo-Legal Move
↓ (+ rule system constraints)
Legal Move
Within this hierarchy:
- staleturn: No moves exist even at the Mechanically Possible level
- checkmate/stalemate: Moves exist at the Mechanically Possible level, but none satisfy the additional rule system constraints (specifically, the check constraint) required for Legal Moves
Visual Hierarchy
Active player cannot make a Legal Move
│
├─ Are Mechanically Possible Moves available?
│ │
│ ├─ NO → staleturn (mechanical blockage)
│ │
│ └─ YES (but all violate check constraint)
│ │
│ └─ Are all terminal pieces currently in check?
│ │
│ ├─ YES → checkmate
│ │
│ └─ NO (at least one not in check) → stalemate
Key Insight
The fundamental distinction is between:
- Mechanical impossibility (staleturn): No Mechanically Possible Moves exist according to piece movement capabilities
- Rule-based constraint (checkmate/stalemate): Mechanically Possible Moves exist, but all would violate the check constraint required for legality
Within the rule-based constraint category, the distinction between checkmate and stalemate is simply whether all terminal pieces are currently in check (checkmate) or at least one is not (stalemate).
This hierarchy directly reflects the move hierarchy defined in the glossary, where Mechanically Possible Moves represent an intermediate level between Protocol-Valid Moves and Legal Moves.
Relationship to Terminal States
CGSN status values describe observable conditions that may indicate Terminal States. A Terminal State is “an observable condition indicating that the match has reached its conclusion.”
The relationship between CGSN statuses and match termination is entirely rule-dependent:
Terminal state indicators (typically end the match):
checkmate— usually terminalmare_king— usually terminalresignation— usually terminaltime_limit— usually terminalmove_limit— may be terminalrepetition— may be terminalagreement— usually terminal
Non-terminal conditions (game typically continues):
in_progress— explicitly non-terminalbare_king— may or may not be terminal (rule-dependent)insufficient— may indicate draw or continue playstalemate— may be terminal or non-terminal (rule-dependent)staleturn— may be terminal or non-terminal (rule-dependent)
Critical distinction: CGSN records what is observed, not whether the match should terminate. The protocol can identify when observable terminal conditions occur, but does not prescribe their competitive interpretation.
The protocol further clarifies: “A Terminal State is reached when no Protocol-Valid Moves remain that would produce a unique Position, or when an external terminal condition (resignation, time expiration, mutual agreement) occurs.”
Design Properties
- Rule-agnostic: Independent of specific game mechanics or outcome interpretation
- Observable-focused: Records verifiable facts without competitive judgment
- Generic terminal piece support: Handles zero, one, or multiple terminal pieces per side
- Movement-based definitions: Uses piece movement capabilities without presuming legality
- Clear blockage taxonomy: Distinguishes mechanical from rule-based constraints within the move hierarchy
- Inference-aware: Distinguishes position-derivable from explicit-only statuses
- Terminal state aware: Recognizes relationship to match conclusion without prescribing outcomes
- Glossary-aligned: All key terms precisely reference glossary definitions
- Protocol-consistent: Aligns with protocol concepts of Terminal States, Position uniqueness, and move hierarchy
- Extensible: New status values can be added for additional game scenarios
- String-based: Simple string representation for broad compatibility
- Standardized naming: Consistent lowercase underscore format
Examples
See CGSN Examples for practical usage across different game scenarios.
Reference Implementations
Ruby
- CGSN.rb — Reference implementation with validation support, inference categorization, check state detection, and staleturn detection.
