Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. HAND
  4. 1.0.0

Hold And Notation Designator (HAND) Specification


1. Status of this document

The key words MUST, MUST NOT, SHOULD, SHOULD NOT, and MAY are to be interpreted as normative requirements.

Capitalized terms (Board, Square, Hand, Location, Game Protocol, Rule System) are defined in the Glossary and are not redefined here.


2. Overview

Hold And Notation Designator (HAND) provides a standardized notation for piece reserve locations in board games where pieces can be held off-board and potentially placed. HAND represents the off-board Location component, enabling universal representation of reserve mechanics across diverse game systems.

HAND complements Coordinate Encoding for Layered Locations (CELL) when both Board positions and reserve areas are needed, providing complete Location coverage for any board game system.


3. Dependencies

None. HAND is a foundational primitive with no dependencies on other Sashité specifications.


4. Scope

4.1 What HAND defines

HAND defines:

4.2 What HAND does not define

HAND is deliberately syntax-only. It does not define:

All semantic meaning belongs to Rule Systems, not to HAND.


5. Format specification

5.1 Structure

A HAND string consists of exactly one character:

*

5.2 Grammar (BNF)

<hand> ::= "*"

5.3 Regular expression

^\*$

Anchoring requirement (normative): Implementations MUST validate HAND notation using a full-string match (not a substring search). No leading or trailing characters (including whitespace) may be ignored or trimmed. Implementations MUST reject any input containing line breaks (\r or \n) and MUST NOT enable multiline anchoring modes that change the meaning of ^ and $.


6. Validation rules

A string is a valid HAND notation if and only if:

  1. Exact match — The string MUST be exactly the single character * (U+002A ASTERISK).
  2. No whitespace — The string MUST NOT contain any leading, trailing, or embedded whitespace.
  3. No additional characters — The string MUST NOT contain any characters other than the asterisk.

7. Design principles

7.1 Canonical representation

All reserve Locations share the same identifier (*) regardless of game context. This design choice reflects that:

7.2 CELL complementarity

HAND and CELL together provide complete Location coverage:

Location type Notation Examples
Board Square CELL a1, e4, b2A
Off-board reserve HAND *

7.3 Character choice

The asterisk character (*) was chosen for:


8. Design properties

HAND is intended to be:


9. Usage within the Game Protocol

Within the Game Protocol:

Rule Systems define:


10. Usage examples

10.1 Movement patterns

* → e4    # Place piece from reserve to Board (Hand → Board)
e4 → *    # Move piece from Board to reserve (Board → Hand)
e2 → e4   # Standard Board-to-Board movement (CELL coordinates)

10.2 Game context examples

Shōgi: Reserve represents captured pieces available for dropping

Crazyhouse: Reserve represents captured pieces available for dropping

Go: Reserve represents stone supply before placement


11. Examples

See HAND Examples for practical implementation guidance.


12. Reference implementations

The following reference libraries are maintained by Sashité and are intended to be idiomatic, fully tested, and spec-accurate implementations of HAND v1.0.0.

They generally provide:

If a library behavior appears to conflict with this document, this specification is normative. Please report issues (or propose clarifications) on the relevant repository.


13. License

This specification is made available under the terms of the Open Web Foundation Agreement 1.0 (OWFa 1.0).

The authoritative legal text is the OWF “Final Specification Agreement (OWFa 1.0)”.