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 field (setup FEEN), then add small, optional parts: meta, sides, moves as [PAN, seconds], and status.

Time control lives per player. If sides.{first|second}.periods is omitted or [], that side has no time limit.


1) Absolute Minimum (Required Only)

Only the required setup (FEEN). No players, no moves, no status.

{
  "setup": "8/8/8/8/8/8/8/8 / U/u"
}

2) Chess Starting Position (FEEN Only)

Starting position for chess, nothing else.

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

3) Minimal With One Move (No Time Control)

Adds a single PAN move with time tuple (seconds is a float ≥ 0.0).

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

4) Minimal Metadata

Adds lightweight metadata; still no time control.

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

5) Minimal Players (No Time Control)

Defines sides with names (and optional styles), no periods.

{
  "sides": {
    "first":  { "name": "Alice", "style": "CHESS" },
    "second": { "name": "Bob",   "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": [
    ["g1-f3", 0.0]
  ]
}

6) Explicit “No Time Limit” (Empty Periods)

Same as above, but explicitly sets empty periods (equivalent to omitting them).

{
  "sides": {
    "first":  { "name": "Human",  "periods": [] },
    "second": { "name": "Engine", "periods": [] }
  },
  "setup": "8/8/8/8/8/8/8/8 / U/u",
  "moves": [
    ["...", 0.0]
  ]
}

7) Minimal With Simple Time Control (Fischer)

Adds per-player time control with one bank period + increment.

{
  "sides": {
    "first": {
      "name": "Alice",
      "periods": [
        { "time": 300, "inc": 3 }
      ]
    },
    "second": {
      "name": "Bob",
      "periods": [
        { "time": 300, "inc": 3 }
      ]
    }
  },
  "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", 8.0],
    ["e7-e5", 12.0]
  ]
}

8) Minimal Byōyomi (Per-Move Cap)

Bankless per-move example: every move must satisfy seconds ≤ time.

{
  "sides": {
    "first":  { "periods": [ { "time": 30, "moves": 1 } ] },
    "second": { "periods": [ { "time": 30, "moves": 1 } ] }
  },
  "setup": "8/8/8/8/8/8/8/8 / U/u",
  "moves": [
    ["...", 3.2],
    ["...", 1.0]
  ]
}

Per-move rule: if any move has seconds > time, the outcome should be status = "time_limit".


9) Minimal Canadian (Quota)

Single quota period that resets intrinsically when no next period exists.

{
  "sides": {
    "first":  { "periods": [ { "time": 300, "moves": 25 } ] },
    "second": { "periods": [ { "time": 300, "moves": 25 } ] }
  },
  "setup": "8/8/8/8/8/8/8/8 / U/u",
  "moves": [
    ["...", 10.0]
  ]
}

10) Minimal With Status

Shows a declared status without needing time control.

{
  "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]
  ],
  "status": "resignation"
}

Quick Notes

For end-to-end records, see Complete Game Records. For focused timing systems, see Time Control Systems.