# UCA 1.0 conformance corpus — every example the specification uses, plus the cases
# the prose forbids. Run:  python uca.py --check corpus.txt
# Lines below "# --- invalid" are expected to FAIL.

# --- valid: bases
MA20
ID01
SY50
BR85
MA35

# --- valid: reserved prefix AI (OS range only; the reader's instructions)
AI00
AI03
AI00_01
AI03_A01

# --- valid: structural parts
SY50_10
SY50_10_01
IN50_01
IN50_02
IN50_03
MA35_01

# --- valid: EATS
MA20_E01
IN50_2026_06_A01
BR20_T02
IN50_S04

# --- valid: temporal
IN50_2026
IN50_2026_Q2
IN50_2026_06
IN50_2026_09
IN50_2026_W27
IN50_2026_06_15
IN50_2026_S04

# --- valid: trackers
SY50_INC
SY50_INC_2026
SY50_REL_2026
SY50_INC_2027

# --- valid: hosted
MA50_01_SY20
MA50_01_SY20_A01

# --- valid: the foundation slot — 00 governs the series beneath it
MA50_00
BR61_00
MA50_10_01_00
MA50_10_01_00_01
IN50_2026_S04_A00
SY50_20_03_A00

# --- valid: a dated stream files by E/A/T
SY50_TRA_2026_09_22_E01
SY50_TRA_2026_09_22_A01
SY50_TRA_2026_09_22_T01
SY50_TRA_2026_09_22_E02

# --- invalid (each line names a rule the parser must enforce)
ZZ99              # not one of the eleven cognates
LP20              # illustrative prefix, off by default
MA20_Q3           # quarter without a year
MA50_W12          # week without a year
ID20_INC_2026     # tracker in canon
MA50_2026_INC     # tracker beneath a date
SY50_INC_01       # part beneath a tracker
ID35_01_SY20      # hosting beneath canon
BR85_01_SY20      # hosting beneath patterns
MA50_2026_SY20    # hosting beneath a date
MA20_01           # part beneath a canon leaf
MA50_01_SY20_01   # guest address invalid in its own library
SY50_2026_2027    # year beneath a year
IN50_2026_13      # month out of range
IN50_2026_06_32   # day out of range
SY50_TRA_2026_09_22_01   # nothing numeric beneath a day; file by E/A/T
IN50_2026_00      # 00 is a foundation slot, never a month
IN50_2026_06_00   # never a day
MA20__01          # empty segment
ma20              # lowercase
AI20              # reserved prefix AI holds 00-19 only
AI00_SSL          # no tracker beneath AI
AI00_SSL_2026     # no tracker beneath AI
