Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. PCN
  4. 1.0.0
  5. Examples
  6. Game Status

Game Status (PCN v1.0.0, CGSN)

This page shows concrete PCN documents that end in various CGSN status values. Each example is a valid JSON you can copy/paste.

Reminder


1) in_progress — Ongoing Game

{
  "setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["e2-e4", 0.0],
    ["e7-e5", 0.0]
  ],
  "status": "in_progress"
}

2) resignation — Declared Resignation

{
  "meta": { "event": "Club Match" },
  "setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["e2-e4", 12.4],
    ["c7-c5", 9.1],
    ["g1-f3", 3.0]
  ],
  "status": "resignation"
}

Notes: resignation is an explicit outcome; it doesn’t depend on time control.


3) time_limit — Time Expired (Bank with Increment)

{
  "meta": { "event": "Blitz Arena", "started_at": "2025-01-27T14:30:00Z" },
  "sides": {
    "first":  { "periods": [ { "time": 60, "inc": 2 } ] },
    "second": { "periods": [ { "time": 60, "inc": 2 } ] }
  },
  "setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["e2-e4", 7.0],
    ["e7-e5", 12.0],
    ["g1-f3", 30.5],
    ["b8-c6", 22.4],
    ["f1-c4", 40.1]   // suppose White's bank < 0 at end  time_limit
  ],
  "status": "time_limit"
}

Rule reminder: bank (moves = null) depletes by seconds; inc adds after each move. If bank < 0 and no valid transition → time_limit.


4) time_limit — Per-Move Cap (Byōyomi)

{
  "sides": {
    "first":  { "periods": [ { "time": 5, "moves": 1 } ] },
    "second": { "periods": [ { "time": 5, "moves": 1 } ] }
  },
  "setup": "8/8/8/8/8/8/8/8 / U/u",
  "moves": [
    ["...", 3.0],
    ["...", 6.2]  // violates per-move cap 5s
  ],
  "status": "time_limit"
}

Rule reminder: for moves = 1, each move must satisfy seconds ≤ time; otherwise time_limit.


5) agreement — Draw by Agreement

{
  "meta": { "name": "Friendly Game" },
  "setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["e2-e4", 0.5],
    ["e7-e5", 0.6],
    ["g1-f3", 0.3]
  ],
  "status": "agreement"
}

Notes: explicit outcome, independent of position.


6) repetition — Position Repetition

{
  "setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["g1-f3", 1.2],
    ["g8-f6", 1.1],
    ["f3-g1", 0.9],
    ["f6-g8", 1.0],
    ["g1-f3", 1.1],
    ["g8-f6", 0.8]
  ],
  "status": "repetition"
}

Notes: The engine/viewer determines whether the necessary repetition threshold is reached for the style in use.


{
  "setup": "7k/5Q2/6K1/8/8/8/8/8 / c/C",
  "status": "stalemate"
}

Notes: Often inferable from the position; explicit status is allowed.


8) checkmate — Check with No Escape

{
  "setup": "6rk/6pp/8/8/8/8/6PP/5RK1 / c/C",
  "moves": [
    ["g1-f2", 2.1],  // illustrative only
    ["...", 0.0]
  ],
  "status": "checkmate"
}

Notes: In many cases, the final position suffices to infer checkmate; explicit status removes doubt.


9) insufficient — Insufficient Material

{
  "setup": "8/8/4k3/8/8/4K3/8/8 / C/c",
  "status": "insufficient"
}

Notes: Another status that is often inferable from the final position.


10) illegal_move — Invalid PAN or Violates Style Rules

{
  "sides": {
    "first":  { "style": "CHESS" },
    "second": { "style": "chess" }
  },
  "setup": "+rnbq+kbn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+KBN+R / C/c",
  "moves": [
    ["e2~e5", 0.2]   // bogus special operator for chess: invalid under style rules
  ],
  "status": "illegal_move"
}

Notes: illegal_move may arise from malformed PAN or a legal PAN that is not legal under the acting side’s SNN style.


11) move_limit — Move Count Reached

{
  "meta": { "name": "Training Drill" },
  "setup": "8/8/8/8/8/8/8/8 / U/u",
  "moves": [
    ["...", 0.1],
    ["...", 0.1],
    ["...", 0.1]
  ],
  "status": "move_limit"
}

Notes: Move limits are policy dependent (outside PCN core). CGSN allows recording the outcome explicitly.


Implementation Tips

For full games, see Complete Game Records. For timing patterns, see Time Control Systems.