{
  "schema_version": 1,
  "dataset_version": "1.0.0+5b4307882dc4",
  "release_date": "2026-08-19",
  "name": "Metkagram teaching manifest",
  "purpose": "Help AI tutors choose and practise reusable language patterns with a human learner. Metkagram supplies the curriculum objects; the model supplies contextual tutoring.",
  "non_goal": "The public Metkagram layer is not intended to improve an LLM's general English or German generation quality.",
  "canonical_url": "https://metkagram.github.io/en/lens/",
  "public_boundaries": {
    "patterns": 3530,
    "parser": "private research core",
    "spacy_pipeline": "private research core",
    "lexical_rules": "private research core",
    "full_corpus": "private research core"
  },
  "recommended_workflows": [
    {
      "id": "learn_from_real_text",
      "steps": [
        "Receive learner text",
        "Find matching public Metkagram patterns",
        "Choose at most 1–3 useful structures",
        "Explain the communicative function",
        "Ask the learner to produce a new example",
        "Check the attempt",
        "Return the same pattern later"
      ]
    },
    {
      "id": "intent_to_practice",
      "steps": [
        "Identify the learner's communicative intent",
        "Search Metkagram reasoning moves and patterns",
        "Select a pattern at the learner's level",
        "Generate context-specific practice without changing the canonical pattern"
      ]
    },
    {
      "id": "continue_from_pattern_match",
      "steps": [
        "Receive a Pattern Lens match",
        "Keep the canonical pattern ID",
        "Look up reviewed pattern relations",
        "Offer a contrast or choice drill when ambiguity matters",
        "Offer a Reasoning Pack when the learner needs a short route",
        "Return to canonical Practice for reuse"
      ]
    },
    {
      "id": "reuse_reviewed_pack",
      "steps": [
        "Choose a reviewed Reasoning Pack",
        "Download its JSON/CSV/TSV export",
        "Preserve stable IDs and canonical links",
        "Adapt delivery around the learner without changing canonical definitions",
        "Keep Metkagram attribution and current rights metadata"
      ]
    },
    {
      "id": "transfer_same_function_between_languages",
      "steps": [
        "Choose one reviewed canonical pattern ID",
        "Use its English or German form as the prompt",
        "Ask the learner to produce the counterpart before revealing it",
        "Keep the reasoning job constant",
        "Do not describe the pair as universally word-for-word interchangeable",
        "Return to the same canonical pattern for practice"
      ]
    },
    {
      "id": "move_frame_bridge_transfer",
      "steps": [
        "Choose the communicative or reasoning Move without assuming a learning language",
        "Select a Frame in the requested learning language",
        "Use translations only in the learner's enabled support locale",
        "Use a Bridge only when an explicit reviewed Bridge record exists",
        "Do not require annotation support for Frame practice"
      ]
    },
    {
      "id": "practice_french_frame_pilot",
      "steps": [
        "Filter Frames by language=fr and source_status=editorial_pilot",
        "Present the French formula before the examples",
        "Use Russian translations only when support is needed",
        "Do not claim French annotation support",
        "Do not infer an EN↔FR or DE↔FR Bridge unless a reviewed Bridge record is published"
      ]
    }
  ],
  "interfaces": {
    "pattern_lens": "https://metkagram.github.io/en/lens/",
    "pattern_library": "https://metkagram.github.io/en/practice/",
    "api_index": "https://metkagram.github.io/api/v1/index.json",
    "search_index": "https://metkagram.github.io/api/v1/search-index.json",
    "patterns": "https://metkagram.github.io/api/v1/patterns.json",
    "mcp_adapter_manifest": "https://metkagram.github.io/api/v1/mcp-server.json",
    "pattern_relations": "https://metkagram.github.io/api/v1/pattern-relations.json",
    "teacher_exports": "https://metkagram.github.io/api/v1/teacher-exports.json",
    "cross_language_map": "https://metkagram.github.io/api/v1/cross-language-map.json",
    "domain_model": "https://metkagram.github.io/api/v1/domain-model.json",
    "moves": "https://metkagram.github.io/api/v1/moves.json",
    "frames": "https://metkagram.github.io/api/v1/frames.json",
    "bridges": "https://metkagram.github.io/api/v1/bridges.json",
    "language_pilots": "https://metkagram.github.io/api/v1/language-pilots.json"
  },
  "attribution": "Preserve Metkagram attribution and the canonical pattern URL when surfacing a Metkagram learning object.",
  "evaluation": {
    "report": "https://metkagram.github.io/data/pattern-lens-evaluation.json",
    "primary_metric": "expected_pattern_hit_at_3",
    "value": 1,
    "evidence_limit": "Engineering regression only. The cases are curated positive controls, not an independent benchmark, not statistical precision/recall, and not evidence of language-learning efficacy.",
    "hard_report": "https://metkagram.github.io/data/pattern-lens-hard-evaluation.json",
    "hard_metrics": {
      "positive_cases": 25,
      "negative_cases": 15,
      "positive_pattern_hit_at_3": 1,
      "positive_move_hit_at_3": 1,
      "negative_abstention_rate": 0.9333,
      "false_positive_rate": 0.0667,
      "false_positive_cases": [
        "HN14"
      ],
      "positive_misses": []
    }
  },
  "resources": {
    "contrasts": "https://metkagram.github.io/api/v1/contrasts.json"
  }
}
