Critical Requirements
Precise Element Identification
User Story
As someone reading or creating tatting patterns using TatML, I want every ring and chain to have a unique identifier so that complex patterns don't fall victim to the ambiguity introduced by a volume of multiple rings and chains across a large pattern.
Example
ring1, chain1, ring2
All numbering starts at 1 for craft user accessibility, instead of 0 as would be typical of programming languages.
Explicit Picot Addressing
User Story
As someone reading or creating tatting patterns using TatML, I want each picot to be individually addressable so that I can indicate explicitly where a join must occur in order to resolve the potential for ambiguity in describing which picot to use when joining elements together within a pattern.
Example
ring1.picot1, ring1.picot2, chain1.picot1
Picot numbering starts at 1 and follows stitch order
Clear Join Syntax
User Story
As someone reading or creating tatting patterns using TatML, I want joins to include notation indicating exactly where the join must go to so that the structural composition of the pattern can be checked for possible errors.
Example
join(ring1.picot2), join(prev.picot1)
Thread Continuity Tracking
User Story
As someone reading or creating tatting patterns using TatML, I want to be sure that the pattern being analyzed guarantees continuity of the thread so that I know the construction of the piece depicted isn't impossible.
Indexing Convention
User Story
As someone reading or creating tatting patterns using TatML, and who is not a computer programmer, I want TatML to begin counting with the number 1 so that it matches the natural counting I am used to in my life and in tatting patterns.