{
  "id": "EM-RTL-06",
  "name": "Программа лояльности, участник и баллы",
  "domain": "RTL",
  "kind": "subject",
  "wave": "W-IND",
  "industry": "Retail and e-commerce",
  "scope": "Программа лояльности, учётные записи участников, уровни, начисленные и списанные баллы как журнал операций и привилегии участников. Отношения с клиентом и согласия на маркетинг принадлежат соседним контурам.",
  "candidate_types": [
    "LoyaltyProgram",
    "Membership",
    "Tier",
    "PointsLedgerEntry",
    "Redemption",
    "MemberBenefit"
  ],
  "specific_questions": [
    "Баланс баллов хранится как число или выводится из журнала?",
    "Как баллы сторнируются при возврате покупки?",
    "Как изменение правил программы применяется к уже начисленным баллам?"
  ],
  "proposed_invariants": [
    "Баланс баллов равен сумме записей журнала",
    "Возврат покупки сторнирует начисленные за неё баллы",
    "Каждая запись журнала ссылается на операцию или правило, которое её вызвало"
  ],
  "negative_case": "Сотрудник поддержки правит баланс участника напрямую, чтобы урегулировать жалобу, и изменение невозможно объяснить при проверке.",
  "acceptance_scenario": "Для синтетического участника начислить баллы за две покупки, списать часть, оформить возврат одной покупки, перевести на более высокий уровень, сжечь неиспользованные баллы по изменённому правилу и воспроизвести баланс из журнала.",
  "comparison_tracks": [
    "schema.org: MemberProgram и MemberProgramTier",
    "Учёт программ лояльности как отложенной выручки",
    "Правила защиты потребителей для условий программ лояльности"
  ],
  "vercy_candidates": [
    {
      "model_id": "WM-ECO-029",
      "mapping_status": "conceptual-candidate",
      "evidence_depth": "index-and-publication-metadata",
      "note": "Связь требует проверки полного семантического crosswalk; published не означает завершённую независимую экспертизу.",
      "runtime": {
        "id": "vr.wm-eco-029",
        "modelId": "WM-ECO-029",
        "name": "Loyalty / Reward",
        "version": "0.1.0",
        "status": "published",
        "installable": true,
        "pageUrl": "https://ver.cy/models/wm-eco-029-loyalty-reward/",
        "specUrl": "https://ver.cy/models/wm-eco-029-loyalty-reward/spec.yaml",
        "agentsUrl": "https://ver.cy/models/wm-eco-029-loyalty-reward/AGENTS.md",
        "digest": "sha256:1e8dd053e98c3707d09374a0d27106ee9fe83f575a6d1b73ece59c57738a7474",
        "requires": [],
        "unresolvedRequires": []
      }
    },
    {
      "model_id": "WM-ORG-014",
      "mapping_status": "conceptual-candidate",
      "evidence_depth": "index-and-publication-metadata",
      "note": "Связь требует проверки полного семантического crosswalk; published не означает завершённую независимую экспертизу.",
      "runtime": {
        "id": "vr.wm-org-014",
        "modelId": "WM-ORG-014",
        "name": "Customer / Account Relationship",
        "version": "0.3.0-research.1",
        "status": "published",
        "installable": true,
        "pageUrl": "https://ver.cy/models/wm-org-014-customer-account-relationship/",
        "specUrl": "https://ver.cy/models/wm-org-014-customer-account-relationship/spec.yaml",
        "agentsUrl": "https://ver.cy/models/wm-org-014-customer-account-relationship/AGENTS.md",
        "digest": "sha256:d6fd208f8fcc40e18c858eaece97fb471b0b26a52ba61ec4a41e9070a029fd60",
        "requires": [],
        "unresolvedRequires": []
      }
    }
  ],
  "candidate_properties_from_v1": [],
  "suggested_owner": "Руководитель программы лояльности",
  "candidate_master_systems": "платформа лояльности, CRM, POS",
  "related_research_contours": [
    "EM-COM-01",
    "EM-COM-02",
    "EM-RTL-04",
    "EM-RTL-05",
    "EM-LEG-06",
    "EM-FIN-02"
  ],
  "blocking_decisions": [
    "Установить границу и решение reuse/extend/new по действующим спецификациям.",
    "Подтвердить semantic crosswalk, права и source mastership.",
    "Выбрать immutable refs; провести проверки fixtures до заявления о публикационной готовности."
  ],
  "research_progress": {
    "sequence": 132,
    "id": "EM-RTL-06",
    "status": "published-partial",
    "claude_status": "initial-industry-contour-and-card-supplement",
    "grok_status": "not-started",
    "boundary_decision": "Industry contour; reuses the referenced cross-industry contours and world models; no new runtime ID.",
    "publication_urls": [
      "https://ver.cy/enterprise/models/em-rtl-06/",
      "https://ver.cy/models/em-rtl-06/"
    ],
    "remaining_scope": "The independent second-provider study, fixtures and the full research protocol remain open. Runtime promotion is governed by the package allocation holds.",
    "target_model_ids": [],
    "latest_research_checkpoint_at": "2026-10-21",
    "latest_increment_completed_at": "2026-10-21T18:00:00Z"
  },
  "brief_url": "https://ver.cy/enterprise/models/em-rtl-06/"
}
