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
"1/2-0" First player draws, second player forfeits
"0-1/2" First player forfeits, second player draws
"1-1/2" First player wins, second player takes half-point
"1/2-1" First player takes half-point, second player wins

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
Forfeit / No-show Player does not appear or abandons
Move limit Maximum number of moves reached
Repetition Position repeated the required number of times

1. Game In Progress (No Outcome)

A game without an outcome section is considered in progress or outcome not yet determined.

TOML

[setup]
feen = "-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"

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

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

JSON

{
  "setup": {
    "feen": "-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"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 5000 },
    { "pmn": "e7-e5", "elapsed_ms": 6000 }
  ]
}

2. Checkmate

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

TOML

[meta]
name = "Scholar's Mate"

[setup]
feen = "-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"

[[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": "-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"
  },
  "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; the reason can be noted in a comment.

TOML

[meta]
event = "Club Match"

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

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

[setup]
feen = "-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"

[[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": "-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"
  },
  "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 = "-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"

[[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": "-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"
  },
  "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 = "-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"

[[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": "-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"
  },
  "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’s plies: indices 0, 2, 4):


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 = "-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"

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

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

[outcome]
result = "1-0"

JSON

{
  "periods": [
    { "duration_ms": 5000, "plies": 1 }
  ],
  "setup": {
    "feen": "-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"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 3000 },
    {
      "pmn": "e7-e5",
      "elapsed_ms": 6200,
      "comment": "Black exceeds the 5-second per-ply 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 active player has no legal moves but is not in check. The result depends on the Rule System: in standard Chess, stalemate is a draw; in other variants it may be a loss for the stalemated player. PCN records the result as determined by the applicable Rule System.

TOML (standard Chess — draw)

[meta]
name = "Stalemate Example"

[sides.first]
variant = "Chess"

[sides.second]
variant = "Chess"

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

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

JSON (standard Chess — draw)

{
  "meta": {
    "name": "Stalemate Example"
  },
  "sides": {
    "first": { "variant": "Chess" },
    "second": { "variant": "Chess" }
  },
  "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. The result value is determined by the Rule System in effect, not by PCN itself.


8. Insufficient Material

A position where neither player can force checkmate. The Rule System determines when this condition applies.

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. The exact repetition threshold is defined by the Rule System.

TOML

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

[setup]
feen = "-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"

[[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": "-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"
  },
  "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. Move Limit Reached

A game drawn because the maximum number of moves was reached without a decisive result. The move limit is defined by the Rule System.

TOML

[meta]
name = "Move Limit"
comment = "100 plies without pawn move or capture"

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

# ... (100 plies of shuffling pieces — abbreviated here for clarity)

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

JSON

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

11. Forfeit / No-Show ("1-0" / "0-1")

A game where the second player forfeits without playing. The result is a standard win for the first player.

TOML

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

[sides.first]
name = "Alice"

[sides.second]
name = "Bob"

[setup]
feen = "-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"

[outcome]
result = "1-0"

JSON

{
  "meta": {
    "event": "Tournament Round 3",
    "comment": "Black did not appear"
  },
  "sides": {
    "first": { "name": "Alice" },
    "second": { "name": "Bob" }
  },
  "setup": {
    "feen": "-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"
  },
  "outcome": {
    "result": "1-0"
  }
}

12. Forfeit with Draw Credit ("1/2-0" and "0-1/2")

Some tournament regulations award a draw to one player when the other forfeits. PCN encodes this with the two asymmetric draw/forfeit result codes.

"1/2-0" — First player draws, second player forfeits

TOML

[meta]
event = "Correspondence League"
comment = "Second player abandoned the game"

[sides.first]
name = "Alice"

[sides.second]
name = "Bob"

[setup]
feen = "-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"

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

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

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

JSON

{
  "meta": {
    "event": "Correspondence League",
    "comment": "Second player abandoned the game"
  },
  "sides": {
    "first": { "name": "Alice" },
    "second": { "name": "Bob" }
  },
  "setup": {
    "feen": "-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"
  },
  "plies": [
    { "pmn": "e2-e4" },
    { "pmn": "e7-e5" }
  ],
  "outcome": {
    "result": "1/2-0"
  }
}

"0-1/2" — First player forfeits, second player draws

{
  "meta": {
    "event": "Correspondence League",
    "comment": "First player abandoned the game"
  },
  "sides": {
    "first": { "name": "Alice" },
    "second": { "name": "Bob" }
  },
  "setup": {
    "feen": "-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"
  },
  "plies": [
    { "pmn": "e2-e4" },
    { "pmn": "e7-e5" }
  ],
  "outcome": {
    "result": "0-1/2"
  }
}

13. Win with Half-Point Credit ("1-1/2" and "1/2-1")

Some tournament regulations award a half-point to the losing player in recognition of partial credit (e.g., adjourned games, bye rules, or specific competition formats).

"1-1/2" — First player wins, second player takes half-point

{
  "meta": {
    "event": "Special Tournament",
    "comment": "First player wins; second player receives half-point credit"
  },
  "sides": {
    "first": { "name": "Alice" },
    "second": { "name": "Bob" }
  },
  "setup": {
    "feen": "-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"
  },
  "outcome": {
    "result": "1-1/2"
  }
}

"1/2-1" — First player takes half-point, second player wins

{
  "meta": {
    "event": "Special Tournament",
    "comment": "Second player wins; first player receives half-point credit"
  },
  "sides": {
    "first": { "name": "Alice" },
    "second": { "name": "Bob" }
  },
  "setup": {
    "feen": "-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"
  },
  "outcome": {
    "result": "1/2-1"
  }
}

Outcome Semantics

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

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

This separation keeps PCN rule-agnostic: the same result value "1-0" covers checkmate, resignation, time forfeit, and forfeit without requiring a separate termination field. The meaning is always unambiguous in context.


See Also