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

Game Outcomes (PCN v1.0.0)

This page shows PCN documents with various game termination scenarios and results.

All examples are shown in both TOML and JSON formats.


Quick Reference

Result Values

Value Description
"1-0" First player wins
"0-1" Second player wins
"1/2-1/2" Draw

Termination Sources

Source Examples
Position-based Checkmate, stalemate, insufficient material
Agreement Draw offer accepted by both players
Time Clock runs out, per-ply limit exceeded
Resignation Player concedes

1. Game In Progress (No Outcome)

A game without an outcome section is considered in progress.

TOML

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 5000

[[plies]]
pmn = "e7-e5"
elapsed_ms = 6000

JSON

{
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 5000 },
    { "pmn": "e7-e5", "elapsed_ms": 6000 }
  ]
}

2. Checkmate

A game ending in checkmate, indicated by mate: true on the final ply.

TOML

[meta]
name = "Scholar's Mate"

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "e2-e4"

[[plies]]
pmn = "e7-e5"

[[plies]]
pmn = "f1-c4"

[[plies]]
pmn = "b8-c6"

[[plies]]
pmn = "d1-h5"

[[plies]]
pmn = "g8-f6"
assessment = "blunder"

[[plies]]
pmn = "h5+f7"
check = true
mate = true

[outcome]
result = "1-0"

JSON

{
  "meta": {
    "name": "Scholar's Mate"
  },
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "e2-e4" },
    { "pmn": "e7-e5" },
    { "pmn": "f1-c4" },
    { "pmn": "b8-c6" },
    { "pmn": "d1-h5" },
    { "pmn": "g8-f6", "assessment": "blunder" },
    { "pmn": "h5+f7", "check": true, "mate": true }
  ],
  "outcome": {
    "result": "1-0"
  }
}

3. Resignation

A game ending by resignation. The result indicates who won.

TOML

[meta]
event = "Club Match"

[sides.first]
name = "Alice"
variant = "Chess"

[sides.second]
name = "Bob"
variant = "Chess"

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 12400

[[plies]]
pmn = "c7-c5"
elapsed_ms = 9100

[[plies]]
pmn = "g1-f3"
elapsed_ms = 3000
comment = "Black resigns"

[outcome]
result = "1-0"

JSON

{
  "meta": {
    "event": "Club Match"
  },
  "sides": {
    "first": { "name": "Alice", "variant": "Chess" },
    "second": { "name": "Bob", "variant": "Chess" }
  },
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 12400 },
    { "pmn": "c7-c5", "elapsed_ms": 9100 },
    { "pmn": "g1-f3", "elapsed_ms": 3000, "comment": "Black resigns" }
  ],
  "outcome": {
    "result": "1-0"
  }
}

4. Draw by Agreement

Both players agree to a draw using draw_offer: true.

TOML

[meta]
name = "Friendly Game"

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 500

[[plies]]
pmn = "e7-e5"
elapsed_ms = 600
draw_offer = true
comment = "Black offers a draw"

[[plies]]
pmn = "g1-f3"
elapsed_ms = 300
draw_offer = true
comment = "White accepts"

[outcome]
result = "1/2-1/2"

JSON

{
  "meta": {
    "name": "Friendly Game"
  },
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 500 },
    {
      "pmn": "e7-e5",
      "elapsed_ms": 600,
      "draw_offer": true,
      "comment": "Black offers a draw"
    },
    {
      "pmn": "g1-f3",
      "elapsed_ms": 300,
      "draw_offer": true,
      "comment": "White accepts"
    }
  ],
  "outcome": {
    "result": "1/2-1/2"
  }
}

5. Time Forfeit — Bank Exhausted

A player runs out of time in a Fischer time control game.

TOML

[meta]
event = "Blitz Arena"

[[periods]]
duration_ms = 60000
increment_ms = 2000

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 7000

[[plies]]
pmn = "e7-e5"
elapsed_ms = 12000

[[plies]]
pmn = "g1-f3"
elapsed_ms = 30500

[[plies]]
pmn = "b8-c6"
elapsed_ms = 22400

[[plies]]
pmn = "f1-c4"
elapsed_ms = 40100
comment = "White runs out of time"

[outcome]
result = "0-1"

JSON

{
  "meta": {
    "event": "Blitz Arena"
  },
  "periods": [
    { "duration_ms": 60000, "increment_ms": 2000 }
  ],
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 7000 },
    { "pmn": "e7-e5", "elapsed_ms": 12000 },
    { "pmn": "g1-f3", "elapsed_ms": 30500 },
    { "pmn": "b8-c6", "elapsed_ms": 22400 },
    { "pmn": "f1-c4", "elapsed_ms": 40100, "comment": "White runs out of time" }
  ],
  "outcome": {
    "result": "0-1"
  }
}

Time calculation (White):


6. Time Forfeit — Per-Ply Violation

A player exceeds the per-ply time limit in byōyomi.

TOML

[[periods]]
duration_ms = 5000
plies = 1

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 3000

[[plies]]
pmn = "e7-e5"
elapsed_ms = 6200
comment = "Black exceeds 5 second limit"

[outcome]
result = "1-0"

JSON

{
  "periods": [
    { "duration_ms": 5000, "plies": 1 }
  ],
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 3000 },
    { "pmn": "e7-e5", "elapsed_ms": 6200, "comment": "Black exceeds 5 second limit" }
  ],
  "outcome": {
    "result": "1-0"
  }
}

Rule: For plies = 1, each ply must complete within duration_ms. Here 6200 > 5000.


7. Stalemate

A position where the player to move has no legal moves but is not in check.

TOML

[meta]
name = "Stalemate Example"

[setup]
feen = "7k^/5Q2/6K^1/8/8/8/8/8 / c/C"

[outcome]
result = "1/2-1/2"

JSON

{
  "meta": {
    "name": "Stalemate Example"
  },
  "setup": {
    "feen": "7k^/5Q2/6K^1/8/8/8/8/8 / c/C"
  },
  "outcome": {
    "result": "1/2-1/2"
  }
}

Note: Black to move, but has no legal moves and is not in check.


8. Insufficient Material

A position where neither player can checkmate.

TOML

[meta]
name = "King vs King"

[setup]
feen = "8/8/4k^3/8/8/4K^3/8/8 / C/c"

[outcome]
result = "1/2-1/2"

JSON

{
  "meta": {
    "name": "King vs King"
  },
  "setup": {
    "feen": "8/8/4k^3/8/8/4K^3/8/8 / C/c"
  },
  "outcome": {
    "result": "1/2-1/2"
  }
}

9. Threefold Repetition

A game drawn by position repetition.

TOML

[meta]
name = "Threefold Repetition"
comment = "Position repeated three times"

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[[plies]]
pmn = "g1-f3"

[[plies]]
pmn = "g8-f6"

[[plies]]
pmn = "f3-g1"

[[plies]]
pmn = "f6-g8"

[[plies]]
pmn = "g1-f3"

[[plies]]
pmn = "g8-f6"

[[plies]]
pmn = "f3-g1"

[[plies]]
pmn = "f6-g8"
comment = "Third repetition of initial position"

[outcome]
result = "1/2-1/2"

JSON

{
  "meta": {
    "name": "Threefold Repetition",
    "comment": "Position repeated three times"
  },
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "plies": [
    { "pmn": "g1-f3" },
    { "pmn": "g8-f6" },
    { "pmn": "f3-g1" },
    { "pmn": "f6-g8" },
    { "pmn": "g1-f3" },
    { "pmn": "g8-f6" },
    { "pmn": "f3-g1" },
    { "pmn": "f6-g8", "comment": "Third repetition of initial position" }
  ],
  "outcome": {
    "result": "1/2-1/2"
  }
}

10. Fifty-Move Rule

A game drawn by the fifty-move rule.

TOML

[meta]
name = "Fifty-Move Rule"
comment = "50 moves without pawn move or capture"

[setup]
feen = "8/8/4k^3/8/8/4K^3/3R4/8 / C/c"

# ... (100 plies of shuffling pieces)

[outcome]
result = "1/2-1/2"

JSON

{
  "meta": {
    "name": "Fifty-Move Rule",
    "comment": "50 moves without pawn move or capture"
  },
  "setup": {
    "feen": "8/8/4k^3/8/8/4K^3/3R4/8 / C/c"
  },
  "plies": [],
  "outcome": {
    "result": "1/2-1/2"
  }
}

Note: The actual 100 plies would be recorded; abbreviated here for clarity.


11. Forfeit / No-Show

A game where a player forfeits without playing.

TOML

[meta]
event = "Tournament Round 3"
comment = "Black did not appear"

[sides.first]
name = "Alice"

[sides.second]
name = "Bob"

[setup]
feen = "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"

[outcome]
result = "1-0"

JSON

{
  "meta": {
    "event": "Tournament Round 3",
    "comment": "Black did not appear"
  },
  "sides": {
    "first": { "name": "Alice" },
    "second": { "name": "Bob" }
  },
  "setup": {
    "feen": "+rnbq+k^bn+r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/+RNBQ+K^BN+R / C/c"
  },
  "outcome": {
    "result": "1-0"
  }
}

Outcome Semantics

PCN records the result but not the specific termination reason. The termination reason can be:

  1. Inferred from the position — checkmate, stalemate, insufficient material
  2. Inferred from time control — compare elapsed_ms values against periods
  3. Recorded in comments — resignation reason, forfeit explanation
  4. Recorded in ply flagscheck, mate, draw_offer

This separation allows PCN to remain rule-agnostic while still capturing complete game information.


See Also