{
  "id": "incremental-frozen-inductance",
  "lesson_ids": [
    "I04.4",
    "I04.5",
    "II02.2",
    "II02.3"
  ],
  "title": "Насыщение, матрица дифференциальных индуктивностей и предыдущая проницаемость",
  "intro": [
    "Магнитная система с несколькими обмотками описывается не одной величиной L, а отображением вектора токов в вектор потокосцеплений. При насыщении это отображение нелинейно; рабочая точка определяет отклик на малое возмущение.",
    "В первой части разбора используются две обмотки собственного нелинейного магнитопровода. Во второй — отдельный электромагнит с N=200 и двумя воздушными зазорами: на нём действительно выполнены режимы Incremental и Frozen относительно сохранённого базового решения. Эти две геометрии и их численные индуктивности не смешиваются."
  ],
  "theory": [
    {
      "heading": "От энергии к матрице производных",
      "paragraphs": [
        "Для обратимой магнитной системы при фиксированной геометрии дифференциал коэнергии равен сумме Ψk dIk. Следовательно, потокосцепления — первые производные коэнергии, а матрица индуктивностей — её вторые производные. При достаточной гладкости смешанные производные совпадают.",
        "Каждый столбец центральной разности строится изменением только одного тока. Для двух портов нужны четыре возмущённых поля и базовое состояние на один шаг. Половинный шаг — отдельная проверка; симметризация до проверки скрыла бы сеточную или вычислительную ошибку.",
        "Полное отношение Ψ₁/I₁ при ненулевом I₂ содержит взаимное поле. Поэтому его нельзя считать частной производной по I₁. В таблице порядок строк и столбцов закреплён: первичная и вторичная обмотки."
      ],
      "formulas": [
        {
          "latex": "\\mathrm dW^{\\prime}=\\sum_k\\Psi_k\\,\\mathrm dI_k,\\qquad L_{jk}^{\\mathrm{диф}}=\\frac{\\partial\\Psi_j}{\\partial I_k}=\\frac{\\partial^2W^{\\prime}}{\\partial I_j\\partial I_k}",
          "explanation": "Положение ротора или якоря и остальные источники фиксированы."
        },
        {
          "latex": "L_{jk}^{\\mathrm{диф}}\\approx\\frac{\\Psi_j(\\mathbf I+h\\mathbf e_k)-\\Psi_j(\\mathbf I-h\\mathbf e_k)}{2h},\\qquad L_{12}=L_{21}",
          "explanation": "Последнее равенство является физической проверкой обратимой системы, а не предписанным исправлением результатов."
        }
      ]
    },
    {
      "heading": "Что замораживается в Frozen и Incremental",
      "paragraphs": [
        "В скалярной изотропной модели секущая проницаемость определяется отношением B/H, а дифференциальная — наклоном dB/dH. Для малого возмущения около ненулевого поля отклик вдоль поля и поперёк него различен; FEMM строит соответствующую инкрементальную задачу из базового решения.",
        "Команда mi_setprevious(base_ans,1) использует дифференциальный отклик Incremental. Тип 2 фиксирует проницаемость Frozen, полезную для разделения вкладов источников при насыщенном состоянии. Ток 0,01 А здесь есть возмущение, а не новый полный постоянный ток 1,01 А.",
        "Для рассматриваемого электромагнита секущая и дифференциальная величины близки: воздушные зазоры доминируют, а выбранная рабочая точка слабо насыщена. Именно поэтому отдельная двухобмоточная высокотоковая точка нужна для наглядного изучения сильной нелинейности."
      ],
      "formulas": [
        {
          "latex": "\\mu_{\\mathrm{сек}}=\\frac BH,\\qquad \\mu_{\\mathrm{диф}}=\\frac{\\mathrm dB}{\\mathrm dH},\\qquad L_{\\mathrm{диф}}\\approx\\frac{\\Psi(I_0+h)-\\Psi(I_0-h)}{2h}",
          "explanation": "В областях постоянных магнитов и анизотропной стали требуется соответствующий векторный закон материала; скалярная запись — объяснение принципа."
        }
      ]
    }
  ],
  "parameters": [
    {
      "name": "Токи двухобмоточной системы",
      "value": "2;1 и 8;4",
      "unit": "А"
    },
    {
      "name": "Шаги центральной разности",
      "value": "0,1;0,05",
      "unit": "А"
    },
    {
      "name": "Электромагнит: базовый ток",
      "value": 1,
      "unit": "А"
    },
    {
      "name": "Электромагнит: возмущение",
      "value": 0.01,
      "unit": "А"
    },
    {
      "name": "Каждый зазор электромагнита",
      "value": 1,
      "unit": "мм"
    }
  ],
  "steps": [
    "Запустите reproduce.py для свежих контрольных полей обеих геометрий.",
    "В reference/measurements.json сопоставьте четыре исходных возмущения каждого столбца; проверьте, что второй ток не изменялся.",
    "Полные программы, названные далее, запускайте через run-series.py из корня распакованного комплекта: выберите SERIES_NUMBER по списку README.html. Диспетчер сам устанавливает подпапку и контекст исходной программы; прежний рабочий каталог FEMM не важен.",
    "Выполните reference/matrix-full.py и сравните шаги 0,1 и 0,05 А. Сохраните исходную асимметрию L₁₂−L₂₁ до какого-либо усреднения.",
    "В каталоге electromagnet запустите rebuild-complete-series.py: база ANS создаётся до задач типов 1 и 2. Сравните Lинкр с независимыми постоянными токами 0,99/1,01 А.",
    "Объясните, почему близость трёх L электромагнита не означает отсутствия насыщения при других токах и в другой геометрии."
  ],
  "table": {
    "columns": [
      {
        "key": "i1",
        "label": "I₁",
        "unit": "А"
      },
      {
        "key": "i2",
        "label": "I₂",
        "unit": "А"
      },
      {
        "key": "h",
        "label": "Шаг",
        "unit": "А"
      },
      {
        "key": "l11",
        "label": "L₁₁",
        "unit": "Гн"
      },
      {
        "key": "l12",
        "label": "L₁₂",
        "unit": "Гн"
      },
      {
        "key": "l21",
        "label": "L₂₁",
        "unit": "Гн"
      },
      {
        "key": "l22",
        "label": "L₂₂",
        "unit": "Гн"
      },
      {
        "key": "rec",
        "label": "Несимметрия",
        "unit": "Гн"
      }
    ],
    "rows": [
      {
        "i1": 2.0,
        "i2": 1.0,
        "h": 0.1,
        "l11": 0.0022440251904546314,
        "l12": 0.0009913508844490437,
        "l21": 0.0009923730281840952,
        "l22": 0.0005641093794225404,
        "rec": 1.0221437350514673e-06
      },
      {
        "i1": 2.0,
        "i2": 1.0,
        "h": 0.05,
        "l11": 0.0022419780475702727,
        "l12": 0.0009910983241321128,
        "l21": 0.000991351177206043,
        "l22": 0.0005639829821753838,
        "rec": 2.528530739301371e-07
      },
      {
        "i1": 8.0,
        "i2": 4.0,
        "h": 0.1,
        "l11": 0.00042992922052138144,
        "l12": 0.00011242957782438279,
        "l21": 0.00011243426484463387,
        "l22": 0.0001167563748947012,
        "rec": 4.687020251081808e-09
      },
      {
        "i1": 8.0,
        "i2": 4.0,
        "h": 0.05,
        "l11": 0.000429916963231719,
        "l12": 0.00011242783441334225,
        "l21": 0.00011242902265926752,
        "l22": 0.00011675507882936281,
        "rec": 1.188245925265452e-09
      }
    ]
  },
  "series": [
    {
      "title": "L₁₁ при увеличении тока",
      "x_label": "I₁ при I₂=I₁/2, А",
      "y_label": "L₁₁, Гн",
      "points": [
        [
          2.0,
          0.0022419780475702727
        ],
        [
          8.0,
          0.000429916963231719
        ]
      ]
    },
    {
      "title": "Различие способов для электромагнита",
      "x_label": "Способ: 1 — DC, 2 — Incremental, 3 — Frozen, 4 — Ψ/I",
      "y_label": "Индуктивность, Гн",
      "points": [
        [
          1,
          0.012232515833496705
        ],
        [
          2,
          0.012232515904936542
        ],
        [
          3,
          0.012234097783998879
        ],
        [
          4,
          0.01223409778389755
        ]
      ]
    }
  ],
  "scope": [
    "Обратимая однозначная B–H-кривая не описывает гистерезисную память; предыдущая ANS не превращает её в модель произвольного нестационарного процесса.",
    "Положительность собственных значений проверяется для симметричной физической модели, а измеренная исходная асимметрия сохраняется отдельно.",
    "Низкотоковая карта [0;4]×[0;2] А не экстраполируется к точке (8;4) А: она получена отдельными полными решениями."
  ],
  "sources": [
    {
      "title": "Руководство FEMM 5, разделы магнитного поля и встроенного Python",
      "url": "https://www.femm.info/doku/lib/exe/fetch.php?media=femm-qt:docs:manual.pdf"
    }
  ],
  "checks": [
    {
      "name": "Инкрементальная индуктивность против статической производной: относительное различие",
      "value": 5.840159023051683e-09,
      "limit": 1e-06,
      "passed": true
    },
    {
      "name": "Невзаимность при (2;1) А, шаг 0,05 А, Гн",
      "value": 2.528530739301371e-07,
      "limit": "< 3·10⁻⁷",
      "passed": true
    },
    {
      "name": "Невзаимность при (8;4) А, шаг 0,05 А, Гн",
      "value": 1.188245925265452e-09,
      "limit": "< 2·10⁻⁹",
      "passed": true
    },
    {
      "name": "Минимальное собственное значение L при (8;4) А, Гн",
      "value": 8.057258309845093e-05,
      "limit": "> 0",
      "passed": true
    }
  ],
  "downloads": [],
  "python": {
    "path": "downloads/audit-native/incremental-frozen-inductance/reproduce.py",
    "description": "Распакуйте ZIP целиком в новую папку. Выполните reproduce.py встроенным Python FEMM 5: проверяются хеши, заново решаются контрольные поля и пересчитываются численные проверки таблиц. Рабочий каталог определяется по пути сохранённого сценария. Полные программы запускайте через run-series.py; номер SERIES_NUMBER выбирается по списку в README.html."
  },
  "provenance": {
    "origin": "Неизменённые ранее выполненные расчёты FEMM 5 и новый читаемый разбор",
    "runtime": "FEMM 5.0 06Oct2026; встроенный MicroPython; без внешнего Python/COM/TCP",
    "files": [
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/checks.json",
        "path": "reference/checks.json",
        "sha256": "547be69f653b4d8dbbadbb8800fda44bbeeda32ed2b445f953bf6280d68403ba",
        "bytes": 11695
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/complete-plan.json",
        "path": "reference/complete-plan.json",
        "sha256": "491ff46cbd8a9acdede1b7fc2a97a2774d49f2c52115218cd28d8435a1008bf8",
        "bytes": 2248
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/control-0.fem",
        "path": "reference/control-0.fem",
        "sha256": "7bbf3ddfe2e7f97b6cca3e871121d5ec5c9be48b71aa07a93e2c37dfde24dbab",
        "bytes": 4269
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/control-1.fem",
        "path": "reference/control-1.fem",
        "sha256": "569b1c8d738b91408ac9c7c23e0360f4846ce6682434c7dff36718daf399ef47",
        "bytes": 4269
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/control-2.fem",
        "path": "reference/control-2.fem",
        "sha256": "e84f409a4ddd4efafb0d3899e4c6140ff3838cf4fa7cdab500a91f7ec64514bf",
        "bytes": 4272
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/control-3.fem",
        "path": "reference/control-3.fem",
        "sha256": "cc1d1eb37c473359a4b5063e514c47c5a1f7231f415d752cfa4dc797423db305",
        "bytes": 4286
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/control-4.fem",
        "path": "reference/control-4.fem",
        "sha256": "59fee3547251c9ba8936a5f8dc979e52c7b5c48726d7381f177a159413a9739e",
        "bytes": 4287
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/control-5.fem",
        "path": "reference/control-5.fem",
        "sha256": "894e3e1d61abf9ac533040004bf46e1f1991f34c52425cf6f2dc23ce3a8f0f17",
        "bytes": 4272
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/independent-check-table.csv",
        "path": "reference/independent-check-table.csv",
        "sha256": "afcc5a739eee9a2be54f690b8422a29e0ec1932a26d6ef36af313dc4b9bf6eab",
        "bytes": 2385
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/jacobian-step.png",
        "path": "reference/jacobian-step.png",
        "sha256": "30c9ceaf047b238fb056ce4d74d27401fd6a6faa60d1c1627f2a4de7251ad3b9",
        "bytes": 24726
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/key-cases.json",
        "path": "reference/key-cases.json",
        "sha256": "3bc76d7ee5f125f440a977d3789878d7f5e195f9e61d5ac71232f962e005dc3f",
        "bytes": 2351
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/matrix-full.py",
        "path": "reference/matrix-full.py",
        "sha256": "10c2498ccb69bda2c128c6b97250448c959b0d34778df2d86a57db4a547d59b4",
        "bytes": 6581
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/measurements.json",
        "path": "reference/measurements.json",
        "sha256": "3d2198a3f1efc2a1bca9fd6ee7ebb8388bfb103dc9fb265bed68870b7102e3ec",
        "bytes": 33224
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/native-experiments-02.json",
        "path": "reference/native-experiments-02.json",
        "sha256": "1f5c05e285bba7f53c68182ea6a04541979fcbff0163aeb10e5d0bc4ed2064ec",
        "bytes": 54774
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/native-experiments-03.json",
        "path": "reference/native-experiments-03.json",
        "sha256": "8c0c9764edaa46fb2e3bc43d9229f6a78679d2714ffd7b33afcf3a260758dffd",
        "bytes": 634453
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/native-experiments-12.json",
        "path": "reference/native-experiments-12.json",
        "sha256": "5a847d057759d55cc63e16df478d7554b32b1ad124847c715846bed8725a5f8b",
        "bytes": 3103
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/native-experiments-15.json",
        "path": "reference/native-experiments-15.json",
        "sha256": "a1c39fd735eac2f06227ab22bb8b57eb8a92b4f8dfcc05e7d0e70b3e9b8dd0e2",
        "bytes": 56009
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/native-receipt-02.json",
        "path": "reference/native-receipt-02.json",
        "sha256": "072a9fec733402dadbd9eb1dcbc993bbb03954aaa5f153d8f0bb055dcf42d56c",
        "bytes": 7455
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/native-receipt-17.json",
        "path": "reference/native-receipt-17.json",
        "sha256": "978bd2fc45985fe278b6e67aad29d49d3c6a01b960bed687add1f8f418c5d69c",
        "bytes": 9199
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/original-00.py",
        "path": "reference/original-00.py",
        "sha256": "2c5f8bf873177bc2280961205b8dad726e29d4aa98b80fcd361461850b1e9b02",
        "bytes": 888
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/portable-matrix-full.py.receipt.json",
        "path": "reference/portable-matrix-full.py.receipt.json",
        "sha256": "03d0b2cce987bb70162549fff3a3de0015827438302748b023eac827b69dcfa0",
        "bytes": 569
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/portable-native-self-replay-receipt.json",
        "path": "reference/portable-native-self-replay-receipt.json",
        "sha256": "0527bdf6c59244ea9f6c917ee769bd42ea2a0c6e0014b928b6bffc5810c5795f",
        "bytes": 9102
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/portable-postprocess-full.py.receipt.json",
        "path": "reference/portable-postprocess-full.py.receipt.json",
        "sha256": "77722e5072d38368acc456729f076f6f244baf9a5f8f6ad3e513ce8148082243",
        "bytes": 579
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/postprocess-full.py",
        "path": "reference/postprocess-full.py",
        "sha256": "1dd516030e9506d272a190ffdb848442073bcb87c46a58079ce6901a94e69d0d",
        "bytes": 10023
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/practice-ii02-2-source-model.fem",
        "path": "reference/practice-ii02-2-source-model.fem",
        "sha256": "b1636ff4c9ed1eae09c9dba8b4a21e85ddca81b6d8d1456409d1aa43641cdaf0",
        "bytes": 4022
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/REPORT.md",
        "path": "reference/REPORT.md",
        "sha256": "96f7f142e7310de7e53830c00a45a91e8ff42f1d09364c5bb0dcb59ac23584e3",
        "bytes": 20101
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/reproduce.py",
        "path": "reference/reproduce.py",
        "sha256": "4a23cea18fb0e33926c7211f2c7e889e4ead3f10b42455377876b7036a1ad146",
        "bytes": 2987
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/result.json",
        "path": "reference/result.json",
        "sha256": "672260016679898a89a06f8eb81e3c33bdf79f68486890f8db74b19d9337ae04",
        "bytes": 44428
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/results.csv",
        "path": "reference/results.csv",
        "sha256": "78140d30a3b38553b50c9d718969de2c0006e2d3f5e483a5663e323c9e5e114d",
        "bytes": 42502
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/source-manifest.json",
        "path": "reference/source-manifest.json",
        "sha256": "2e50c22708e7eed454fe9de7df90034291a71826769be3b4e87c5e9d62348c97",
        "bytes": 3059
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-2/A/source-task.json",
        "path": "reference/source-task.json",
        "sha256": "9268d4624810e10c9bb6634336558940195e8bff8bcab575a69301f8a7943f01",
        "bytes": 99421
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/checks.json",
        "path": "electromagnet/checks.json",
        "sha256": "7aae755f8521f26fe56682ea8e9b7d95065458133bf25ceb28f9252a8ea76e87",
        "bytes": 16163
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/complete-plan.json",
        "path": "electromagnet/complete-plan.json",
        "sha256": "0fea2216a07da44e47c4dfb7398bc7602678636bf9b95012c87b254700a7fc87",
        "bytes": 11767
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/control-0.fem",
        "path": "electromagnet/control-0.fem",
        "sha256": "721f1c49590d6c5e6d7cc1eb92aafd3f8d1b0aa2b1657f09b24caeb1f08797fc",
        "bytes": 4437
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/control-1.fem",
        "path": "electromagnet/control-1.fem",
        "sha256": "67d8790b344b3dd1ad625cc1adf468c43ecb9779bc1f20a7e5223b934ba93c6a",
        "bytes": 4517
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/control-2.fem",
        "path": "electromagnet/control-2.fem",
        "sha256": "ccf38bdccbb04d2634fd6fc045da6d07f45fc7e3f4f1a87fa203dc18e814a7b3",
        "bytes": 4517
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/control-3.fem",
        "path": "electromagnet/control-3.fem",
        "sha256": "721f1c49590d6c5e6d7cc1eb92aafd3f8d1b0aa2b1657f09b24caeb1f08797fc",
        "bytes": 4437
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/force-methods.csv",
        "path": "electromagnet/force-methods.csv",
        "sha256": "0af5565d2f1f64cf1fa89c9175248134b5ebcba7d074024924997aac89141f79",
        "bytes": 1069
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-1d9f5aa7bfd5.fem",
        "path": "electromagnet/input-1d9f5aa7bfd5.fem",
        "sha256": "1d9f5aa7bfd5dfb3cbb36d49204161f9583a1d9eee0e6cfbdb02d59fb258c7aa",
        "bytes": 4435
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-57e97be340c5.fem",
        "path": "electromagnet/input-57e97be340c5.fem",
        "sha256": "57e97be340c56942cb22f16a9774b5fbd71d5216ad96f66a1fd87101795a732a",
        "bytes": 4448
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-721f1c49590d.fem",
        "path": "electromagnet/input-721f1c49590d.fem",
        "sha256": "721f1c49590d6c5e6d7cc1eb92aafd3f8d1b0aa2b1657f09b24caeb1f08797fc",
        "bytes": 4437
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-79dbf85fe2a4.fem",
        "path": "electromagnet/input-79dbf85fe2a4.fem",
        "sha256": "79dbf85fe2a410c72d1b35bfdc7e0aa91d6b55d693b4fcda74bcc0dc0f8f2921",
        "bytes": 4450
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-8c83518eb3bb.fem",
        "path": "electromagnet/input-8c83518eb3bb.fem",
        "sha256": "8c83518eb3bb26c438dd7657704c43cb6531ba331ed73e9acf74a6a86f5cf87e",
        "bytes": 4448
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-cd8f0ecb45c9.fem",
        "path": "electromagnet/input-cd8f0ecb45c9.fem",
        "sha256": "cd8f0ecb45c91eed47ae2010105add126271391d519537721d01dd8959b1ed99",
        "bytes": 4437
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-dceb85710508.fem",
        "path": "electromagnet/input-dceb85710508.fem",
        "sha256": "dceb857105088ba56086c63091a55c07737ae847b06af8fc79183f1e29eee1e3",
        "bytes": 4439
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/input-f3babfad21ec.fem",
        "path": "electromagnet/input-f3babfad21ec.fem",
        "sha256": "f3babfad21ec27be117d33a37cbde9933f37b12ef8f6ff1b1e6cf3d0a8f9e836",
        "bytes": 4435
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/key-cases.json",
        "path": "electromagnet/key-cases.json",
        "sha256": "2f3ca6661d6d17cf7ded3e0f349f6a6cdf509ded1cef3d663ce06a951378d6e6",
        "bytes": 1035
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/map-quantities.csv",
        "path": "electromagnet/map-quantities.csv",
        "sha256": "3a762d7a94a2feae8c3faf61c8be0406b24550075732b73a1a7da06a950368d7",
        "bytes": 6796
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/measurements.json",
        "path": "electromagnet/measurements.json",
        "sha256": "e54f1697286a946ae72e8d328f228aa9f65b00d7970677c395d2c5c905ec54da",
        "bytes": 69270
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/native-em200-native-01-receipt.json",
        "path": "electromagnet/native-em200-native-01-receipt.json",
        "sha256": "7a4d3496bbd9b9b69a35ee391af5a0576f7c9bb1440c326955cf50d3d82eaf1b",
        "bytes": 22898
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/native-em200-native-02-receipt.json",
        "path": "electromagnet/native-em200-native-02-receipt.json",
        "sha256": "9b88c6ab9381804faab75f075e8deae7f175d4f8499f2a12102c62e4079ffb94",
        "bytes": 1132
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/native-flux-map.png",
        "path": "electromagnet/native-flux-map.png",
        "sha256": "29deac5335ef9c3f9b2b74dc8c73293143e8fcead890b1606d4f322a82c92ee4",
        "bytes": 50260
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/original-00.py",
        "path": "electromagnet/original-00.py",
        "sha256": "06a9a37b42b3e5d1f9195ffeb867860805fb9362c119e69e16badec51be659ec",
        "bytes": 1201
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/portable-native-self-replay-receipt.json",
        "path": "electromagnet/portable-native-self-replay-receipt.json",
        "sha256": "4683018e22e31bc533c23190738375db815b33c6951aeeb4186657ddda80ddb9",
        "bytes": 4437
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/rebuild-complete-series.py",
        "path": "electromagnet/rebuild-complete-series.py",
        "sha256": "eae65d844f6c9da8ce50611d36ca40b2b02cf4fea5cdc573bd3b4ae9c04e84e1",
        "bytes": 7569
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/replay-recipe.json",
        "path": "electromagnet/replay-recipe.json",
        "sha256": "61fcbd57ed9daac815581fd6b5004d0f71e57747e0f0b210383a7328c8693c7c",
        "bytes": 193
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/REPORT.md",
        "path": "electromagnet/REPORT.md",
        "sha256": "336e8b84ba41e00d81a3603e3e193b38b8ec0dcc5830628d14300d9bd4042131",
        "bytes": 19110
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/reproduce.py",
        "path": "electromagnet/reproduce.py",
        "sha256": "7b8a7031942b9bb31329fa5e866ee4923da9115e0237582e068daffc1d5b2334",
        "bytes": 4524
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/result.json",
        "path": "electromagnet/result.json",
        "sha256": "8bc68f197b666398b507e0edf70b114e77ed22ab0b0d087209e4d07af0ae20a3",
        "bytes": 48315
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/results.csv",
        "path": "electromagnet/results.csv",
        "sha256": "de7a6332482265e3f4d3ca18e05dd8dda771aa17cbca0bdea2b46005039ade23",
        "bytes": 94283
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/source-manifest.json",
        "path": "electromagnet/source-manifest.json",
        "sha256": "33e0e8690e9e932d13b1a059a063367fbac992191cedd64df3b9d2d4f6024b29",
        "bytes": 3041
      },
      {
        "origin": "work/assignment-native-280-2026-10-16/python/practice-ii02-3/A/source-task.json",
        "path": "electromagnet/source-task.json",
        "sha256": "1124562a0c5efaa37cd8a43f5202480296b43eec08616405aa4bd1af46fbf252",
        "bytes": 98272
      }
    ],
    "native_key_fields_per_replay": 2,
    "full_series_entrypoints": [
      "reference/matrix-full.py",
      "electromagnet/rebuild-complete-series.py"
    ],
    "source_models_mutated": false,
    "original_check_reports": [
      {
        "path": "reference/checks.json",
        "checks": 47,
        "passed": 47
      },
      {
        "path": "electromagnet/checks.json",
        "checks": 62,
        "passed": 62
      }
    ],
    "native_replay": {
      "passed": true,
      "fresh_fields": 2,
      "checks": 25,
      "runtime_sha256": "6a79ed0e882d054275347a1f267b57d04a31e900beaa7f6a6251487ed2e1df1b",
      "launch_cwd_differs_from_package": true
    }
  }
}