{
  "schema_version": "1.0",
  "specification": {
    "id": "WHW-SUPPLY-XIANGQI-SPEC",
    "name": "Supply Chinese Chess Rules Specification",
    "version": "1.0.0",
    "effective_date": "2026-08-25",
    "owner": "Wong Hong Wei",
    "implementation": "/supply-chinese-chess/",
    "guide": "/supply-chinese-chess-guide/",
    "status": "implemented-and-source-tested",
    "notation_status": "Replay event schema version 1 is defined. A separate human-readable notation is not yet standardised."
  },
  "rules": [
    {"id":"WHW-SXQ-TEAM-001","title":"Opposite-colour partners","rule":"A team controls Red on one board and Black on the other board."},
    {"id":"WHW-SXQ-SUPPLY-002","title":"Captured-piece transfer","rule":"A captured non-General piece enters the teammate's reserve on the other board, recoloured for that teammate."},
    {"id":"WHW-SXQ-DROP-003","title":"Drop instead of move","rule":"A player may spend a turn placing one available reserve piece on an empty legal point on that player's own half."},
    {"id":"WHW-SXQ-PIECE-004","title":"Piece-specific drop points","rule":"Advisors use palace points, Elephants use their seven natural own-half points, Soldiers use their starting rank or one step forward on odd files, and Generals are never dropped."},
    {"id":"WHW-SXQ-CHECK-005","title":"A drop cannot give check","rule":"A legal drop may answer a check but may not immediately attack the opposing General."},
    {"id":"WHW-SXQ-LOSS-006","title":"No action loses the board","rule":"A side loses its board only when it has neither a legal ordinary move nor a legal reserve drop."},
    {"id":"WHW-SXQ-DRAW-007","title":"No-progress draw","rule":"One hundred turns without a capture or a drop draws that board."},
    {"id":"WHW-SXQ-MATCH-008","title":"Team match score","rule":"Each board win scores one point; after both boards finish, the team with more board points wins and equal scores draw the match."}
  ],
  "replay_schema": {
    "format": "wonghongwei-supply-xiangqi-replay",
    "version": 1,
    "required_fields": ["format", "version", "series", "startedAt", "exportedAt", "result", "score", "events", "supplyTimeline"],
    "event_kinds": ["move", "drop"]
  },
  "verification": {
    "implementation_file": "/supply-chinese-chess/index.html",
    "test_file": "/tests/supply-chinese-chess.test.mjs",
    "method": "The public specification is reconciled with the implemented rule functions, replay exporter and permanent rule tests."
  }
}
