Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. PCN
  4. 1.0.0
  5. Examples
  6. Minimal Documents

Minimal Documents (PCN v1.0.0)

This page collects tiny, valid PCN documents you can copy/paste. They illustrate the minimum required section (setup), then progressively add optional parts: meta, sides, periods, plies, and outcome.

All examples are shown in both TOML and JSON formats.


1. Absolute Minimum (Required Only)

Only the required setup section with a FEEN position. Nothing else.

TOML

[setup]
feen = "8/8/8/8/8/8/8/8 / C/c"

JSON

{
  "setup": {
    "feen": "8/8/8/8/8/8/8/8 / C/c"
  }
}

2. Chess Starting Position

Standard chess starting position, nothing else.

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"

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

3. Minimal With One Ply

Adds a single move. No timing, no metadata.

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"

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" }
  ]
}

4. Minimal Metadata

Adds lightweight metadata.

TOML

[meta]
name = "Casual Game"
started_at = 2025-01-27T10:00:00Z

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

JSON

{
  "meta": {
    "name": "Casual Game",
    "started_at": "2025-01-27T10:00:00Z"
  },
  "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" }
  ]
}

5. Minimal Players

Defines players with names and variants.

TOML

[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 = "g1-f3"

JSON

{
  "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": "g1-f3" }
  ]
}

6. Minimal With Time Control (Fischer)

Adds Match-wide time control: 5 minutes + 3 seconds increment.

TOML

[[periods]]
duration_ms = 300000
increment_ms = 3000

[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 = 8000

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

JSON

{
  "periods": [
    { "duration_ms": 300000, "increment_ms": 3000 }
  ],
  "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": 8000 },
    { "pmn": "e7-e5", "elapsed_ms": 12000 }
  ]
}

7. Minimal Byōyomi (Per-Ply)

30 seconds per move, no main time bank.

TOML

[[periods]]
duration_ms = 30000
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 = 15000

JSON

{
  "periods": [
    { "duration_ms": 30000, "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": 15000 }
  ]
}

8. Minimal With Outcome

Adds a match result.

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"

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

[outcome]
result = "1-0"

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" },
    { "pmn": "e7-e5" }
  ],
  "outcome": {
    "result": "1-0"
  }
}

9. Minimal Draw by Agreement

Draw offer accepted by both players.

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"

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

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

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

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" },
    { "pmn": "e7-e5", "draw_offer": true },
    { "pmn": "g1-f3", "draw_offer": true }
  ],
  "outcome": {
    "result": "1/2-1/2"
  }
}

10. Minimal With Checkmate

A very short game ending in checkmate (Scholar’s Mate pattern).

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"

[[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

{
  "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"
  }
}

Quick Reference

Section Required Description
setup Yes Initial position (must contain at least feen)
meta No Match metadata (name, event, site, etc.)
links No External resource links
periods No Time control (Match-wide)
sides No Player information (name, variant, elo)
plies No Sequence of moves
outcome No Match result

Ply Properties

Property Type Description
pmn string Move in PMN format
feen string Resulting position
elapsed_ms integer Thinking time in milliseconds
assessment enum "good", "mistake", "brilliant", "blunder", "interesting", "dubious"
check boolean Move delivers check
mate boolean Move delivers checkmate
draw_offer boolean Player offers/accepts draw
comment string Free-text annotation

See Also