{
  "schemaVersion": 1,
  "kind": "recorded-local-cli-run",
  "rcloneVersion": "rclone v1.76.0",
  "platform": "Windows",
  "architecture": "AMD64",
  "recordedAt": "2026-11-09T18:30:01.386305+00:00",
  "runName": "windows-evidence",
  "cloudAccountsUsed": false,
  "passed": true,
  "scenarioCount": 9,
  "scenarios": [
    {
      "id": "inventory",
      "title": "01 · Инвентаризация",
      "purpose": "Проверяем состав источника до переноса и получаем JSON для отчёта.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [],
      "after": [],
      "commands": [
        {
          "args": [
            "lsjson",
            "$LAB\\inventory\\source",
            "--recursive",
            "--files-only",
            "--hash"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "[\n{\"Path\":\"notes/README.txt\",\"Name\":\"README.txt\",\"Size\":74,\"MimeType\":\"text/plain; charset=utf-8\",\"ModTime\":\"2026-11-09T21:29:40.3887619+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"a1c2f680dc4b524d720502a53387373e6385ebb6d2576c5da66ef39b2afbab17\",\"crc32\":\"fee7439f\",\"crc32c\":\"9c4ef607\",\"dropbox\":\"847f4c3d4b3c43f49e6f0d904b05ea6ee3b33defa1bc6f5d98e7d944000d8504\",\"hidrive\":\"32bc24ee84dfe6330cb371e6e844340c034a75f9\",\"mailru\":\"780df5fac5319e0377b9d047615aeb670200463d\",\"md5\":\"e905b5a6e47da598cbe5ba9274567fbb\",\"quickxor\":\"3ab73816c0ad0361c41c9bfc8a85a98a9a5d7d01\",\"sha1\":\"411ed5bab5e9060353eb96540701cec565060e72\",\"sha256\":\"b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d\",\"sha512\":\"35b1de4d19ab576019acbd29324007089b390151ae14b595a04e560d128630dfa0a4a74e26d6aa4665f8209cbb850d11fce4a8b808322089969d44a89db50f68\",\"whirlpool\":\"2da40790ad05471719513279c6be666e5a55db610d199c451182f1edbf486a89a8ab390ca378ffacdd0312a9fd1a86461fb8158829de50a62695e36ca1b9835a\",\"xxh128\":\"e4b8b5e8aefde23aeb90e71cee877251\",\"xxh3\":\"c1680c3a68cde086\"}},\n{\"Path\":\"docs/brief.txt\",\"Name\":\"brief.txt\",\"Size\":208,\"MimeType\":\"text/plain; charset=utf-8\",\"ModTime\":\"2026-11-09T21:29:40.3857637+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"920c98bebe121805884983ac5cc4fdd56ab8c3aa2c0e0495d95d1f0b244c4768\",\"crc32\":\"2b05e5d2\",\"crc32c\":\"96dd9b81\",\"dropbox\":\"c7d5c8553e93deb80912ab50b3d5641db5e31f41638a6eb173f7614aca40b301\",\"hidrive\":\"e263bf2a628dbdd942ac89b8660b22861508fb0a\",\"mailru\":\"b803e17479367a013ecbdb7cc39beec5cf5d80b3\",\"md5\":\"e28a9fdd976b98f29fc1daa34e4258a3\",\"quickxor\":\"fe546fded1edd4f302a537ade67e582ffeefe14b\",\"sha1\":\"e87c161d1779655c78e3f6e195c576c3b600cef5\",\"sha256\":\"2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48\",\"sha512\":\"6ca962e374e600f7ea1992acfdaed6130a1cb9c0f53e09f16940794d2aae141a53efb234c0dce38d2a679eda76c29ab6b82b43a560bb5fe0ddcbf0597b19bd60\",\"whirlpool\":\"7084355e3163eccd96457089104a07387584d1f275ad951462d90b47b4b2a76ad8024a216a6a7c8a77ebc83cb3646eec79459eabe403fcf13b6488a4fdbb67f8\",\"xxh128\":\"08340ec80f4e2fc349cf3e846fb90ff8\",\"xxh3\":\"4080d16b29cb924b\"}},\n{\"Path\":\"docs/report.csv\",\"Name\":\"report.csv\",\"Size\":27,\"MimeType\":\"text/csv; charset=utf-8\",\"ModTime\":\"2026-11-09T21:29:40.3857637+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"ef8e95e4c98c223a8d721db0b065324529ae6a84ce8dea08ab52e0ca09380d41\",\"crc32\":\"a272ef52\",\"crc32c\":\"7892f666\",\"dropbox\":\"9a9a3b6aca34c9f5b60213e1a9424e7c796d014d5ce7eb8fcd062e726f098561\",\"hidrive\":\"db4a29e48acbab1b48162a0713a5c98423b1a314\",\"mailru\":\"2a4d462ed02afd864084efda89cdc9f1f226342b\",\"md5\":\"a8665a6b0dd2b876685287a21ad1c8aa\",\"quickxor\":\"6d7eb1aba98b6416cbb7c83635b69b6b520605c8\",\"sha1\":\"05500854020ec02b5603f1078b1e71cb3e78aff4\",\"sha256\":\"5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31\",\"sha512\":\"88836f3b02b335cee4c092ff0612a97c9587421cc8cf7ffb517a568251a8b1ac84f89e64e6dc312c8fc62f514f712c1455daa70d631ca510c6cc7a6671e02318\",\"whirlpool\":\"22a0e2b23f0654d109517df0ddd010cfec04d6b23faac48647fb490d150d383b301735c4fe98bd0d38401c0f6f48c7011cdf5d91a84494b8673d2b4f9c01651e\",\"xxh128\":\"b17c6de0386f9606d95824099a650891\",\"xxh3\":\"3a3f44dc0c515b2a\"}},\n{\"Path\":\"cache/preview.tmp\",\"Name\":\"preview.tmp\",\"Size\":36,\"MimeType\":\"application/octet-stream\",\"ModTime\":\"2026-11-09T21:29:40.3877570+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"af633bf32b2b039e5c9027ad2eba6f298d0a0d019c413f76dc757a47d77d2cd2\",\"crc32\":\"0ab48b28\",\"crc32c\":\"bd5d86b8\",\"dropbox\":\"6359759fb2d738641cd10d12ac884d26ec0ecb568fe650acf9c0e96366c1c6c6\",\"hidrive\":\"6d3aeed28474175c57e7099fec5570e955a0eae5\",\"mailru\":\"6fc70d7cc69a60a719c55d6e965eefe0237b5a91\",\"md5\":\"89aa4ba1d399230884be6dafc6b87c41\",\"quickxor\":\"74c1c7b0cbc2c3329279c4cd007540a589e93752\",\"sha1\":\"275fa9a7c81baab7a4f5ff0e6de75a06bb056ee3\",\"sha256\":\"20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71\",\"sha512\":\"a5debbbf610d7392165fb5f938092ad7b1709abeb3862bba2b4eb0ed21ba382861da43bd3e6c76c1bb009367cd3706e4f9cc6e7189217760c43a2072edb3b520\",\"whirlpool\":\"119a0de5b792b5a1c0182363efc5fd4cfe245dbfdf4acd8f017bee4a714e1218bc76b80ce649c23f8d54071c2a066c007f02a66d35c8ccd99276e90df3005d3d\",\"xxh128\":\"178f35ebdace1e4d071844b273349d47\",\"xxh3\":\"8de73f59400af2a9\"}},\n{\"Path\":\"logs/events.txt\",\"Name\":\"events.txt\",\"Size\":60,\"MimeType\":\"text/plain; charset=utf-8\",\"ModTime\":\"2026-11-09T21:29:57.3602169+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"1a939e1cff69fd6fd327e3bba9f77d019964029322bff74359d1668395312d7d\",\"crc32\":\"1fadc902\",\"crc32c\":\"c65d9fce\",\"dropbox\":\"7895019a33f7c8ae5711ed791ff548e0078bfea5a0c6941cd61a8a9b0f5ca58b\",\"hidrive\":\"03e6d4536e830d697260be92e3cfc52bb0fc8209\",\"mailru\":\"830d9282682445f1d80c10416455fad90cb1ce64\",\"md5\":\"7bac09af76a3814c7c25e8b334a414a4\",\"quickxor\":\"755a0d957362bf18699006a84648074df578a6c9\",\"sha1\":\"0f7e7b13b946ba5398478d01feb196bac600ccfd\",\"sha256\":\"60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5\",\"sha512\":\"3d1689b948804533dd28159bf1e048f1130cb0c929cd48e475c91bb16b9a259cf40c7b36fa09b3c3fbc8641450bc75496a7da972d864caecb1a1b72950fc2ad2\",\"whirlpool\":\"175954296a48ca0509c63371b5429dd5909b122c9106070c94b92039c7940660fe9dd57479e23958452b6a54d10ea72138a347f5ab30a915888291257a0f3a3f\",\"xxh128\":\"7c17d348c34939069b1af086a471c6c1\",\"xxh3\":\"c459f6874afd87bc\"}},\n{\"Path\":\"assets/banner.txt\",\"Name\":\"banner.txt\",\"Size\":66,\"MimeType\":\"text/plain; charset=utf-8\",\"ModTime\":\"2026-11-09T21:29:40.3867631+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"3e9c8cb1a2d79fc83f59bf93bf92d69e0909e2db30fcee6b1b114f755d60f431\",\"crc32\":\"4c6ee6ec\",\"crc32c\":\"b280968b\",\"dropbox\":\"a7eda30184fbd4345eae33e5be19ff17ebf5c89a1fec5cb9fd50fdd8368a54d7\",\"hidrive\":\"6274f243b667c7f0f827a0e1d0de84270c4eb433\",\"mailru\":\"2ac21199998d50a52f4463b0dafda1dc57b481f6\",\"md5\":\"933d7bdb549034d6bd6f04547b21f020\",\"quickxor\":\"09383184fa670980931b4bebf1f5f80cf4cdc54f\",\"sha1\":\"f6187a3e87d5582a9cf94cc85e7da09b26702ff1\",\"sha256\":\"c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e\",\"sha512\":\"1794946aa086d7170c3b74384afb2853175784d7ed77cf38e0bfad099c7f0a302bb6a60a6027c9593d8cce68437b8394b4a4600893eabca1eca2ae685c66a7be\",\"whirlpool\":\"74ce5fc6adf8680a584a191868080081fea39153462278aaf9c8718c38c3ebdf68763d2e217922837edeac107e255b0b1789b946499182e839f355d69992b6b5\",\"xxh128\":\"7342495cd0a1a601ddeaac3e00fd5d50\",\"xxh3\":\"3a58cfcff437b886\"}},\n{\"Path\":\"assets/logo.svg\",\"Name\":\"logo.svg\",\"Size\":206,\"MimeType\":\"image/svg+xml\",\"ModTime\":\"2026-11-09T21:29:40.3857637+03:00\",\"IsDir\":false,\"Hashes\":{\"blake3\":\"dbc2a5e3c80bbe8f23c091f003d3bcfdd9731a6c4f2c53ca4d23006ae48ee792\",\"crc32\":\"59b3412b\",\"crc32c\":\"21ff329b\",\"dropbox\":\"11234d99d09c5536e93be0d630e17517bbf17b39ebb960c6672b3dc2598f2fa2\",\"hidrive\":\"63080bad8231c51a31c0db94d4aa5c973e42d5ab\",\"mailru\":\"a1d75714dd91c653b9d0c7b0098793c45df41e78\",\"md5\":\"7b89e14ae56d89f4c6b87fb8488d9ee1\",\"quickxor\":\"09b8a059e53328557e71323336a32afa24bdea54\",\"sha1\":\"30cc27acd34d481fcedea5fc921306f01ed558ff\",\"sha256\":\"12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753\",\"sha512\":\"f2d1d1870a322e538787f5ac4c69f5b69baac8442b17a7834cec07160f96319b636a312eedc32c6bb32d73e15798aa00693046aa597d150655af7869d8a76ff0\",\"whirlpool\":\"7e8da65c19a3189e9a593091020c2fed69e1d33be9fe0f7709d10127bebc84bb1a1027d06679424ecaf0393f191ed1bd0f285f369342c3697913b7436228f5e5\",\"xxh128\":\"d50864acf64a45494b394b214610aad3\",\"xxh3\":\"9471dba57ec74101\"}}\n]\n",
          "stderr": ""
        },
        {
          "args": [
            "size",
            "$LAB\\inventory\\source",
            "--json"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "{\"count\":7,\"bytes\":677,\"sizeless\":0,\"fs\":\"C:\\\\Users\\\\AlexxxNek\\\\Documents\\\\Codex\\\\2026-11-06\\\\new-chat\\\\work\\\\rclone-project\\\\.runtime\\\\windows-evidence\\\\inventory\\\\source\"}\n",
          "stderr": ""
        }
      ],
      "extra": {},
      "passed": true
    },
    {
      "id": "copy",
      "title": "02 · Копирование без уборки",
      "purpose": "Обновляем файлы назначения, сохраняя лишний legacy.txt.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        }
      ],
      "after": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "commands": [
        {
          "args": [
            "copy",
            "$LAB\\copy\\source",
            "$LAB\\copy\\target",
            "--checksum",
            "--log-level",
            "INFO"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:29:58 INFO  : notes/README.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : assets/banner.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : cache/preview.tmp: Copied (new)\n2026/11/09 21:29:58 INFO  : logs/events.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : assets/logo.svg: Copied (new)\n2026/11/09 21:29:58 INFO  : docs/report.csv: Copied (replaced existing)\n2026/11/09 21:29:58 INFO  : docs/brief.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : notes: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : cache: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : assets: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : docs: Set directory modification time (using SetModTime)\n2026/11/09 21:29:58 INFO  : logs: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : \nTransferred:   \t        677 B / 677 B, 100%, 0 B/s, ETA -\nChecks:                 6 / 6, 100%, Listed 15\nUpdated dirs:           5\nTransferred:            7 / 7, 100%\nElapsed time:         0.0s\n\n"
        }
      ],
      "extra": {},
      "passed": true
    },
    {
      "id": "filters",
      "title": "03 · Отбор документов",
      "purpose": "Переносим только docs/**: медиа, журнал и cache остаются за пределами задачи.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [],
      "after": [
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        }
      ],
      "commands": [
        {
          "args": [
            "copy",
            "$LAB\\filters\\source",
            "$LAB\\filters\\target",
            "--filter-from",
            "$LAB\\filters\\documents.filter",
            "--log-level",
            "INFO"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:29:58 INFO  : docs/report.csv: Copied (new)\n2026/11/09 21:29:58 INFO  : docs/brief.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : docs: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : \nTransferred:   \t        235 B / 235 B, 100%, 0 B/s, ETA -\nChecks:                 1 / 1, 100%, Listed 7\nUpdated dirs:           1\nTransferred:            2 / 2, 100%\nElapsed time:         0.0s\n\n"
        }
      ],
      "extra": {},
      "passed": true
    },
    {
      "id": "dryrun",
      "title": "04 · План синхронизации",
      "purpose": "Смотрим план будущих изменений. --dry-run не изменяет целевые файлы.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        }
      ],
      "after": [
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        }
      ],
      "commands": [
        {
          "args": [
            "sync",
            "$LAB\\dryrun\\source",
            "$LAB\\dryrun\\target",
            "--checksum",
            "--dry-run",
            "--log-level",
            "INFO"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:29:58 NOTICE: cache/preview.tmp: Skipped copy as --dry-run is set (size 36)\n2026/11/09 21:29:58 NOTICE: notes/README.txt: Skipped copy as --dry-run is set (size 74)\n2026/11/09 21:29:58 NOTICE: logs/events.txt: Skipped copy as --dry-run is set (size 60)\n2026/11/09 21:29:58 NOTICE: docs/report.csv: Skipped copy as --dry-run is set (size 27)\n2026/11/09 21:29:58 NOTICE: docs/brief.txt: Skipped copy as --dry-run is set (size 208)\n2026/11/09 21:29:58 NOTICE: assets/logo.svg: Skipped copy as --dry-run is set (size 206)\n2026/11/09 21:29:58 NOTICE: assets/banner.txt: Skipped copy as --dry-run is set (size 66)\n2026/11/09 21:29:58 NOTICE: legacy.txt: Skipped delete as --dry-run is set (size 34)\n2026/11/09 21:29:58 NOTICE: notes: Skipped set directory modification time as --dry-run is set\n2026/11/09 21:29:58 NOTICE: cache: Skipped set directory modification time as --dry-run is set\n2026/11/09 21:29:58 NOTICE: logs: Skipped set directory modification time as --dry-run is set\n2026/11/09 21:29:58 NOTICE: docs: Skipped set directory modification time as --dry-run is set (size 0)\n2026/11/09 21:29:58 NOTICE: assets: Skipped set directory modification time as --dry-run is set\n2026/11/09 21:29:58 NOTICE: \nTransferred:   \t        677 B / 677 B, 100%, 0 B/s, ETA -\nChecks:                 7 / 7, 100%, Listed 15\nDeleted:                1 (files), 0 (dirs), 34 B (freed)\nTransferred:            7 / 7, 100%\nElapsed time:         0.0s\n\n"
        }
      ],
      "extra": {},
      "passed": true
    },
    {
      "id": "sync",
      "title": "05 · Зеркало источника",
      "purpose": "На учебной копии удаляем лишнее и получаем точное зеркало источника.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        }
      ],
      "after": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "commands": [
        {
          "args": [
            "sync",
            "$LAB\\sync\\source",
            "$LAB\\sync\\target",
            "--checksum",
            "--log-level",
            "INFO"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:29:58 INFO  : docs/brief.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : notes/README.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : logs/events.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : cache/preview.tmp: Copied (new)\n2026/11/09 21:29:58 INFO  : docs/report.csv: Copied (replaced existing)\n2026/11/09 21:29:58 INFO  : assets/banner.txt: Copied (new)\n2026/11/09 21:29:58 INFO  : assets/logo.svg: Copied (new)\n2026/11/09 21:29:58 INFO  : legacy.txt: Deleted\n2026/11/09 21:29:58 INFO  : cache: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : notes: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : assets: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : docs: Set directory modification time (using SetModTime)\n2026/11/09 21:29:58 INFO  : logs: Set directory modification time (using DirSetModTime)\n2026/11/09 21:29:58 INFO  : \nTransferred:   \t        677 B / 677 B, 100%, 0 B/s, ETA -\nChecks:                 7 / 7, 100%, Listed 15\nDeleted:                1 (files), 0 (dirs), 34 B (freed)\nUpdated dirs:           5\nTransferred:            7 / 7, 100%\nElapsed time:         0.0s\n\n"
        }
      ],
      "extra": {},
      "passed": true
    },
    {
      "id": "check",
      "title": "06 · Поиск повреждения",
      "purpose": "Намеренно меняем один файл, обнаруживаем несовпадение, затем восстанавливаем.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "35cb5bdc1262a1569ee224cf3beb096073ea988f8b270864de2656f16e0e0c2a"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "after": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "commands": [
        {
          "args": [
            "copy",
            "$LAB\\check\\source",
            "$LAB\\check\\target",
            "--checksum"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": ""
        },
        {
          "args": [
            "check",
            "$LAB\\check\\source",
            "$LAB\\check\\target",
            "--combined",
            "$LAB\\check\\comparison.txt"
          ],
          "exitCode": 1,
          "expectedExitCodes": [
            1
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:29:59 ERROR : docs/report.csv: sizes differ\n2026/11/09 21:29:59 NOTICE: Local file system at //?/$LAB/check/target: 1 differences found\n2026/11/09 21:29:59 NOTICE: Local file system at //?/$LAB/check/target: 1 errors while checking\n2026/11/09 21:29:59 NOTICE: Local file system at //?/$LAB/check/target: 6 matching files\n2026/11/09 21:29:59 NOTICE: Failed to check: 1 differences found\n"
        },
        {
          "args": [
            "hashsum",
            "SHA-256",
            "$LAB\\check\\source",
            "--include",
            "docs/report.csv"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31  docs/report.csv\n",
          "stderr": ""
        },
        {
          "args": [
            "copy",
            "$LAB\\check\\source",
            "$LAB\\check\\target",
            "--checksum"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": ""
        },
        {
          "args": [
            "check",
            "$LAB\\check\\source",
            "$LAB\\check\\target"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:29:59 NOTICE: Local file system at //?/$LAB/check/target: 0 differences found\n2026/11/09 21:29:59 NOTICE: Local file system at //?/$LAB/check/target: 7 matching files\n"
        }
      ],
      "extra": {
        "comparison": "= logs/events.txt\n= notes/README.txt\n= docs/brief.txt\n= assets/banner.txt\n= cache/preview.tmp\n= assets/logo.svg\n* docs/report.csv\n"
      },
      "passed": true
    },
    {
      "id": "backup",
      "title": "07 · История и возврат файла",
      "purpose": "Сохраняем заменённые/удалённые файлы в backup-dir и возвращаем старый отчёт отдельно.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        }
      ],
      "after": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "commands": [
        {
          "args": [
            "sync",
            "$LAB\\backup\\source",
            "$LAB\\backup\\target",
            "--checksum",
            "--backup-dir",
            "$LAB\\backup\\archive\\run01",
            "--log-level",
            "INFO"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:30:00 INFO  : docs/report.csv: Moved (server-side)\n2026/11/09 21:30:00 INFO  : notes/README.txt: Copied (new)\n2026/11/09 21:30:00 INFO  : cache/preview.tmp: Copied (new)\n2026/11/09 21:30:00 INFO  : logs/events.txt: Copied (new)\n2026/11/09 21:30:00 INFO  : docs/brief.txt: Copied (new)\n2026/11/09 21:30:00 INFO  : docs/report.csv: Copied (new)\n2026/11/09 21:30:00 INFO  : assets/logo.svg: Copied (new)\n2026/11/09 21:30:00 INFO  : assets/banner.txt: Copied (new)\n2026/11/09 21:30:00 INFO  : legacy.txt: Moved (server-side)\n2026/11/09 21:30:00 INFO  : legacy.txt: Moved into backup dir\n2026/11/09 21:30:00 INFO  : notes: Set directory modification time (using DirSetModTime)\n2026/11/09 21:30:00 INFO  : cache: Set directory modification time (using DirSetModTime)\n2026/11/09 21:30:00 INFO  : logs: Set directory modification time (using DirSetModTime)\n2026/11/09 21:30:00 INFO  : docs: Set directory modification time (using SetModTime)\n2026/11/09 21:30:00 INFO  : assets: Set directory modification time (using DirSetModTime)\n2026/11/09 21:30:00 INFO  : \nTransferred:   \t        677 B / 677 B, 100%, 0 B/s, ETA -\nChecks:                 9 / 9, 100%, Listed 15\nDeleted:                1 (files), 0 (dirs), 34 B (freed)\nUpdated dirs:           5\nRenamed:                2\nTransferred:            7 / 7, 100%\nServer Side Moves:      2 @ 62 B\nElapsed time:         0.0s\n\n"
        },
        {
          "args": [
            "copyto",
            "$LAB\\backup\\archive\\run01\\docs\\report.csv",
            "$LAB\\backup\\recovered\\report-old.csv"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": ""
        }
      ],
      "extra": {
        "archive": [
          {
            "path": "docs/report.csv",
            "bytes": 28,
            "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
          },
          {
            "path": "legacy.txt",
            "bytes": 34,
            "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
          }
        ],
        "recovered": [
          {
            "path": "report-old.csv",
            "bytes": 28,
            "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
          }
        ]
      },
      "passed": true
    },
    {
      "id": "crypt",
      "title": "08 · Зашифрованное хранилище",
      "purpose": "Шифруем локальную папку через crypt и проверяем расшифрованную копию по SHA-256.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [],
      "after": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "commands": [
        {
          "args": [
            "copy",
            "$LAB\\crypt\\source",
            "vault:"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": ""
        },
        {
          "args": [
            "copy",
            "vault:",
            "$LAB\\crypt\\target"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": ""
        },
        {
          "args": [
            "cryptcheck",
            "$LAB\\crypt\\source",
            "vault:"
          ],
          "exitCode": 0,
          "expectedExitCodes": [
            0
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:30:01 NOTICE: Encrypted drive 'vault:': 0 differences found\n2026/11/09 21:30:01 NOTICE: Encrypted drive 'vault:': 7 matching files\n"
        }
      ],
      "extra": {
        "cipher": [
          {
            "path": "i1n29m9j7piv4fvve9riqaat6s/0nckt5me5r10gopdh7h1s2a4ek",
            "bytes": 75,
            "sha256": "d00823ec2a919dc90175b80e3a0234d70ee2e72c9554378f30048ea82cefc1b7"
          },
          {
            "path": "i1n29m9j7piv4fvve9riqaat6s/8upd34id5u7ef1m0n2gh2r3d9c",
            "bytes": 256,
            "sha256": "c0485f0dacdfbd0a516d7ffc38e52d5157644e57d4114339aa7cfc4702e61d1d"
          },
          {
            "path": "i779h466scl5ubr5gsqqj2uoi0/snrsujmhbsrjmsr6dlml1basnc",
            "bytes": 84,
            "sha256": "0d908b4a5e82976fcd179c60bf67efeb5f4ea270e5bf3c4d6fdf80a644308fd6"
          },
          {
            "path": "tvusc93htme2qong61r4l27lqo/6f0oai44lj04tumfccia4kis70",
            "bytes": 114,
            "sha256": "34ce746dbe1c1d7b24083975acab10aa258e2d52f181b1efd6a277173b0d0a35"
          },
          {
            "path": "tvusc93htme2qong61r4l27lqo/hvh1qmnmjh6ljfi1u2lps9uc4o",
            "bytes": 254,
            "sha256": "c9ae82095fedf0557fcf7b0869350c8648c2dc4ca30a5fcfef0d55259420c4b0"
          },
          {
            "path": "uqm3n1v0pk3uvmo0bbq2n3b9jo/3limqn062pfaa6pgl5qerb8mpc",
            "bytes": 122,
            "sha256": "f288e7db727491bbccae28bbce5a28fb9e6feae9b235be2ac16f4057f6ceb4fb"
          },
          {
            "path": "utrl3uvecnsgrj67p03sc2db9o/79tc67rn55lp1r7tvn978tdi18",
            "bytes": 108,
            "sha256": "541c0b5040c96b239cc960f3a37420c5ee794b0774268474dfe720aee3516ea8"
          }
        ],
        "secretNotice": "Случайный учебный пароль и конфигурация остаются только внутри .runtime. В записи их нет."
      },
      "passed": true
    },
    {
      "id": "limit",
      "title": "09 · Лимит удаления",
      "purpose": "Запрещаем удаления через --max-delete 0: лишние файлы дают ненулевой код выхода.",
      "source": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "before": [
        {
          "path": "docs/report.csv",
          "bytes": 28,
          "sha256": "4a84651702c8dfd0aee16766e34a77c98685e9a1880fbb8cc24b21fd92ad82dc"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        }
      ],
      "after": [
        {
          "path": "assets/banner.txt",
          "bytes": 66,
          "sha256": "c7bc42fa1ccc5b02a9728f59a80d0c4a71a31cff6df930236619229c912c7a5e"
        },
        {
          "path": "assets/logo.svg",
          "bytes": 206,
          "sha256": "12bb62155fb5d050d7291ac574007e333d6c26ff64874b13bea148805b1ae753"
        },
        {
          "path": "cache/preview.tmp",
          "bytes": 36,
          "sha256": "20468b25e38ca9fbe23f08edf2423e3fa6033fa642bec44d044c71be6d925b71"
        },
        {
          "path": "docs/brief.txt",
          "bytes": 208,
          "sha256": "2acd157defdc03f9f2f7f4d73ee9663540114dc6af228233819b139cc7058c48"
        },
        {
          "path": "docs/report.csv",
          "bytes": 27,
          "sha256": "5c1f57ec072ed1ed4b73088dbf5bc3a1f5bdb7efd92fe216e61c36bc9d990d31"
        },
        {
          "path": "legacy.txt",
          "bytes": 34,
          "sha256": "d911e25ad79f112887f27f8b32c3b88e197ea43b2c7a8ab15346c7b658fd7e6f"
        },
        {
          "path": "logs/events.txt",
          "bytes": 60,
          "sha256": "60e5718467e606b39c691ee546b0a5953b31b162ad5d4dfc2624ec2a0d0a8bc5"
        },
        {
          "path": "notes/README.txt",
          "bytes": 74,
          "sha256": "b5e344ad1aac251db84710f655086a869efb630f27d0407f23e8c17e210b9f1d"
        }
      ],
      "commands": [
        {
          "args": [
            "sync",
            "$LAB\\limit\\source",
            "$LAB\\limit\\target",
            "--checksum",
            "--max-delete",
            "0",
            "--log-level",
            "INFO"
          ],
          "exitCode": 7,
          "expectedExitCodes": [
            7
          ],
          "stdout": "",
          "stderr": "2026/11/09 21:30:01 INFO  : cache/preview.tmp: Copied (new)\n2026/11/09 21:30:01 INFO  : assets/banner.txt: Copied (new)\n2026/11/09 21:30:01 INFO  : assets/logo.svg: Copied (new)\n2026/11/09 21:30:01 INFO  : notes/README.txt: Copied (new)\n2026/11/09 21:30:01 INFO  : logs/events.txt: Copied (new)\n2026/11/09 21:30:01 INFO  : docs/brief.txt: Copied (new)\n2026/11/09 21:30:01 INFO  : docs/report.csv: Copied (replaced existing)\n2026/11/09 21:30:01 ERROR : legacy.txt: Got fatal error on delete: --max-delete threshold reached\n2026/11/09 21:30:01 ERROR : Cancelling sync due to fatal error: failed to delete 1 files\n2026/11/09 21:30:01 ERROR : Local file system at //?/$LAB/limit/target: not deleting directories as there were IO errors\n2026/11/09 21:30:01 ERROR : Fatal error received - not attempting retries\n2026/11/09 21:30:01 INFO  : \nTransferred:   \t        677 B / 677 B, 100%, 0 B/s, ETA -\nErrors:                 2 (fatal error encountered)\nChecks:                 2 / 2, 100%, Listed 15\nTransferred:            7 / 7, 100%\nElapsed time:         0.0s\n\n2026/11/09 21:30:01 NOTICE: Failed to sync with 2 errors: last error was: failed to delete 1 files\n"
        }
      ],
      "extra": {
        "warning": "Лимит остановил удаление; новые файлы уже могли скопироваться. Это не транзакция и не откат."
      },
      "passed": true
    }
  ]
}
