{
  "schemaVersion": 1,
  "id": "P41-C05",
  "title": "Исправленное количество: журнал согласованных версий заявки",
  "author": {
    "id": "P41",
    "name": "Светлана Воронцова"
  },
  "specialty": "Документы в проверенные таблицы",
  "projectStatus": "concept",
  "source": {
    "document": "catalogue_60_personas.md",
    "briefId": "P41-C05",
    "title": "Заявки с рукописными пометками",
    "kind": "editorial_concept",
    "data": "synthetic"
  },
  "context": "Печатное количество 20 заменено пометкой 30?, затем подтверждено письмом. Параллельно приходит старая копия заявки и повтор подтверждения. Нужна история, которая не меняет количество по порядку файлов.",
  "decision": "Я связала предложение изменения с номером версии и событием подтверждения. Последняя подтвержденная версия выигрывает у более поздней загрузки старого файла. Неразборчивое число не проходит числовую проверку.",
  "constraint": "Подтверждение вводится явно как событие. Подпись или рукописная пометка не интерпретируются автоматически.",
  "steps": [
    "Связать каждое событие с заявкой и версией изменения.",
    "Применить числовое количество только по допустимому основанию.",
    "Повторить подтверждение, загрузить старую копию и проверить неопределенное число."
  ],
  "inspection": [
    "Подтверждено 30; старая копия 20 не откатывает заявку — проверено.",
    "Правка без основания не заменяет исходное количество — проверено.",
    "Неясное число 30? не проходит даже с основанием — проверено.",
    "Новый исходник v3 не заменяет подтвержденную v2 — проверено.",
    "Два разных подтверждения v2 дают конфликт, не решение порядком строк — проверено."
  ],
  "sample": {
    "headers": [
      "Заявка",
      "Количество",
      "Версия",
      "Основание",
      "Статус",
      "История"
    ],
    "rows": [
      [
        "REQ-20",
        "30",
        "2",
        "письмо-C2",
        "Действующая версия",
        "v1 исходник 20; v2 пометка 30?; v2 подтверждение 30; v1 исходник 20"
      ],
      [
        "REQ-21",
        "8",
        "1",
        "Исходная заявка",
        "Есть несогласованная правка",
        "v1 исходник 8; v2 пометка 10"
      ],
      [
        "REQ-22",
        "12",
        "1",
        "Исходная заявка",
        "Есть несогласованная правка",
        "v1 исходник 12; v2 подтверждение 15"
      ],
      [
        "REQ-23",
        "6",
        "2",
        "письмо-C9",
        "Действующая версия",
        "v1 исходник 4; v2 подтверждение 6"
      ]
    ]
  },
  "sampleNote": "Авторский контрольный набор; не клиентские документы и не результаты внешней модели.",
  "caseStudy": {
    "role": "Аналитик обработки документов",
    "contribution": "Я реализовала журнал версий количества и проверки подтверждения, включая конфликт одинаковых версий.",
    "objective": "Новое количество применяется только после подтверждения той же версии; повтор события и старая копия не откатывают решение.",
    "problem": "Печатное количество 20 заменено пометкой 30?, затем подтверждено письмом. Параллельно приходит старая копия заявки и повтор подтверждения. Нужна история, которая не меняет количество по порядку файлов.",
    "result": "REQ-20 принимает 30 по подтвержденной v2, REQ-23 — 6. REQ-21/22 сохраняют 8 и 12 до согласования. Новый неподтвержденный исходник v3 не обгоняет v2; два разных подтверждения одной версии дают конфликт с возвратом к предыдущему однозначному значению.",
    "deliverables": [
      "index.html",
      "source.json",
      "source.csv",
      "result.json",
      "result.csv",
      "engine.js",
      "checks.json",
      "style.css"
    ],
    "blocks": [
      {
        "type": "text",
        "title": "Свежий источник и подтверждённое количество",
        "text": "После подтверждения версии 2 приходит источник версии 3. Его число видно в истории, но в рабочее значение оно не переносится: для этого требуется отдельное подтверждение. Два разных подтверждения одной версии также образуют конфликт. Так порядок доставки событий не решает за человека, какое количество считать согласованным."
      }
    ]
  },
  "deliverable": {
    "type": "app",
    "entry": "/catalogue/deliverables/p41-c05/index.html",
    "label": "Открыть работающий материал",
    "files": [
      {
        "path": "/catalogue/deliverables/p41-c05/index.html",
        "name": "index.html",
        "mimeType": "text/html"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/source.json",
        "name": "source.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/source.csv",
        "name": "source.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/result.json",
        "name": "result.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/result.csv",
        "name": "result.csv",
        "mimeType": "text/csv"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/engine.js",
        "name": "engine.js",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/verify.cjs",
        "name": "verify.cjs",
        "mimeType": "text/javascript"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/checks.json",
        "name": "checks.json",
        "mimeType": "application/json"
      },
      {
        "path": "/catalogue/deliverables/p41-c05/style.css",
        "name": "style.css",
        "mimeType": "text/css"
      }
    ],
    "summary": "REQ-20 принимает 30 по подтвержденной v2, REQ-23 — 6. REQ-21/22 сохраняют 8 и 12 до согласования. Новый неподтвержденный исходник v3 не обгоняет v2; два разных подтверждения одной версии дают конфликт с возвратом к предыдущему однозначному значению."
  },
  "takeaway": "REQ-20 принимает 30 по подтвержденной v2, REQ-23 — 6. REQ-21/22 сохраняют 8 и 12 до согласования. Новый неподтвержденный исходник v3 не обгоняет v2; два разных подтверждения одной версии дают конфликт с возвратом к предыдущему однозначному значению.",
  "capabilities": [
    "completed_app"
  ],
  "externalConnections": []
}
