-
Notifications
You must be signed in to change notification settings - Fork 1
feat(meanderaw): ✨ identify a rendered document as a lattice address #672
Copy link
Copy link
Open
Labels
scope:meanderawGreek meander (key/fret) SVG generator CLI and the composable motif/modifier library it readsGreek meander (key/fret) SVG generator CLI and the composable motif/modifier library it readssource:agentOpened by a coding agentOpened by a coding agentstatus:ready-for-agentFully specified, ready for an unattended agentFully specified, ready for an unattended agenttype:featA new feature or capability that adds value for usersA new feature or capability that adds value for users
Description
Activity
Metadata
Metadata
Assignees
Labels
scope:meanderawGreek meander (key/fret) SVG generator CLI and the composable motif/modifier library it readsGreek meander (key/fret) SVG generator CLI and the composable motif/modifier library it readssource:agentOpened by a coding agentOpened by a coding agentstatus:ready-for-agentFully specified, ready for an unattended agentFully specified, ready for an unattended agenttype:featA new feature or capability that adds value for usersA new feature or capability that adds value for users
Parent
#664
What to build
Identifying a rendered document returns its lattice address. Given the document text and the
column span of its true repeat, the service reports the row count, the span, the literal
hexadecimal address, the canonical symmetry class, and — where structure earns one — the
sub-family name.
It reads the rendered document, never the generator, so a renderer that draws the wrong thing
cannot be handed a name it did not earn. That is the same reason the existing mosaic round trip
goes through a real document rather than comparing tiles directly.
The true repeat span is recovered generically from the family's own pitch — the difference
between the drawing's right edge at consecutive repeat counts, over the grid unit — so no motif
service gains a method. A family whose pitch is not recoverable that way gets an override, not
all ten.
Address format:
<rows>r<columns>c-<hexadecimal>.snake plainat six rows is6r5c-63335c635ccc69ccca399a333;snake flipat six rows is6r8c-333356335635cc63cc69cca5cca39a399a333333, wider because turning a unit over doubles therepeat.
Interior points only, as
mosaicalready does — the two border rules are not addressed. Edgesonly: a point on no edge addresses as
0, and whether a bare point paints a dot is afamily-level fact outside the address. That keeps the encoding hexadecimal, which a fifth state
would not.
Acceptance criteria
canonical class, and earned sub-family name where there is one
method
substituted for it
parallel serpentine-strands-3-offset-1at three rowsshares the canonical class of the
mosaiczigzagtile56a9, andparallel serpentine-strands-4-offset-2at four rows shares56a933coordinate — is refused here rather than addressed wrongly
Blocked by