AI HTML COMPATIBILITY · RHYME

Rhyme and lyric-writing guidance.

Task-specific HTML projection generated from the same repository Canon as /ai/rhyme.json.

AI / LLM / agent: this is the HTML compatibility representation generated from the same repository Canon as the raw machine endpoints. Do not infer conflicting rules from human-facing pages.

Canonical rhyme projection

{
  "contract": "GANJAEDI_MACHINE_CONTRACT",
  "version": "1.5.0",
  "authority": "PRIMARY_REPOSITORY_CANON",
  "authoritativeRef": "main",
  "rhyme": {
    "contract": "GANJAEDI_RHYME_GUIDE",
    "version": "1.0.2",
    "authority": "REPOSITORY_CANON_DERIVED_GUIDANCE",
    "scope": {
      "purpose": "Teach humans and machine consumers how to select strong Ganjaedi rhymes without inventing language forms.",
      "sourceForms": "active bare dictionary roots",
      "productiveMorphologyInBanks": false,
      "exhaustive": false,
      "note": "The listed banks are high-yield teaching examples. Additional rhyme families may be derived from the active dictionary using the same phonological rule."
    },
    "stressBasis": {
      "rule": "Lexical root stress is on the first syllable.",
      "consequence": "For a bare root, compare the pronunciation from the stressed vowel through the end of the word."
    },
    "exactRhyme": {
      "definition": "Strong exact rhyme requires the same phonological sequence from the stressed vowel through the end of the bare root.",
      "rejectHeuristic": "Matching only the final letter or a vague spelling resemblance is not enough.",
      "highYieldFamilies": [
        {
          "tail": "/ajm/",
          "members": [
            "raym",
            "taym",
            "klaym"
          ]
        },
        {
          "tail": "/ajn/",
          "members": [
            "layn",
            "nayn",
            "šayn"
          ]
        },
        {
          "tail": "/ajt/",
          "members": [
            "bayt",
            "fayt",
            "layt",
            "rayt",
            "vayt"
          ]
        },
        {
          "tail": "/ejk/",
          "members": [
            "breyk",
            "meyk",
            "šeyk",
            "teyk",
            "veyk"
          ]
        },
        {
          "tail": "/ejt/",
          "members": [
            "eyt",
            "fleyt",
            "heyt",
            "pleyt",
            "veyt"
          ]
        },
        {
          "tail": "/im/",
          "members": [
            "drim",
            "skrim",
            "strim",
            "svim"
          ]
        },
        {
          "tail": "/it/",
          "members": [
            "bit",
            "hit",
            "sit",
            "spit",
            "strit",
            "svit"
          ]
        },
        {
          "tail": "/ar/",
          "members": [
            "bar",
            "dar",
            "har",
            "yar"
          ]
        },
        {
          "tail": "/am/",
          "members": [
            "dam",
            "jam",
            "kam",
            "sam",
            "šam"
          ]
        },
        {
          "tail": "/ang/",
          "members": [
            "bang",
            "rang",
            "sang",
            "yang"
          ]
        },
        {
          "tail": "/ank/",
          "members": [
            "bank",
            "dank",
            "fank",
            "pank",
            "rank",
            "skank"
          ]
        },
        {
          "tail": "/ol/",
          "members": [
            "bol",
            "rol",
            "smol",
            "sol"
          ]
        },
        {
          "tail": "/or/",
          "members": [
            "dor",
            "mor",
            "ror",
            "sor",
            "zor"
          ]
        },
        {
          "tail": "/uk/",
          "members": [
            "druk",
            "duk",
            "huk",
            "kuk",
            "luk"
          ]
        },
        {
          "tail": "/ul/",
          "members": [
            "bul",
            "ful",
            "kul",
            "pul"
          ]
        },
        {
          "tail": "/æd/",
          "members": [
            "bæd",
            "dæd",
            "bræd",
            "hæd"
          ]
        }
      ],
      "multisyllabicFamilies": [
        {
          "tail": "/andar/",
          "members": [
            "andar",
            "bandar"
          ]
        },
        {
          "tail": "/azar/",
          "members": [
            "bazar",
            "hazar"
          ]
        },
        {
          "tail": "/ila/",
          "members": [
            "dila",
            "sila"
          ]
        },
        {
          "tail": "/ani/",
          "members": [
            "fani",
            "pani"
          ]
        },
        {
          "tail": "/ari/",
          "members": [
            "gari",
            "sari"
          ]
        },
        {
          "tail": "/itar/",
          "members": [
            "gitar",
            "sitar"
          ]
        },
        {
          "tail": "/aja/",
          "members": [
            "maya",
            "saya"
          ]
        },
        {
          "tail": "/iče/",
          "members": [
            "niče",
            "piče"
          ]
        },
        {
          "tail": "/aha/",
          "members": [
            "vaha",
            "yaha"
          ]
        },
        {
          "tail": "/a.u/",
          "members": [
            "dau",
            "vau"
          ]
        }
      ]
    },
    "assonance": {
      "definition": "Strong assonance keeps the same stressed vowel or diphthong nucleus while allowing the following consonant tail to differ.",
      "warning": "Assonance is useful for rap flow and internal rhyme, but do not label it exact rhyme.",
      "banks": [
        {
          "nucleus": "/aj/",
          "members": [
            "raym",
            "layf",
            "vayb",
            "šayn",
            "rayz",
            "taym"
          ]
        },
        {
          "nucleus": "/ej/",
          "members": [
            "breyk",
            "veyt",
            "seyv",
            "geym",
            "pleys",
            "stey"
          ]
        },
        {
          "nucleus": "/i/",
          "members": [
            "bit",
            "fil",
            "drim",
            "vin",
            "slip",
            "sing"
          ]
        },
        {
          "nucleus": "/a/",
          "members": [
            "dar",
            "jam",
            "ran",
            "bang",
            "plan"
          ]
        },
        {
          "nucleus": "/o/",
          "members": [
            "bol",
            "zor",
            "smok",
            "song",
            "stop",
            "rol"
          ]
        },
        {
          "nucleus": "/u/",
          "members": [
            "druk",
            "huk",
            "duk",
            "bul",
            "nur",
            "sun",
            "ruh",
            "gud"
          ]
        }
      ]
    },
    "compositionGuidance": {
      "priority": [
        "meaning",
        "grammatical correctness",
        "exact rhyme when natural",
        "assonance when exact rhyme would force the line",
        "internal echoes and rhythm"
      ],
      "rules": [
        "Do not invent a root, suffix, or spelling only to make a rhyme.",
        "Do not remove grammar that the sentence actually requires merely to preserve a rhyme.",
        "Prefer different lexical roots over repeating the same word as its own rhyme.",
        "A useful rap line may combine one end-rhyme family with one or two internal assonant echoes.",
        "Rotate rhyme families across bars instead of forcing every line into one tail.",
        "When no natural exact rhyme fits the intended meaning, widen to a strong assonance bank or rewrite the line."
      ]
    },
    "machineSelectionAlgorithm": [
      "1. Draft the intended meaning and grammatical structure first.",
      "2. Choose the target stressed rhyme tail for the line ending.",
      "3. Search active bare dictionary roots for an exact-tail match that also fits the required meaning and class.",
      "4. If no natural exact match fits, search a same-nucleus assonance bank.",
      "5. Rebuild the sentence with normal Ganjaedi grammar; never fabricate morphology for sound alone.",
      "6. Optionally add one or two internal echoes from the same nucleus family.",
      "7. Recheck meaning, grammar, script, and dictionary membership before output."
    ],
    "provenance": {
      "role": "PRIMARY_REPOSITORY_CANON",
      "authorityContract": "src/canon/authority.ts",
      "ownerRole": "OWNER_K0",
      "ownerGithub": "Filatotel",
      "repository": "Filatotel/Ganjaedi",
      "authoritativeRef": "main",
      "publicationEndpoint": "/ai/spec.json",
      "observedDate": "2026-09-25",
      "note": "Canonical repository data merged into Filatotel/Ganjaedi:main is the linguistic source of truth. Owner/K0 (Filatotel) is the sole product and Canon governance authority. Google Drive is non-normative development/history material."
    }
  }
}