{
  "contract": "GANJAEDI_MACHINE_CONTRACT",
  "version": "0.2.2",
  "authority": "SECONDARY_SERIALIZATION_OF_ACTIVE_SITE_DATA",
  "manifest": {
    "name": "Ganjaedi",
    "contract": "GANJAEDI_MACHINE_CONTRACT",
    "version": "0.2.2",
    "authority": "SECONDARY_SERIALIZATION_OF_ACTIVE_SITE_DATA",
    "endpoints": [
      {
        "kind": "discovery",
        "path": "/llms.txt",
        "mediaType": "text/plain",
        "purpose": "Small discovery index for language models and agents."
      },
      {
        "kind": "bootstrap",
        "path": "/ai/quick.md",
        "mediaType": "text/markdown",
        "purpose": "Compact bootstrap context for using Ganjaedi without reading the full corpus."
      },
      {
        "kind": "corpus",
        "path": "/ai/full.md",
        "mediaType": "text/markdown",
        "purpose": "Complete machine-oriented language bundle generated from active repository data."
      },
      {
        "kind": "spec",
        "path": "/ai/spec.json",
        "mediaType": "application/json",
        "purpose": "Top-level structured orthography, grammar, discourse, validation, and authority contract."
      },
      {
        "kind": "grammar",
        "path": "/ai/grammar.json",
        "mediaType": "application/json",
        "purpose": "Structured core grammar and discourse snapshot serialized from active Owner Canon."
      },
      {
        "kind": "dictionary",
        "path": "/ai/dictionary.json",
        "mediaType": "application/json",
        "purpose": "Compact dictionary projection generated from the same dictionaryEntries used by the public site."
      }
    ]
  },
  "policy": {
    "principle": "Machine output is a secondary serialization of active repository data and accepted Owner Canon. It never creates or supersedes Ganjaedi Canon.",
    "precedence": [
      "explicit dictionary surface and root class",
      "active alphabet and orthography data",
      "structured grammar snapshot serialized from active Owner Canon",
      "active public Learn course as non-exhaustive teaching material",
      "machine guardrails and adversarial checks",
      "model prior knowledge (no authority)"
    ],
    "teachingBoundary": "The public Learn course may be shorter than the active structured grammar snapshot. An omission in Learn does not make a rule undefined when the structured grammar contract licenses it.",
    "unknownBehavior": "If no active source licenses a form or construction, report it as unknown or paraphrase with known forms. Do not invent morphology or syntax.",
    "generation": [
      "Choose lexical roots from the active dictionary.",
      "Preserve the dictionary root class; same spelling in another class is a separate entry.",
      "Apply only productive patterns explicitly present in the structured grammar contract.",
      "Use relation prefixes for additional nominal participants instead of inventing case endings or verb-valency morphology.",
      "Use V+in (or ROOT+yin after a vowel-final V root) for the default nonfinite/event-nominal construction.",
      "Use ki for licensed relative, finite-complement, and relation-marked finite-adverbial clauses.",
      "Use sang-sam as the general reciprocal referent; sa-sam means with self.",
      "Use zen for resemblance/comparison standard and mor/mos for degree.",
      "Use sak + V+in for ability or permission; do not substitute bo or šayad for ability.",
      "Preserve canonical non-ASCII Latin letters; do not anglicize spelling.",
      "Keep the apostrophe as the palatalization marker in both LAT and CYR Ganjaedi surfaces.",
      "Keep each Ganjaedi token in one script; mixed Latin/Cyrillic tokens are invalid.",
      "For LAT→CYR, prefer the explicit dictionary Cyrillic surface. Never guess whether Latin j maps to ж or дж.",
      "Validate output against orthography, dictionary classes, structured grammar, and adversarial checks before returning it."
    ],
    "forbiddenInferences": [
      "Do not introduce articles.",
      "Do not add subject agreement to verbs or noun agreement to adjectives.",
      "Do not interpret resultative -an/-n as simple past tense.",
      "Do not infer passive voice from a resultative form alone; grammatical passive voice is absent.",
      "Do not invent a universal noun-to-verb suffix; -on is not productive.",
      "Do not mark more than one unmarked primary object; additional nominal participants use relation prefixes.",
      "Do not use sa-sang as a general reciprocal; use sang-sam and apply the required relation prefix outside it.",
      "Do not treat ki as only an interrogative; it is also the active clause linker.",
      "Do not generate goin from go; vowel-final go uses the y-stem and therefore goyin.",
      "Do not replace zen with an invented English-like than particle.",
      "Do not replace æ with ae/e/a, š with sh, ś with shch, or č with ch in canonical Latin output.",
      "Do not use c or w as active Ganjaedi Latin letters.",
      "Do not generate Russian soft sign ь or Ь in canonical Ganjaedi CYR; palatalization is written with apostrophe."
    ],
    "pseudocode": [
      "root = LOOKUP_DICTIONARY(concept, required_class)",
      "if root == NONE: return UNKNOWN_OR_PARAPHRASE",
      "rule = LOOKUP_STRUCTURED_GRAMMAR(requested_operation)",
      "if rule == NONE: return UNKNOWN_OR_PARAPHRASE",
      "form = APPLY_RULE_WITH_ROOT_CLASS(rule, root)",
      "if form == UNDEFINED: return UNKNOWN_OR_PARAPHRASE",
      "if requested_script == CYR: form = EXPLICIT_CYR_SURFACE_OR_SAFE_TRANSLITERATION(form)",
      "if transliteration_is_ambiguous: return LOOKUP_REQUIRED",
      "ASSERT_SINGLE_SCRIPT_PER_TOKEN(form)",
      "ASSERT_CANONICAL_ORTHOGRAPHY(form)",
      "ASSERT_GRAMMAR_CONTRACT(form)",
      "return form"
    ]
  },
  "provenance": {
    "role": "SECONDARY_TYPED_SERIALIZATION_OF_ACTIVE_OWNER_CANON",
    "sources": [
      {
        "title": "Ganjaedi — Grammar v1 — Active Canon",
        "status": "ACTIVE_NORMATIVE_GRAMMAR"
      },
      {
        "title": "Ganjaedi — Seed & Canon Foundation",
        "status": "ACTIVE_OWNER_CANON"
      },
      {
        "title": "Dictionary Словарь",
        "status": "ACTIVE_OWNER_CANON"
      }
    ],
    "observedDate": "2026-09-20",
    "note": "This repository object serializes accepted Owner Canon. It does not create or supersede linguistic Canon."
  },
  "orthography": {
    "alphabet": [
      {
        "latin": "a",
        "cyrillic": [
          "а"
        ],
        "ipa": "/a/",
        "type": "vowel"
      },
      {
        "latin": "e",
        "cyrillic": [
          "е"
        ],
        "ipa": "/e/",
        "type": "vowel"
      },
      {
        "latin": "æ",
        "cyrillic": [
          "э"
        ],
        "ipa": "/ɛ/",
        "type": "vowel"
      },
      {
        "latin": "i",
        "cyrillic": [
          "и"
        ],
        "ipa": "/i/",
        "type": "vowel"
      },
      {
        "latin": "o",
        "cyrillic": [
          "о"
        ],
        "ipa": "/o/",
        "type": "vowel"
      },
      {
        "latin": "u",
        "cyrillic": [
          "у"
        ],
        "ipa": "/u/",
        "type": "vowel"
      },
      {
        "latin": "b",
        "cyrillic": [
          "б"
        ],
        "ipa": "/b/",
        "type": "consonant"
      },
      {
        "latin": "d",
        "cyrillic": [
          "д"
        ],
        "ipa": "/d/",
        "type": "consonant"
      },
      {
        "latin": "f",
        "cyrillic": [
          "ф"
        ],
        "ipa": "/f/",
        "type": "consonant"
      },
      {
        "latin": "g",
        "cyrillic": [
          "г"
        ],
        "ipa": "/g/",
        "type": "consonant"
      },
      {
        "latin": "h",
        "cyrillic": [
          "х"
        ],
        "ipa": "/x ~ h/",
        "type": "consonant"
      },
      {
        "latin": "j",
        "cyrillic": [
          "ж",
          "дж"
        ],
        "ipa": "/ʒ ~ dʒ/",
        "type": "consonant",
        "ambiguousLatinToCyrillic": true
      },
      {
        "latin": "k",
        "cyrillic": [
          "к"
        ],
        "ipa": "/k/",
        "type": "consonant"
      },
      {
        "latin": "l",
        "cyrillic": [
          "л"
        ],
        "ipa": "/l/",
        "type": "consonant"
      },
      {
        "latin": "m",
        "cyrillic": [
          "м"
        ],
        "ipa": "/m/",
        "type": "consonant"
      },
      {
        "latin": "n",
        "cyrillic": [
          "н"
        ],
        "ipa": "/n/",
        "type": "consonant"
      },
      {
        "latin": "p",
        "cyrillic": [
          "п"
        ],
        "ipa": "/p/",
        "type": "consonant"
      },
      {
        "latin": "r",
        "cyrillic": [
          "р"
        ],
        "ipa": "/r/",
        "type": "consonant"
      },
      {
        "latin": "s",
        "cyrillic": [
          "с"
        ],
        "ipa": "/s/",
        "type": "consonant"
      },
      {
        "latin": "t",
        "cyrillic": [
          "т"
        ],
        "ipa": "/t/",
        "type": "consonant"
      },
      {
        "latin": "v",
        "cyrillic": [
          "в"
        ],
        "ipa": "/v/",
        "type": "consonant"
      },
      {
        "latin": "z",
        "cyrillic": [
          "з"
        ],
        "ipa": "/z/",
        "type": "consonant"
      },
      {
        "latin": "y",
        "cyrillic": [
          "й"
        ],
        "ipa": "/j/",
        "type": "consonant"
      },
      {
        "latin": "š",
        "cyrillic": [
          "ш"
        ],
        "ipa": "/ʃ/",
        "type": "consonant"
      },
      {
        "latin": "ś",
        "cyrillic": [
          "щ"
        ],
        "ipa": "/ɕː/",
        "type": "consonant"
      },
      {
        "latin": "č",
        "cyrillic": [
          "ч"
        ],
        "ipa": "/tɕ/",
        "type": "consonant"
      }
    ],
    "contract": {
      "canonicalLatinNormalization": "NFC",
      "canonicalCyrillicNormalization": "NFC",
      "canonicalOutputAliasPolicy": {
        "§": "æ"
      },
      "forbiddenLatinLetters": [
        "c",
        "w"
      ],
      "forbiddenCyrillicLetters": [
        "ь",
        "Ь"
      ],
      "palatalization": {
        "latinMarker": "'",
        "cyrillicMarker": "'",
        "role": "modifier-not-letter"
      },
      "sequencesNotLetters": [
        "ay",
        "ey",
        "ya",
        "ye",
        "yo",
        "yu"
      ],
      "stress": {
        "root": "first-syllable",
        "suffixMovesRootStress": false,
        "compound": "each-root-keeps-initial-stress"
      },
      "mixedScriptTokenPolicy": "invalid",
      "ambiguousLatinToCyrillicPolicy": "lookup-explicit-canonical-surface-or-fail-closed",
      "asciiSubstitutionPolicy": "do-not-replace-æ-š-ś-č-with-ae-sh-shch-ch"
    }
  },
  "grammar": {
    "source": "ganjaediGrammarContract",
    "sourceRole": "secondary structured serialization of active Owner Canon; normative for machine consumers only by reference to that provenance",
    "contract": {
      "contract": "GANJAEDI_GRAMMAR_CONTRACT",
      "version": "1.0.0",
      "provenance": {
        "role": "SECONDARY_TYPED_SERIALIZATION_OF_ACTIVE_OWNER_CANON",
        "sources": [
          {
            "title": "Ganjaedi — Grammar v1 — Active Canon",
            "status": "ACTIVE_NORMATIVE_GRAMMAR"
          },
          {
            "title": "Ganjaedi — Seed & Canon Foundation",
            "status": "ACTIVE_OWNER_CANON"
          },
          {
            "title": "Dictionary Словарь",
            "status": "ACTIVE_OWNER_CANON"
          }
        ],
        "observedDate": "2026-09-20",
        "note": "This repository object serializes accepted Owner Canon. It does not create or supersede linguistic Canon."
      },
      "closure": {
        "coreGrammar": "CLOSED",
        "openCoreSlots": [],
        "futureVocabularyPolicy": "New aspectual/modal vocabulary may be added lexically through the ordinary root-intake gate without creating a new inflectional paradigm.",
        "deliberatelyAbsent": [
          "articles",
          "default inflectional noun case endings",
          "irregular verbs in the productive verb system",
          "universal productive N-to-V suffix",
          "English-style question inversion",
          "dummy do",
          "grammatical passive voice",
          "automatic passive meaning from resultative",
          "dedicated simple-past suffix distinct from ba",
          "productive grammatical agreement unless a construction explicitly defines it"
        ]
      },
      "rootClasses": {
        "classes": [
          "N",
          "V",
          "Q",
          "G"
        ],
        "exactlyOneClassPerEntry": true,
        "multiClassRootClass": false,
        "crossClassHomonyms": "Independent approved entries with the same written surface may exist in different classes; morphology follows the selected entry class.",
        "newRootConstraints": {
          "V": "New bare V roots may not end in a.",
          "Q": "New Q roots may not end in a because Q+a must remain transparent.",
          "N": "Any legal final segment.",
          "G": "Any legal final segment."
        }
      },
      "morphology": {
        "compounds": {
          "delimiter": "-",
          "headDirection": "right",
          "rule": "In X-Y, Y is the semantic head and X narrows domain, type, material, function, or culture.",
          "ordinaryMaxHyphens": 3,
          "examples": [
            "rap-bit",
            "dab-trak",
            "ganja-boška"
          ]
        },
        "vala": {
          "pattern": "X-vala",
          "meaning": "thing/entity/device associated with, intended for, or used for X; with a V root, may denote a device for performing X",
          "example": "smok-vala"
        },
        "verbs": {
          "productiveForEveryVRoot": true,
          "irregularVerbs": false,
          "consonantFinal": {
            "derivationalStem": "ROOT",
            "agent": "ROOT+a",
            "actionProcess": "ROOT+in",
            "relationalAdjective": "ROOT+li",
            "mannerAdverb": "ROOT+la",
            "imperative": "ROOT+i",
            "resultative": "ROOT+an",
            "exampleFamily": [
              "rab",
              "raba",
              "rabin",
              "rabli",
              "rabla",
              "rabi",
              "raban"
            ]
          },
          "vowelFinal": {
            "derivationalStem": "ROOT+y",
            "agent": "ROOT+ya",
            "actionProcess": "ROOT+yin",
            "relationalAdjective": "ROOT+yli",
            "mannerAdverb": "ROOT+yla",
            "imperative": "ROOT+y",
            "resultative": "ROOT+n",
            "exampleFamily": [
              "si",
              "siya",
              "siyin",
              "siyli",
              "siyla",
              "siy",
              "sin"
            ],
            "goExample": [
              "go",
              "goya",
              "goyin",
              "goyli",
              "goyla",
              "goy",
              "gon"
            ]
          },
          "yFinalClass": "consonant-final because y = /j/",
          "respectfulImperative": "IMPERATIVE+s",
          "resultativeSemantics": {
            "meaning": "completed/result state",
            "simplePast": false,
            "automaticPassive": false
          },
          "nonfinite": {
            "pattern": "V+in action/process noun",
            "vowelFinalPattern": "ROOT+yin",
            "role": "default nonfinite/event-nominal construction",
            "preservesComplements": true,
            "examples": [
              "ya vant goyin",
              "ya nid goyin",
              "ya sak goyin",
              "ya stop smokin",
              "lya-rabin"
            ],
            "separateInfinitiveMorphology": false
          }
        },
        "nouns": {
          "relationalAdjective": "N+li",
          "mannerStyleDomainAdverb": "N+la where semantically interpretable",
          "stripFinalVowelBeforeSuffix": false,
          "examples": [
            "ganjali",
            "ganjala",
            "muzikli",
            "muzikla"
          ],
          "productiveNtoV": false
        },
        "qualities": {
          "baseClass": "Q",
          "adjective": "Q+a",
          "adjectiveInvariant": true,
          "adverb": "ADJECTIVE+la",
          "adverbSurfaceRule": "ordinary ...a+la -> ...ala",
          "examples": [
            "big -> biga",
            "gud -> guda -> gudala",
            "fri -> fria"
          ]
        },
        "nounNumber": {
          "underlyingPlural": "/m/",
          "vowelFinal": "-m",
          "consonantFinal": "-im",
          "yFinal": "-im",
          "palatalizedConsonantFinal": "-im",
          "writtenSolid": true,
          "stemChange": false,
          "stressShift": false,
          "exactCardinalGreaterThanOneBlocksPlural": true,
          "ekUsesSingular": true,
          "examples": [
            "guru -> gurum",
            "frend -> frendim",
            "dijey -> dijeyim",
            "dva frend",
            "tri trak"
          ],
          "morphologicalOrder": "ROOT -> DERIVATION/COMPOUND -> NUMBER; relation prefixes scope outside the complete number-marked noun",
          "scopedExamples": [
            "rab -> raba -> rabam",
            "sa-frendim",
            "ko-mæ-domim"
          ]
        }
      },
      "pronouns": {
        "firstPerson": {
          "singular": "ya",
          "pluralInclusive": "va",
          "pluralExclusive": "vi"
        },
        "secondPerson": {
          "singular": {
            "derogatory": "u",
            "neutral": "yu",
            "respectful": "yus"
          },
          "plural": {
            "derogatory": "um",
            "neutral": "yum",
            "respectful": "yums"
          }
        },
        "thirdPerson": {
          "singular": {
            "derogatory": "dau",
            "neutral": "da",
            "respectful": "das"
          },
          "plural": {
            "derogatory": "damu",
            "neutral": "dam",
            "respectful": "dams"
          }
        },
        "reflexive": {
          "operator": "sam",
          "pattern": "PRONOUN-sam",
          "examples": [
            "ya-sam",
            "yu-sam",
            "da-sam",
            "dam-sam"
          ],
          "relationPrefixScopesOutside": true
        },
        "reciprocal": {
          "form": "sang-sam",
          "meaning": "each other / one another",
          "invariant": true,
          "nominalRole": true,
          "relationPrefixesAllowed": true,
          "examples": [
            "dam si sang-sam",
            "dam giv kitab ra-sang-sam",
            "dam sæy pro-sang-sam",
            "dam rab sa-sang-sam"
          ],
          "contrast": "sa-sam means WITH SELF and is not the general reciprocal form"
        }
      },
      "determinersAndQuantifiers": {
        "demonstratives": {
          "proximal": "ye",
          "distal": "vo",
          "invariant": true,
          "numberMarkedOnNoun": true
        },
        "quantifiers": {
          "som": "some / a certain / some amount or number",
          "eni": "any / whichever / any one",
          "no": "no / none / not any",
          "ol": "all",
          "har": "every / each",
          "countBehavior": "har selects singular; ol selects plural"
        }
      },
      "relations": {
        "realization": "productive prefixes before a complete nominal referent",
        "prefixes": [
          {
            "form": "mæ-",
            "meanings": [
              "in",
              "inside"
            ]
          },
          {
            "form": "na-",
            "meanings": [
              "on",
              "surface"
            ]
          },
          {
            "form": "ko-",
            "meanings": [
              "to",
              "toward",
              "goal",
              "destination",
              "endpoint"
            ]
          },
          {
            "form": "ot-",
            "meanings": [
              "from",
              "source",
              "origin",
              "causal source",
              "temporal start",
              "since"
            ]
          },
          {
            "form": "po-",
            "meanings": [
              "along",
              "through",
              "path"
            ]
          },
          {
            "form": "tak-",
            "meanings": [
              "up to",
              "limit",
              "temporal until"
            ]
          },
          {
            "form": "sa-",
            "meanings": [
              "with",
              "accompanier"
            ]
          },
          {
            "form": "lya-",
            "meanings": [
              "purpose",
              "for use"
            ]
          },
          {
            "form": "ra-",
            "meanings": [
              "recipient",
              "addressee",
              "beneficiary"
            ]
          },
          {
            "form": "pro-",
            "meanings": [
              "about",
              "topic"
            ]
          },
          {
            "form": "age-",
            "meanings": [
              "in front of",
              "before",
              "spatial before",
              "temporal before"
            ]
          },
          {
            "form": "za-",
            "meanings": [
              "behind",
              "after",
              "spatial behind",
              "temporal after"
            ]
          },
          {
            "form": "pas-",
            "meanings": [
              "near"
            ]
          },
          {
            "form": "ka-",
            "meanings": [
              "possessor",
              "of"
            ]
          },
          {
            "form": "se-",
            "meanings": [
              "means",
              "instrument",
              "by means of"
            ]
          }
        ],
        "stacking": {
          "productive": true,
          "scopeRule": "narrower/local relation stands closer to the root",
          "examples": [
            "ko-mæ-X",
            "ot-mæ-X",
            "ko-na-X",
            "ot-na-X"
          ]
        }
      },
      "syntax": {
        "neutralWordOrder": "SVO",
        "reorderForFocusContrastRhythm": true,
        "reorderCondition": "semantic roles must remain recoverable",
        "valency": {
          "separateVerbValencyMorphology": false,
          "neutralTemplates": [
            "V",
            "S V",
            "S V O",
            "S V REL-X",
            "S V O REL-X ..."
          ],
          "unmarkedSubject": true,
          "maxUnmarkedPrimaryObjects": 1,
          "additionalNominalParticipants": "relation-marked with productive relation prefixes",
          "verbChangesWithTransitivityOrArgumentCount": false,
          "lexicalArgumentVsAdjunctMarkedByGrammar": false,
          "dummySubjectRequired": false,
          "examples": [
            "ya si dom",
            "ya go ko-dom",
            "ya giv kitab ra-frend",
            "ya bring kitab ra-frend",
            "ya rab sa-frend",
            "ya sæy pro-muzik"
          ]
        },
        "negation": {
          "particle": "no",
          "neutralOrder": "SUBJECT + no + (TAM/COPULA) + PREDICATE + complements",
          "examples": [
            "ya no rab",
            "ya no ba rab",
            "ya no sak goyin"
          ]
        },
        "questions": {
          "finalParticle": "na",
          "inversion": false,
          "dummyDo": false,
          "whInSitu": true,
          "whForms": {
            "kan": "who",
            "lan": "what",
            "fan": "where",
            "kab": "when",
            "kak": "how",
            "ki": "which / what kind",
            "skok": "how much / how many",
            "lya-lan": "purpose why / what for",
            "lan-meyk": "causal why / for what reason"
          },
          "relationPrefixesCombineWithWh": true,
          "examples": [
            "yu rab na",
            "yu si lan na",
            "ko-kan",
            "ot-fan",
            "se-lan"
          ]
        },
        "clauseLinking": {
          "linker": "ki",
          "interrogativeMeaning": "which / what kind",
          "relative": {
            "pattern": "HEAD + (REL-)ki + CLAUSE",
            "headRepeatedInsideClause": false,
            "examples": [
              "admi ki ba giv kitab ra-ya",
              "kitab ki ya ba rid",
              "admi ra-ki ya ba giv kitab",
              "tema pro-ki va sæy"
            ]
          },
          "finiteComplement": {
            "pattern": "V + ki + FINITE_CLAUSE",
            "examples": [
              "ya nou ki da ba liv",
              "ya tink ki da bu kam",
              "ya sæy ki va bu go"
            ]
          },
          "finiteAdverbial": {
            "pattern": "REL-ki + FINITE_CLAUSE",
            "attestedCoreRelations": [
              "age-",
              "za-",
              "ot-",
              "tak-"
            ],
            "readings": {
              "age-ki": "before P",
              "za-ki": "after P",
              "ot-ki": "because/from the fact that P",
              "tak-ki": "until P"
            }
          },
          "concessive": {
            "dedicatedSubordinator": false,
            "defaultPattern": "P, a Q",
            "meaning": "ordinary contrast coordination supplies concessive meaning"
          }
        },
        "conditional": {
          "if": "if",
          "then": "to",
          "thenOptionalWhenClear": true,
          "realOpen": "if P, (to) Q",
          "hypotheticalCounterfactual": "if S bo P, (to) S bo P"
        },
        "passive": {
          "grammaticalPassiveVoice": false,
          "defaultStrategy": "recast as an active clause",
          "unknownOrIrrelevantAgent": "use an indefinite subject when needed",
          "resultativeIsPassive": false
        }
      },
      "comparison": {
        "adjectiveChangesForDegree": false,
        "comparativeOperator": "mor",
        "superlativeOperator": "mos",
        "standardOperator": "zen",
        "resemblancePattern": "A zen B",
        "comparativePattern": "A mor Q+a zen B",
        "examples": [
          "mor biga",
          "mos biga",
          "ye dom mor biga zen vo dom"
        ]
      },
      "tamAspectModality": {
        "copula": {
          "neutralPresentZeroCopulaAllowed": true,
          "explicitPresentNonpast": "be"
        },
        "temporalFrames": {
          "present": "unmarked",
          "past": "ba",
          "future": "bu",
          "irrealisConditional": "bo",
          "composeWithResultative": true
        },
        "aspect": {
          "neutral": "bare V",
          "currentNow": "ab + V",
          "continuativeStill": "abi + V",
          "completedResultative": "V-an / V-n",
          "inceptive": "start + V-in",
          "cessative": "stop + V-in",
          "repetitiveAgain": "fir + V",
          "habitualGeneral": "bare V with context",
          "always": "sada + V",
          "sometimesEver": "kabi + V",
          "separateInflectionalAspectParadigm": false
        },
        "modality": {
          "volition": "vant + V-in",
          "necessityObligation": "nid + V-in",
          "abilityPermission": "sak + V-in",
          "epistemicPossibility": "šayad + CLAUSE",
          "irrealisWould": "bo + PREDICATE",
          "positiveRecommendation": "guda ki CLAUSE",
          "negativeRecommendation": "bæda ki CLAUSE",
          "command": "IMPERATIVE",
          "prohibition": "no + IMPERATIVE",
          "separateInflectionalModalParadigm": false,
          "examples": [
            "ya vant goyin",
            "ya nid goyin",
            "ya sak goyin",
            "ya ba sak goyin",
            "ya bu sak goyin",
            "ya bo sak goyin",
            "ya sak goyin na",
            "šayad da bu kam",
            "guda ki yu čil",
            "no goy"
          ]
        }
      },
      "numerals": {
        "digits": {
          "zero": 0,
          "ek": 1,
          "dva": 2,
          "tri": 3,
          "čat": 4,
          "panč": 5,
          "siks": 6,
          "sat": 7,
          "eyt": 8,
          "nayn": 9,
          "dos": 10
        },
        "decadesSuffix": "-is",
        "nonRound11to99": "DECADE-UNIT",
        "hundred": "sto",
        "scales": {
          "hazar": 1000,
          "milion": 1000000,
          "bilion": 1000000000,
          "trilion": 1000000000000
        },
        "ordinals": {
          "suffix": "-va",
          "irregularForms": false,
          "compoundRule": "attach -va only to the rightmost non-zero numeral element"
        },
        "fractionRatioPercent": {
          "operator": "per",
          "fractionOrRatioPattern": "A per B",
          "percentPattern": "A per sto"
        }
      },
      "requiredDictionaryEntries": [
        [
          "ki",
          "G"
        ],
        [
          "sam",
          "G"
        ],
        [
          "sang",
          "G"
        ],
        [
          "zen",
          "G"
        ],
        [
          "mor",
          "G"
        ],
        [
          "mos",
          "G"
        ],
        [
          "ab",
          "G"
        ],
        [
          "abi",
          "G"
        ],
        [
          "fir",
          "G"
        ],
        [
          "sada",
          "G"
        ],
        [
          "kabi",
          "G"
        ],
        [
          "šayad",
          "G"
        ],
        [
          "bo",
          "G"
        ],
        [
          "a",
          "G"
        ],
        [
          "no",
          "G"
        ],
        [
          "vant",
          "V"
        ],
        [
          "nid",
          "V"
        ],
        [
          "sak",
          "V"
        ],
        [
          "start",
          "V"
        ],
        [
          "stop",
          "V"
        ],
        [
          "gud",
          "Q"
        ],
        [
          "bæd",
          "Q"
        ],
        [
          "go",
          "V"
        ]
      ]
    },
    "teachingBoundary": "The public Learn course is human-facing and non-exhaustive. It may lag this structured snapshot and does not override accepted Owner Canon."
  },
  "discourse": {
    "source": "ganjaediDiscourseContract",
    "sourceRole": "secondary structured serialization of active Owner Canon response/interjection rules",
    "contract": {
      "contract": "GANJAEDI_DISCOURSE_CONTRACT",
      "version": "1.0.0",
      "authority": "SECONDARY_TYPED_SERIALIZATION_OF_ACTIVE_OWNER_CANON",
      "responseAndInterjection": {
        "rootClass": "G",
        "syntacticStatus": "independent discourse words",
        "morphology": {
          "productiveDerivation": false,
          "tam": false,
          "number": false,
          "agreement": false
        },
        "placement": [
          "standalone",
          "clause-initial",
          "clause-final"
        ],
        "repetition": {
          "allowed": true,
          "ordinarySurface": "repeat as separate tokens, optionally comma-separated",
          "examples": [
            "yo, yo!",
            "ha, ha!"
          ],
          "hyphenRule": "Do not use the morphological hyphen merely to mark repetition."
        },
        "pronunciationNotes": {
          "yo": "/jo/; CYR йо",
          "vau": "/ˈva.u/; the sequence au is not a newly licensed diphthong"
        },
        "forms": [
          {
            "form": "ha",
            "cyrillic": "ха",
            "function": "yes / yeah / brief agreement"
          },
          {
            "form": "aha",
            "cyrillic": "аха",
            "function": "aha / got it / realization"
          },
          {
            "form": "ey",
            "cyrillic": "ей",
            "function": "hey / attention call"
          },
          {
            "form": "yo",
            "cyrillic": "йо",
            "function": "yo / greeting / rap-street call"
          },
          {
            "form": "ay",
            "cyrillic": "ай",
            "function": "ow / ouch / sharp reaction"
          },
          {
            "form": "oy",
            "cyrillic": "ой",
            "function": "oh / oops / startled reaction"
          },
          {
            "form": "ah",
            "cyrillic": "ах",
            "function": "ah / realization / pleasure / admiration"
          },
          {
            "form": "oh",
            "cyrillic": "ох",
            "function": "oh / surprise / regret"
          },
          {
            "form": "uf",
            "cyrillic": "уф",
            "function": "phew / relief / fatigue"
          },
          {
            "form": "em",
            "cyrillic": "ем",
            "function": "um / hesitation"
          },
          {
            "form": "vau",
            "cyrillic": "вау",
            "function": "wow / strong surprise / admiration"
          },
          {
            "form": "opa",
            "cyrillic": "опа",
            "function": "whoa / there we go / sudden playful reaction"
          }
        ]
      }
    }
  },
  "dictionary": {
    "endpoint": "/ai/dictionary.json",
    "source": "dictionaryEntries",
    "sourceRole": "same active dictionary object used by the public dictionary UI",
    "identity": "latin+class",
    "count": 789,
    "classCounts": {
      "N": 492,
      "V": 86,
      "Q": 109,
      "G": 102
    },
    "columns": [
      "latin",
      "class",
      "cyr",
      "en",
      "ru",
      "hi"
    ]
  },
  "evals": {
    "role": "adversarial regression examples for common model failure modes; they serialize active rules and add no independent language authority",
    "cases": [
      {
        "id": "ORTH-ALIAS-01",
        "kind": "orthography",
        "input": "b§d",
        "expected": "bæd",
        "reason": "§ is an input alias only; canonical Latin output uses æ.",
        "sourceLesson": 1
      },
      {
        "id": "ORTH-ASCII-01",
        "kind": "orthography",
        "input": "canonicalize š / ś / č / æ",
        "expected": "preserve š / ś / č / æ",
        "reject": [
          "sh",
          "shch",
          "ch",
          "ae"
        ],
        "reason": "Canonical Latin is not ASCII transliteration.",
        "sourceLesson": 1
      },
      {
        "id": "ORTH-FORBIDDEN-01",
        "kind": "orthography",
        "input": "active Latin alphabet",
        "expected": "no c; no w",
        "reason": "c and w are outside the active alphabet.",
        "sourceLesson": 1
      },
      {
        "id": "ORTH-MIXED-01",
        "kind": "orthography",
        "input": "muzик",
        "expected": "INVALID_MIXED_SCRIPT_TOKEN",
        "reason": "A Ganjaedi token must not mix Latin and Cyrillic code points."
      },
      {
        "id": "TRAN-J-01",
        "kind": "transliteration",
        "input": "LAT j -> CYR",
        "expected": "LOOKUP_REQUIRED",
        "reject": [
          "always ж",
          "always дж"
        ],
        "reason": "Latin j has canonical Cyrillic realizations Ж / ДЖ; generic LAT→CYR must not guess.",
        "sourceLesson": 1
      },
      {
        "id": "TRAN-J-02",
        "kind": "transliteration",
        "input": "CYR ж or дж -> LAT",
        "expected": "j",
        "reason": "The reverse direction is unambiguous.",
        "sourceLesson": 1
      },
      {
        "id": "SYN-SVO-01",
        "kind": "syntax",
        "input": "neutral clause",
        "expected": "subject + predicate + object/complement",
        "reason": "SVO is the neutral order; movement is for focus/rhythm when roles stay clear.",
        "sourceLesson": 3
      },
      {
        "id": "SYN-VALENCY-01",
        "kind": "syntax",
        "input": "I give a book to the friend",
        "expected": "ya giv kitab ra-frend",
        "reject": [
          "two unmarked objects",
          "verb agreement marker"
        ],
        "reason": "Subject and at most one primary object are unmarked; additional nominal participants use relation prefixes.",
        "sourceRule": "syntax.valency"
      },
      {
        "id": "SYN-GOAL-01",
        "kind": "syntax",
        "input": "I go to the house",
        "expected": "ya go ko-dom",
        "reason": "ko- marks goal/destination/endpoint.",
        "sourceRule": "relations.ko"
      },
      {
        "id": "SYN-Q-01",
        "kind": "syntax",
        "input": "yu rab",
        "expected": "yu rab na",
        "reject": [
          "do yu rab",
          "rab yu"
        ],
        "reason": "Questions keep ordinary order and add final na; no inversion or auxiliary do.",
        "sourceLesson": 6
      },
      {
        "id": "SYN-NEG-01",
        "kind": "syntax",
        "input": "I did not work",
        "expected": "ya no ba rab",
        "reason": "no precedes TAM/copula/predicate.",
        "sourceLesson": 6
      },
      {
        "id": "MORPH-PL-01",
        "kind": "morphology",
        "input": "frend + general plural",
        "expected": "frendim",
        "reason": "Consonant-final noun takes -im.",
        "sourceLesson": 7
      },
      {
        "id": "MORPH-PL-02",
        "kind": "morphology",
        "input": "guru + general plural",
        "expected": "gurum",
        "reason": "Vowel-final noun takes -m.",
        "sourceLesson": 7
      },
      {
        "id": "MORPH-NUM-01",
        "kind": "morphology",
        "input": "two friends",
        "expected": "dva frend",
        "reject": [
          "dva frendim"
        ],
        "reason": "Exact cardinal greater than one blocks overt plural.",
        "sourceLesson": 7
      },
      {
        "id": "MORPH-QUANT-01",
        "kind": "morphology",
        "input": "every friend",
        "expected": "har frend",
        "reject": [
          "har frendim"
        ],
        "reason": "har selects singular with a count noun.",
        "sourceLesson": 8
      },
      {
        "id": "MORPH-QUANT-02",
        "kind": "morphology",
        "input": "all friends",
        "expected": "ol frendim",
        "reason": "ol selects plural with a count noun.",
        "sourceLesson": 8
      },
      {
        "id": "MORPH-Q-01",
        "kind": "morphology",
        "input": "Q root big used as ordinary adjective",
        "expected": "biga",
        "reason": "Ordinary adjective from Q is Q+a.",
        "sourceLesson": 11
      },
      {
        "id": "MORPH-Q-02",
        "kind": "morphology",
        "input": "good as adverb",
        "expected": "gudala",
        "reason": "Adjective + la forms the adverb; ...a + la contracts to ...ala.",
        "sourceLesson": 11
      },
      {
        "id": "MORPH-V-01",
        "kind": "morphology",
        "input": "rab agent",
        "expected": "raba",
        "reason": "Consonant-final V uses ROOT+a for agent.",
        "sourceLesson": 12
      },
      {
        "id": "MORPH-V-02",
        "kind": "morphology",
        "input": "si agent",
        "expected": "siya",
        "reason": "Vowel-final V takes y-stem before +a.",
        "sourceLesson": 12
      },
      {
        "id": "MORPH-NONFINITE-01",
        "kind": "morphology",
        "input": "go as nonfinite/event nominal",
        "expected": "goyin",
        "reject": [
          "goin"
        ],
        "reason": "Vowel-final V uses ROOT+y before +in.",
        "sourceRule": "morphology.verbs.nonfinite"
      },
      {
        "id": "MORPH-RESULT-01",
        "kind": "morphology",
        "input": "raban",
        "expected": "completed/result state of working",
        "reject": [
          "simple past",
          "automatic passive"
        ],
        "reason": "-an/-n is resultative/completive, not simple past and not passive by itself.",
        "sourceLesson": 12
      },
      {
        "id": "AUTH-N2V-01",
        "kind": "authority",
        "input": "derive arbitrary verb from noun",
        "expected": "UNDEFINED",
        "reject": [
          "append -on"
        ],
        "reason": "No universal N→V suffix is licensed; -on is not productive.",
        "sourceLesson": 13
      },
      {
        "id": "MORPH-COMP-01",
        "kind": "morphology",
        "input": "rap beat",
        "expected": "rap-bit",
        "reason": "In X-Y compounds, Y is the semantic head.",
        "sourceLesson": 13
      },
      {
        "id": "MORPH-ORD-01",
        "kind": "morphology",
        "input": "second",
        "expected": "dvava",
        "reason": "Ordinals take -va.",
        "sourceLesson": 14
      },
      {
        "id": "SYN-COND-01",
        "kind": "syntax",
        "input": "hypothetical if-clause",
        "expected": "bo in both clauses",
        "reason": "Explicit hypothetical/counterfactual frame uses bo in condition and result.",
        "sourceLesson": 17
      },
      {
        "id": "SYN-KI-REL-01",
        "kind": "syntax",
        "input": "the person to whom I gave a book",
        "expected": "admi ra-ki ya ba giv kitab",
        "reason": "Relative clauses use HEAD + (REL-)ki + CLAUSE and do not repeat the head inside the clause.",
        "sourceRule": "syntax.clauseLinking.relative"
      },
      {
        "id": "SYN-KI-COMP-01",
        "kind": "syntax",
        "input": "I know that he left",
        "expected": "ya nou ki da ba liv",
        "reason": "Finite complement clauses use V + ki + finite clause.",
        "sourceRule": "syntax.clauseLinking.finiteComplement"
      },
      {
        "id": "SYN-KI-ADV-01",
        "kind": "syntax",
        "input": "before he comes",
        "expected": "age-ki da kam",
        "reason": "Relation-marked finite adverbial clauses use REL-ki; age- supplies before.",
        "sourceRule": "syntax.clauseLinking.finiteAdverbial"
      },
      {
        "id": "SYN-CONCESSIVE-01",
        "kind": "syntax",
        "input": "although P, Q",
        "expected": "P, a Q",
        "reason": "Concessive meaning uses ordinary contrast coordination; no dedicated concessive subordinator is required.",
        "sourceRule": "syntax.clauseLinking.concessive"
      },
      {
        "id": "SYN-RECIP-01",
        "kind": "syntax",
        "input": "they see each other",
        "expected": "dam si sang-sam",
        "reject": [
          "dam si sa-sang",
          "dam si sa-sam"
        ],
        "reason": "sang-sam is the invariant reciprocal referent.",
        "sourceRule": "pronouns.reciprocal"
      },
      {
        "id": "SYN-RECIP-REL-01",
        "kind": "syntax",
        "input": "they give a book to each other",
        "expected": "dam giv kitab ra-sang-sam",
        "reason": "Relation prefixes scope outside sang-sam according to the reciprocal participant role.",
        "sourceRule": "pronouns.reciprocal"
      },
      {
        "id": "SYN-COMP-STANDARD-01",
        "kind": "syntax",
        "input": "this house is bigger than that house",
        "expected": "ye dom mor biga zen vo dom",
        "reject": [
          "ot-vo dom as automatic than",
          "invented than particle"
        ],
        "reason": "mor marks comparative degree and zen introduces the comparison standard.",
        "sourceRule": "comparison"
      },
      {
        "id": "MOD-SAK-01",
        "kind": "syntax",
        "input": "I can go",
        "expected": "ya sak goyin",
        "reject": [
          "ya bo go",
          "ya šayad go",
          "ya sak goin"
        ],
        "reason": "sak + V+in expresses ability/permission; vowel-final go uses goyin.",
        "sourceRule": "tamAspectModality.modality.abilityPermission"
      },
      {
        "id": "MOD-SAK-Q-01",
        "kind": "syntax",
        "input": "Can I go?",
        "expected": "ya sak goyin na",
        "reason": "Ability/permission uses sak + V+in and ordinary clause-final na for a question.",
        "sourceRule": "tamAspectModality.modality.abilityPermission"
      },
      {
        "id": "MOD-NEED-01",
        "kind": "syntax",
        "input": "I need to go",
        "expected": "ya nid goyin",
        "reason": "Necessity uses nid + V+in.",
        "sourceRule": "tamAspectModality.modality.necessityObligation"
      },
      {
        "id": "MOD-WANT-01",
        "kind": "syntax",
        "input": "I want to go",
        "expected": "ya vant goyin",
        "reason": "Volition uses vant + V+in.",
        "sourceRule": "tamAspectModality.modality.volition"
      },
      {
        "id": "MOD-RECOMMEND-01",
        "kind": "syntax",
        "input": "you should rest",
        "expected": "guda ki yu čil",
        "reason": "Recommendation is an evaluative ki-clause, not a dedicated should inflection.",
        "sourceRule": "tamAspectModality.modality.positiveRecommendation"
      },
      {
        "id": "ASP-CURRENT-01",
        "kind": "syntax",
        "input": "I am working right now",
        "expected": "ya ab rab",
        "reason": "ab + V supplies explicit current-now meaning without a progressive inflection.",
        "sourceRule": "tamAspectModality.aspect.currentNow"
      },
      {
        "id": "ASP-CONTINUE-01",
        "kind": "syntax",
        "input": "I am still working",
        "expected": "ya abi rab",
        "reason": "abi + V supplies continuative/still meaning.",
        "sourceRule": "tamAspectModality.aspect.continuativeStill"
      },
      {
        "id": "AUTH-PASSIVE-01",
        "kind": "authority",
        "input": "derive a grammatical passive from raban",
        "expected": "UNDEFINED; recast with an active clause",
        "reject": [
          "raban = was worked by default"
        ],
        "reason": "Ganjaedi has no grammatical passive voice and resultative does not imply passive.",
        "sourceRule": "syntax.passive"
      },
      {
        "id": "DISC-YES-01",
        "kind": "syntax",
        "input": "brief affirmative response",
        "expected": "ha",
        "reason": "ha is the canonical short affirmative G response.",
        "sourceLesson": 18,
        "sourceRule": "discourse.responseAndInterjection"
      },
      {
        "id": "DISC-YO-01",
        "kind": "syntax",
        "input": "rap/street greeting or call",
        "expected": "yo",
        "reason": "yo is the canonical rap/street greeting/call G form.",
        "sourceLesson": 18,
        "sourceRule": "discourse.responseAndInterjection"
      },
      {
        "id": "DISC-REPEAT-01",
        "kind": "authority",
        "input": "repeat yo for a hook",
        "expected": "yo, yo!",
        "reject": [
          "yo-yo"
        ],
        "reason": "Interjection repetition keeps separate tokens; the hyphen is a morphological operator, not a repetition mark.",
        "sourceLesson": 18,
        "sourceRule": "discourse.responseAndInterjection.repetition"
      },
      {
        "id": "DISC-VAU-01",
        "kind": "orthography",
        "input": "pronunciation of vau",
        "expected": "/ˈva.u/",
        "reject": [
          "new au diphthong"
        ],
        "reason": "vau keeps separate a + u; the interjection does not license a new au diphthong.",
        "sourceLesson": 18,
        "sourceRule": "discourse.responseAndInterjection.pronunciationNotes"
      }
    ]
  }
}
