Skip to content

Commit 67ebb4c

Browse files
hyperpolymathclaude
andcommitted
feat: implement Phase 1 — ISU notation parser, validator, and scorer
Replaces generic scaffold with full ISU figure skating program analysis: - ABI: JumpType, SpinType, StepType, ElementCode, GOE, TechnicalScore, ProgramScore, Violation types with Display impls and segment limits - Parser: parse ISU element codes (jumps 1-4 rotations, 6 types, combinations, sequences, spins, step/choreo sequences) - Validator: Zayak rule (triples/quads max 2 same type), element count limits (short/free), combination rules (max 3 jumps, max combos) - Scorer: ISU 2024-2025 Scale of Values for all jumps, spins, steps; GOE adjustment calculation; second-half 1.1x bonus - Manifest: ISU-specific TOML schema (discipline, segment, level, elements) - Codegen: end-to-end pipeline producing formal program score reports - 89 tests (36 unit + 36 bin + 17 integration) all passing - Example: realistic senior women's free skate program (12 elements) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 171bc03 commit 67ebb4c

11 files changed

Lines changed: 3305 additions & 50 deletions

File tree

Cargo.lock

Lines changed: 906 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# SPDX-License-Identifier: PMPL-1.0-or-later
2+
# anvomidaviser example — Senior Women's Free Skate Program
3+
#
4+
# This manifest describes a realistic senior-level women's free skating
5+
# program with 7 jump elements, 3 spins, 1 step sequence, and 1
6+
# choreographic sequence, following ISU 2024-2025 season rules.
7+
#
8+
# Usage:
9+
# anvomidaviser validate -m examples/competition/anvomidaviser.toml
10+
# anvomidaviser generate -m examples/competition/anvomidaviser.toml -o out/
11+
# anvomidaviser info -m examples/competition/anvomidaviser.toml
12+
13+
[project]
14+
name = "senior-womens-free-skate"
15+
16+
[program]
17+
discipline = "singles" # singles | pairs | ice-dance
18+
segment = "free" # short | free
19+
level = "senior" # senior | junior | novice
20+
21+
# --- Jump elements (7 of 7 maximum for free skate) ---
22+
23+
# Opening combination: triple Lutz — triple Toeloop (highest base value combo)
24+
[[elements]]
25+
code = "3Lz+3T"
26+
27+
# Solo triple Flip
28+
[[elements]]
29+
code = "3F"
30+
31+
# Triple Loop (edge jump)
32+
[[elements]]
33+
code = "3Lo"
34+
35+
# Double Axel — double Toeloop combination
36+
[[elements]]
37+
code = "2A+2T"
38+
39+
# Solo triple Salchow
40+
[[elements]]
41+
code = "3S"
42+
43+
# Second-half: double Axel (1.1x bonus)
44+
[[elements]]
45+
code = "2A"
46+
47+
# Second-half: triple Lutz — double Toeloop — double Loop (3-jump combination, 1.1x bonus)
48+
[[elements]]
49+
code = "3Lz+2T+2Lo"
50+
51+
# --- Spin elements (3 of 3 maximum) ---
52+
53+
# Change-foot combination spin, level 4
54+
[[elements]]
55+
code = "CCoSp4"
56+
57+
# Flying sit spin, level 3
58+
[[elements]]
59+
code = "FSSp3"
60+
61+
# Combination spin, level 4
62+
[[elements]]
63+
code = "CoSp4"
64+
65+
# --- Step and choreographic sequences ---
66+
67+
# Step sequence, level 3
68+
[[elements]]
69+
code = "StSq3"
70+
71+
# Choreographic sequence (fixed base value 3.00)
72+
[[elements]]
73+
code = "ChSq1"
74+
75+
[scoring]
76+
goe-table = "2024-2025" # ISU scoring season for base value tables

0 commit comments

Comments
 (0)