Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. CGSN
  4. 1.0.0
  5. Examples

CGSN Examples

Practical scenarios illustrating Chess Game Status Notation (CGSN) core concepts.


Overview

This page demonstrates CGSN’s key ideas through focused examples:

For the formal definitions, refer to the main CGSN specification.


Position-inferable statuses

These statuses can be determined from position analysis when the rules of the game are known. They may be omitted by an enclosing notation if the position is provided and the consumer can recompute them.

Terminal Piece statuses

check

Simple check position:

{
  "setup": "4k^3/8/8/8/8/8/4R3/4K^3 / c/C",
  "moves": [],
  "status": "check"
}

Observable: The black king on e8 can be captured by the white rook on e2.

Per-piece evaluation: check applies to the specific Terminal Piece that is capturable by an opponent’s Pseudo-Legal Move.

Rule-agnostic interpretation:


stale

Safe king position:

{
  "setup": "4k^3/8/8/8/8/8/8/R3K^3 / c/C",
  "moves": [],
  "status": "stale"
}

Observable: The black king on e8 cannot be captured by any white piece.

Per-piece evaluation: stale applies to the specific Terminal Piece that cannot be captured by any opponent Pseudo-Legal Move.

Rule-agnostic interpretation:


checkmate

Scholar’s Mate position:

{
  "setup": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / 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: The black king on e8 is in check, and every Pseudo-Legal Move still leaves that same king in check.

Per-piece evaluation: checkmate applies to the specific Terminal Piece that is in check and cannot escape check through any Pseudo-Legal Move.

Rule-agnostic interpretation:


stalemate

Stalemate position:

{
  "setup": "7k^/5Q2/6K^1/8/8/8/8/8 / c/C",
  "moves": [],
  "status": "stalemate"
}

Observable: The black king on h8 is not in check, but every Pseudo-Legal Move would put that same king in check.

Per-piece evaluation: stalemate applies to the specific Terminal Piece that is currently safe, but cannot move without becoming threatened.

Rule-agnostic interpretation:


Position statuses

nomove

Complete blockage position:

{
  "setup": "8/8/8/3ppp2/3PKP2/3PPP2/8/8 / c/C",
  "moves": [],
  "status": "nomove"
}

Observable: The active player has no Pseudo-Legal Moves at all.

Per-piece evaluation: Unlike check/stale/checkmate/stalemate, nomove is not tied to a specific Terminal Piece. It describes the position globally.

Rule-agnostic interpretation:


bareking

Bare king position:

{
  "setup": "4k^3/8/8/8/8/8/4P3/4K^3 / c/C",
  "moves": [],
  "status": "bareking"
}

Observable: One side has exactly one piece left on the Board, and that piece is a Terminal Piece.

Rule-agnostic interpretation:


mareking

Missing king position:

{
  "setup": "4q3/8/8/8/8/8/8/4K^3 / C/c Q/",
  "moves": [],
  "status": "mareking"
}

Observable: A side has no Terminal Pieces on the Board.

Rule-agnostic interpretation:


insufficient

Insufficient material position:

{
  "setup": "4k^3/8/8/8/8/8/8/4K^2N / C/c",
  "moves": [],
  "status": "insufficient"
}

Observable: Under the game’s insufficiency rules, neither side can force a decisive outcome with the remaining material.

Rule-agnostic interpretation:

Common insufficient configurations in chess:


Explicit-only statuses

These statuses cannot be derived from position + rules alone. They require extra context such as clocks, player actions, or history tracking, and therefore must be explicitly recorded by the surrounding notation when they occur.

resignation

Mid-game position with resignation:

{
  "setup": "rnsmk^snr/8/pppppppp/8/8/PPPPPPPP/8/RNSKMSNR / M/m",
  "moves": [],
  "status": "resignation"
}

Why explicit-only: The position itself does not reveal a resignation event.


timelimit

Active position with time exceeded:

{
  "setup": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/c",
  "moves": [
    ["e2-e4", 0.0]
  ],
  "status": "timelimit"
}

Why explicit-only: Time is not encoded in the position.


repetition

Position with repetition:

{
  "setup": "4k^3/8/8/8/8/8/8/4K^2R / C/c",
  "moves": [
    ["h1-g1", 0.0], ["e8-f8", 0.0],
    ["g1-h1", 0.0], ["f8-e8", 0.0],
    ["h1-g1", 0.0], ["e8-f8", 0.0],
    ["g1-h1", 0.0], ["f8-e8", 0.0]
  ],
  "status": "repetition"
}

Why explicit-only: The current position alone does not reveal how many times it has occurred. History tracking is required.


agreement

Draw by agreement:

{
  "setup": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/c",
  "moves": [],
  "status": "agreement"
}

Why explicit-only: The position does not encode player intent or mutual agreement.


Same status, different outcomes

CGSN does not define who wins or loses. A Rule System (or tournament rules) interprets the status.

Status Example outcome in Western chess Example outcome in other rulesets
checkmate decisive may invert in suicide/antichess
stalemate often draw may be loss or win depending on rules
bareking often triggers adjudication may be decisive in historical rules

Integration with PCN

Status explicitly declared

{
  "sides": {
    "first": { "style": "CHESS" },
    "second": { "style": "chess" }
  },
  "setup": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/4P3/8/+P+P+P+P1+P+P+P/-RNBQK^BN-R / c/C",
  "moves": [
    ["e2-e4", 0.0]
  ],
  "status": "resignation"
}

Here, the surrounding notation records an explicit-only event (resignation).


Status omitted (inferable)

{
  "sides": {
    "first": { "style": "CHESS" },
    "second": { "style": "chess" }
  },
  "setup": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / 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]
  ]
}

Here, checkmate can be computed from the position and rules, so the status may be omitted.


Summary

Key principles

Usage guidelines

Always explicitly record events like:

May omit when position is provided and consumers can recompute: