- Sashité for Developers
- Specifications
- CGSN
- 1.0.0
- Examples
CGSN Examples
Practical scenarios illustrating Chess Game Status Notation v1.0.0 core concepts.
Overview
This document demonstrates CGSN’s key principles through focused examples:
- Inferable vs. Explicit-only: Which statuses can be derived from position
- Blockage taxonomy: Mechanical vs. rule-based constraints
- Rule-agnostic interpretation: How status remains independent of competitive outcomes
Inferable Statuses
Statuses that can be determined from position analysis when game rules are known.
checkmate
Scholar’s Mate position:
{
"setup": "r1bqkb1r/pppp1ppp/2n2n2/4p2Q/2B1P3/8/PPPP1PPP/RNB1K1NR / c/C",
"moves": [
["e2-e4", 0.0], ["e7-e5", 0.0],
["f1-c4", 0.0], ["b8-c6", 0.0],
["d1-h5", 0.0], ["g8-f6", 0.0],
["h5-f7", 0.0]
],
"status": "checkmate"
}
Observable: Black king on e8 is in check state (capturable by white queen on f7). Moves are mechanically possible (e.g., king moves to d8, d7, or f8), but all such moves would leave the king in check state.
Rule-agnostic interpretation:
- Traditional chess: White wins
- Suicide chess: White loses (opponent forced to capture)
- CGSN records: “All terminal pieces in check; all mechanically possible moves would leave/place terminal pieces in check”
stalemate
Stalemate position:
{
"setup": "7k/5Q2/6K1/8/8/8/8/8 / c/C",
"moves": [],
"status": "stalemate"
}
Observable: Black king on h8 is not in check state. Moves are mechanically possible (king could move to g8 or h7), but all such moves would place the king in check state.
Rule-agnostic interpretation:
- Western chess: Draw
- Some variants: Loss for stalemated player
- CGSN records: “At least one terminal piece not in check; all mechanically possible moves would place terminal pieces in check”
staleturn
Complete blockage position:
{
"setup": "8/8/8/3ppp2/3PKP2/3PPP2/8/8 / c/C",
"moves": [],
"status": "staleturn"
}
Observable: White king on e4 is completely surrounded by pieces. No moves are mechanically possible according to piece movement capabilities - every square the king could move to is occupied, and no other white pieces can move.
Rule-agnostic interpretation:
- May be considered invalid position
- May be treated as draw
- May be loss for blocked player
- CGSN records: “No moves are mechanically possible”
Note: This demonstrates pure mechanical blockage, independent of check considerations.
bare_king
Bare kings position:
{
"setup": "4k3/8/8/8/8/8/8/4K3 / C/c",
"moves": [],
"status": "bare_king"
}
Observable: Only kings (terminal pieces) remain on the board. All other pieces have been captured.
Rule-agnostic interpretation:
- Western chess: Draw by insufficient material
- Historical shatranj: May be terminal
- CGSN records: “Only terminal pieces remain on board”
Explicit-Only Statuses
Statuses requiring information external to position — must be explicitly recorded.
resignation
Mid-game position with resignation:
{
"setup": "rnsmksnr/8/pppppppp/8/8/PPPPPPPP/8/RNSKMSNR / M/m",
"moves": [],
"status": "resignation"
}
Why explicit-only: Position is playable. Nothing in the position indicates resignation occurred.
Rule-agnostic interpretation:
- Traditional: Resigning player loses
- CGSN records: “A player resigned”
Note: This example uses Makruk starting position, demonstrating that resignation can occur in any game tradition, even before the first move.
time_limit
Active position with time exceeded:
{
"setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/4P3/8/+P+P+P+P1+P+P+P/+RNBQ+KBN+R / c/C",
"moves": [
["e2-e4", 0.0]
],
"status": "time_limit"
}
Why explicit-only: Time information is not encoded in position.
Rule-agnostic interpretation:
- Blitz: Player loses
- Correspondence: May be adjudicated
- CGSN records: “Time limit was exceeded”
Cross-Game Applicability
Same Status, Different Games
Western Chess checkmate:
{
"setup": "r1bqkb1r/pppp1ppp/2n2n2/4p2Q/2B1P3/8/PPPP1PPP/RNB1K1NR / c/C",
"status": "checkmate"
}
Japanese Shōgi checkmate:
{
"setup": "ln1gk1snl/1r5b1/p1ppppppp/9/1p7/2P6/PP1PPPPPP/1B5R1/LNSGKGSNL P/p s/S",
"status": "checkmate"
}
Chinese Xiangqi checkmate:
{
"setup": "3a1k3/9/9/9/9/9/9/9/4R4/3AK4 / X/x",
"status": "checkmate"
}
Same CGSN status (checkmate) applies across different game traditions, demonstrating rule-agnostic universality.
Integration with PCN
Status Explicitly Declared
{
"sides": {
"first": { "style": "CHESS" },
"second": { "style": "chess" }
},
"setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/4P3/8/+P+P+P+P1+P+P+P/+RNBQ+KBN+R / c/C",
"moves": [
["e2-e4", 0.0]
],
"status": "resignation"
}
PCN explicitly declares resignation (explicit-only status, cannot be inferred).
Status Omitted (Inferable)
{
"sides": {
"first": { "style": "CHESS" },
"second": { "style": "chess" }
},
"setup": "r1bqkb1r/pppp1ppp/2n2n2/4p2Q/2B1P3/8/PPPP1PPP/RNB1K1NR / c/C",
"moves": [
["e2-e4", 0.0], ["e7-e5", 0.0],
["f1-c4", 0.0], ["b8-c6", 0.0],
["d1-h5", 0.0], ["g8-f6", 0.0],
["h5-f7", 0.0]
]
}
PCN omits status. Implementation can infer checkmate from position.
Summary
Key Principles
- Inferable statuses (
checkmate,stalemate,staleturn) can be omitted—position provides information - Explicit-only statuses (
resignation,time_limit,repetition, etc.) must be recorded—cannot be derived - Blockage taxonomy:
staleturn= mechanical blockage;checkmate/stalemate= rule-based constraint - Rule-agnostic design: Same status, different competitive interpretations
Usage Guidelines
Always explicitly record:
resignation,time_limit,move_limit,agreement,illegal_move,repetition
Can omit when position is clear:
checkmate,stalemate,staleturn,bare_king,mare_king,insufficient,in_progress
Validate appropriately:
- Verify status string format
- Check against defined CGSN values
- Optionally validate status-position consistency for inferable statuses
