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

Style Name Notation (SNN) 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 (Game, Rule System, Piece Style, Player Style, Match) are defined in the Glossary and the Game Protocol. This document does not redefine those terms.


2. Overview

Style Name Notation (SNN) provides a human-readable naming system for game styles (values of Piece Style in the Sashité Game Protocol) used in abstract strategy board games.

SNN serves as a primitive building block in the Sashité ecosystem, using PascalCase names with optional numeric suffixes to identify movement traditions or game variants.

As a foundational primitive, SNN is self-contained and rule-agnostic:

Core concept: Each SNN name is a PascalCase identifier that represents a Piece Style.


3. Dependencies

None. SNN is a foundational notation and does not depend on other Sashité specifications.


4. Scope

4.1 What SNN defines

SNN defines:

4.2 What SNN does not define

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

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


5. Format specification

5.1 Structure

An SNN token is a PascalCase name with optional numeric suffix:

<uppercase-letter><letters><digits>

5.2 Grammar (BNF)

<snn> ::= <uppercase-letter> <letter>* <digit>*

<uppercase-letter> ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I"
                     | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R"
                     | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"

<letter> ::= <uppercase-letter> | <lowercase-letter>

<lowercase-letter> ::= "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i"
                     | "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r"
                     | "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"

<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

5.3 Regular expression

^[A-Z][A-Za-z]*[0-9]*$

Anchoring requirement (normative): Implementations MUST validate SNN tokens 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 $.

Case requirement (normative): Implementations MUST use case-sensitive matching and MUST NOT enable any case-folding or case-insensitive mode.


6. Validation rules

A string is a valid SNN token if and only if:

  1. ASCII-only and case-sensitive — The token MUST use only ASCII characters from the sets AZ, az, and 09. Implementations MUST treat lowercase and uppercase as distinct and MUST NOT apply Unicode normalization or case folding.

  2. Starts with uppercase — The first character MUST be an uppercase letter (AZ).

  3. Letter body — All characters following the initial uppercase and before any digits MUST be letters (AZ, az).

  4. Numeric suffix — Digits (09) MAY only appear at the end of the name, after all letters.

  5. No special characters — Only ASCII letters and digits are allowed. No hyphens, underscores, spaces, or other characters.

  6. Non-empty — The name MUST contain at least one character (the initial uppercase letter).


7. Valid and invalid examples

7.1 Valid SNN tokens

Token Description
Chess Standard style name
Shogi Standard style name
Xiangqi Standard style name
Makruk Standard style name
Chess960 Style name with numeric suffix
Shogi2 Style name with numeric suffix
A Minimal valid token (single uppercase letter)
XY123 Two letters followed by digits

7.2 Invalid SNN tokens

String Reason
"" Empty string
chess Starts with lowercase instead of uppercase
1Chess Starts with digit instead of uppercase letter
Chess-960 Contains hyphen (special character not allowed)
Chess_Variant Contains underscore (special character not allowed)
Chess 960 Contains space (special character not allowed)
Chess960A Letter after digits (digits must be at the end)
CHESS Valid but unconventional (all uppercase)

8. Design principles

As a foundational primitive, SNN follows these principles:

  1. Human-readable format — Names are easy to read and communicate.

  2. Self-contained — SNN can be validated syntactically without external tables; semantics are supplied by the context.

  3. Direct association — Each name is associated directly with a Piece Style in a given context.

  4. Universal applicability — SNN is suitable for any abstract strategy game that uses the Sashité notion of Piece Style.

  5. Deterministic usage — Within a given context, a given SNN name SHOULD consistently refer to the same Piece Style.


9. Style assignment

Within a specific Game, Rule System, or engine:


10. Usage within the Game Protocol

Within the Game Protocol:

The Game Protocol may stipulate that Style values are identified by SNN tokens. Rule Systems define:


11. Design properties

SNN is intended to be:


12. Reference implementations

The following reference libraries are maintained by Sashité and are intended to be idiomatic, fully tested, and spec-accurate implementations of SNN 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)”.