)]}'
{
  "log": [
    {
      "commit": "960a719cd0754ef1f554f76c89c9bfe45876ab1e",
      "tree": "847aa4a301b5d7e5e3a5cc9f135885053119594c",
      "parents": [
        "272cdc814b864f6542c92f21718ecff40d6969b8"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 02 16:19:35 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 13 19:13:56 2026 +0800"
      },
      "message": "device/serial: reopen the port after USB re-enumeration\n\nA board whose console is USB CDC/ACM drops its serial port on every reset\nand re-creates it once it boots again. The serial device kept the stale\nhandle, so every read and write after a reboot failed, and start failed\nwhen the port did not exist yet.\n\nA failed read or write now closes the port and reopens it, and the health\ncheck retries until the port is back. Start no longer requires the port\nto exist; the boot wait reopens it when the device enumerates.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code:claude-opus-5-5\n"
    },
    {
      "commit": "272cdc814b864f6542c92f21718ecff40d6969b8",
      "tree": "aa84267b55793128551b8eb1656448dc5a0e21a0",
      "parents": [
        "9e17dbeacd02c9081dd0512dac5e6a3cf4730167"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Oct 12 16:03:24 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 13 15:48:45 2026 +0800"
      },
      "message": "core: refuse commands longer than the target line buffer\n"
    },
    {
      "commit": "9e17dbeacd02c9081dd0512dac5e6a3cf4730167",
      "tree": "7e0d057a597c0c2ad666dfde3b8643f2179bc904",
      "parents": [
        "02c35df21bf31a66ce9fd55db207c41d44ca7f9e"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 11:51:00 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 19:49:35 2026 +0800"
      },
      "message": "collector: add exclude_test to session.json\n\nLets a board config skip a single test by its pytest item name,\nwithout blacklisting it in the test suite for every board.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "02c35df21bf31a66ce9fd55db207c41d44ca7f9e",
      "tree": "1fcd22ca9268c25d62120dc822aaf70fb9640746",
      "parents": [
        "a46e65f35a6ec6c680aabedb6fe000ce311ea024"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 10:04:22 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 19:49:22 2026 +0800"
      },
      "message": "command_builder: anchor the match_all lookahead pattern\n\nUnanchored (?\u003d.*X) lookaheads are retried at every buffer position\nand each scans to the end, so one search over a 100 KB console dump\ntook seconds and large outputs such as help timed out.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "a46e65f35a6ec6c680aabedb6fe000ce311ea024",
      "tree": "83b35dc82767d2d35824c19679d5d3278f22f377",
      "parents": [
        "b7206c7d2d8bc39cf9b098e29a9f808b77045a71"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 09:22:49 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 19:49:22 2026 +0800"
      },
      "message": "device: report a slow command as TIMEOUT, not flood\n\nOnly mark the device as flooding when its output never stops after\nthe command timeout. Output that still arrives at the timeout but\nthen goes quiet is just a slow command.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "b7206c7d2d8bc39cf9b098e29a9f808b77045a71",
      "tree": "0b3de2e6a99568247204a6f036fedd987845a44d",
      "parents": [
        "dc8488f62de1fc0b96b71ea6d4cc232013d2c672"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Oct 07 21:11:07 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sat Oct 10 16:53:57 2026 +0800"
      },
      "message": "builder.py: check that Kconfig overrides are applied\n\nkconfig-tweak upper-cases symbol names unless --keep-case is given, so\na \u0027kv\u0027 override of a mixed-case symbol (e.g. CONFIG_NET_IPv6) was\nwritten under a wrong name and silently dropped by olddefconfig. The\nsame happened to overrides of unknown symbols, with unmet dependencies\nor with invalid values: the build used a configuration nobody asked\nfor.\n\n* Pass --keep-case to kconfig-tweak.\n* After olddefconfig, compare every override with the final .config\n  and fail the build with the list of overrides that were not applied.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "dc8488f62de1fc0b96b71ea6d4cc232013d2c672",
      "tree": "43c54744a051f5d29c1a253e477635060d621b3e",
      "parents": [
        "69af6fefe3b1a8edb2a4e0ac75b8c5f6f359e711"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Sep 16 20:12:11 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Sep 17 09:49:01 2026 -0300"
      },
      "message": "device: add Renode emulator support\n\nadd Renode emulator support\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "69af6fefe3b1a8edb2a4e0ac75b8c5f6f359e711",
      "tree": "55129ee17d2ffa25b93fb9bbbb18ae5ffe108a70",
      "parents": [
        "60ea802b0f862797810c3bf2b13214015314797f"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu Sep 10 13:21:13 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 10 23:06:57 2026 +0800"
      },
      "message": "release 0.0.3\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "60ea802b0f862797810c3bf2b13214015314797f",
      "tree": "b3d8f404f9185c64f616985988cdb7c5054d0201",
      "parents": [
        "2320ab1e0532bd92c419680d654ac50a17222666"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Sep 02 19:38:59 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 03 03:26:23 2026 +0800"
      },
      "message": "packaging: make LZF coredump support optional\n\nThe lzf package only ships a source distribution and needs Python development\nheaders to build. Normal NuttX CI runs do not use syslog coredumps.\n\nMove lzf to the coredump extra and import the syslog handler only when that\nbackend is enabled.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "2320ab1e0532bd92c419680d654ac50a17222666",
      "tree": "6de1bd32ea092400491f12f1d37079cae6fd7908",
      "parents": [
        "860168994728e66a775bd85a52ef38571f0b316c"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:31:45 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Sep 02 09:33:03 2026 +0800"
      },
      "message": "config: add kernel-mode reference configs\n\nadd kernel-mode reference configs\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "860168994728e66a775bd85a52ef38571f0b316c",
      "tree": "3eaaca6ffcccf1f680cb4e442d2943b92eed02bd",
      "parents": [
        "d26aa7e46637413e77b3e32f28d8820ab5cb88d7"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 18:04:32 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:53:11 2026 +0800"
      },
      "message": "core.py: runtime command discovery fallback via target PATH listing\n\nPrebuilt kernel-mode images have no host application directory, so\ncheck_cmd could not resolve commands. List CONFIG_PATH_INITIAL (default\n/system/bin) once on the running target, cache it, and match cmd_check\npatterns against it with the matcher shared with AppBinDir. A failed\nlisting is not cached and is retried.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "d26aa7e46637413e77b3e32f28d8820ab5cb88d7",
      "tree": "d582b78f15cda97cac3e1fdf956d4a883dadef64",
      "parents": [
        "60fadbc1ad7bfcc5e71274a5637f27fc60a75040"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:50:28 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:53:11 2026 +0800"
      },
      "message": "device: resolve image paths before spawning with a custom exec_cwd\n\nWith exec_cwd set, QEMU resolved a relative \u0027-kernel\u0027 path against the\nspawn directory instead of the NTFC working directory it is expressed\nin, so boot timed out. Absolutize the image path in the qemu and sim\nstart paths when a custom spawn directory is configured.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "60fadbc1ad7bfcc5e71274a5637f27fc60a75040",
      "tree": "aaeb5b5754b9a0e748d8891f4cd49ffd5c645ef7",
      "parents": [
        "8fe88a555979417e2e24621b1e41e6970ca9f018"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:42:22 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:53:11 2026 +0800"
      },
      "message": "core.py: route runtime check_cmd through config on kernel builds\n\nRuntime checks searched the core ELF or the NSH help output, neither of\nwhich lists kernel-mode applications. Route check_cmd through\nCoreConfig.cmd_check when the core is a kernel build with a known\napplication directory, so runtime checks agree with collection-time\nfiltering.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "8fe88a555979417e2e24621b1e41e6970ca9f018",
      "tree": "3f43471f5e4bc1cb1f7ec5bea9db6e1bd97eed99",
      "parents": [
        "8a03a4da7c77d111d892dab3e8033c406c2ea387"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:40:25 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:53:11 2026 +0800"
      },
      "message": "coreconfig.py: dispatch cmd_check to application binaries\n\nWith app_bindir configured, cmd_check resolves commands against the\napplication binary directory first and falls back to symbol lookups\nover bin_debug for names that are not applications (NSH builtins like\ncmd_df, cmocka entries). Flat-mode behavior is unchanged.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "8a03a4da7c77d111d892dab3e8033c406c2ea387",
      "tree": "2a2c0b147812f573d6aba6b8d711aa6c23b35702",
      "parents": [
        "a5f250ebaedde27c289500c61951b53a3eebf037"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Aug 31 21:55:29 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:35:06 2026 +0800"
      },
      "message": "ntfc: drop the sim double-newline workaround\n\nIt papered over a NuttX sim bug: the console read for the wrapped RX\nbuffer segment blocks inside the timer callback when a burst ends\nexactly at the wrap boundary, freezing the simulator. Fixed on the\nNuttX side, so send a single newline like every other host device.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "a5f250ebaedde27c289500c61951b53a3eebf037",
      "tree": "215deb51485f839dba39eb98de3243633c0ccc80",
      "parents": [
        "38c204b1966fdea7f193a3b447f9b54224a344fd"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 20:51:08 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:34:48 2026 +0800"
      },
      "message": "builder.py: reconfigure after applying Kconfig overrides\n\nCMake registers application targets at configure time from .config, but\nkv overrides are applied after configuring, so an override enabling a\nnew application changed .config without ever creating its build target:\ncode-level options took effect through the .config -\u003e config.h rule\nwhile the application never appeared in the image. Overrides can also\nunlock suboptions (e.g. *_PROGNAME) whose missing defaults make cmake\ndrop the application silently. Run olddefconfig and configure again\nafter applying overrides.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "38c204b1966fdea7f193a3b447f9b54224a344fd",
      "tree": "9f7357be85a812a2c78343755fe4dd1a470fae3c",
      "parents": [
        "986238df3b1958a69c772806d39f745c3c656644"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 18:01:45 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:34:48 2026 +0800"
      },
      "message": "builder.py: add application image support for kernel-mode flashing\n\nReal hardware has no hostfs, so kernel-mode applications must be\nshipped as a filesystem image. Add the per-core apps_image option,\nwhich generates a ROMFS image from app_bindir with genromfs after the\nbuild, and the $APPS_BINDIR and $APPS_IMG flash command placeholders.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "986238df3b1958a69c772806d39f745c3c656644",
      "tree": "f6885d1dff9cc3a363de971165812197ad87ba68",
      "parents": [
        "f68efe4e6080c0fa7018664cd284789d3314cf55"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:29:44 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 01 20:34:48 2026 +0800"
      },
      "message": "builder.py: register app_bindir and exec_cwd for kernel-mode builds\n\nKernel-mode CMake builds install applications to \u003cbuild\u003e/bin. On qemu\narm/riscv the target mounts them over a semihosting hostfs relative to\nthe spawned process working directory. When the generated .config\nselects CONFIG_BUILD_KERNEL\u003dy, register app_bindir\u003d\u003cbuild\u003e/bin and\nexec_cwd\u003d\u003cbuild\u003e, keeping values set in YAML.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "f68efe4e6080c0fa7018664cd284789d3314cf55",
      "tree": "0fb62b45026ca247f74f7ab1fd230c4740865090",
      "parents": [
        "54900191b8d61607b7d8b86e96212b9aadcbe222"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Aug 31 18:29:39 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 31 16:57:54 2026 -0300"
      },
      "message": "ntfc: honor line_buffered on QEMU devices\n\nhonor line_buffered on QEMU devices\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "54900191b8d61607b7d8b86e96212b9aadcbe222",
      "tree": "f1414b6fa17b2a81cbbd2f86fd8be907acd65c02",
      "parents": [
        "7076fdd3a3cb887c84cc974c40963974c7323aa4"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Aug 31 10:59:24 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 31 08:31:42 2026 -0300"
      },
      "message": "ntfc: Give the line-buffered sim test an OS to construct with.\n\nDeviceSim goes through get_os(), which refuses a configuration whose os it\ndoes not recognise.  The other sim tests set it on the mock and this one did\nnot, so it raised before reaching what it meant to check.\n\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "7076fdd3a3cb887c84cc974c40963974c7323aa4",
      "tree": "ae9e0c49a53b07112d2cdc41fd74658802d15b3d",
      "parents": [
        "374333029598d56b66fcc91ffc0284f098148a6b"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Aug 31 09:54:12 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 31 08:31:42 2026 -0300"
      },
      "message": "ntfc: Set the line-buffered send delay where a reopen goes through.\n\nThe per-send delay was turned off by DeviceSim._start_impl() after\nhost_open() returned.  A device that crashes comes back through\n_dev_reopen(), which calls host_open() directly and never reaches the\ndevice\u0027s own start, so the setting was lost for the rest of the run.\n\nSetting it in host_open() keeps it across a reopen, and covers QEMU as well\nas the simulator, since both are host-based devices.  It changes nothing for\neither unless line_buffered is set, which is off by default.\n\nThe test moves with the behaviour: it now opens a device, reopens it and\nchecks the delay is still off.\n\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "374333029598d56b66fcc91ffc0284f098148a6b",
      "tree": "8f47ae1a1caa9ed0d0a08f757efabc48ee178594",
      "parents": [
        "3857c882565a5ad8baa73ba4aa132409f003e4e0"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Jul 26 14:55:18 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 31 08:31:42 2026 -0300"
      },
      "message": "ntfc: Add optional line-buffered transport writes.\n\nAdd the line_buffered per-core configuration option, disabled by default, to retain the existing byte-wise transport behavior.\n\nWhen enabled, the simulator and serial transports write a complete command in one operation. Buffered simulator writes also disable pexpect per-send delay. This improves local simulator performance and supports serial transports with reliable flow control.\n\nDocument the option and cover both default and buffered command writes.\n\nAssisted-by: ChatGPT:GPT-5.6-Terra\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "3857c882565a5ad8baa73ba4aa132409f003e4e0",
      "tree": "60fcb4423b500b51af4ee22b4cabc794c90be016",
      "parents": [
        "a0ba968941c666e455c748ad9805fc78ec557100"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:56:40 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Aug 31 15:41:13 2026 +0800"
      },
      "message": "device: add kernel-mode crash signatures for user task faults\n\nIn kernel builds a faulting user task is killed while the kernel keeps\nrunning and the prompt returns, so the console message is the only\ncrash evidence; such faults were reported as command timeouts. Register\nthe fault messages as SEGFAULT signatures:\n\n- \u0027Segmentation fault in\u0027 (risc-v)\n- \u0027PANIC: Unhandled user exception\u0027 (arm64)\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "a0ba968941c666e455c748ad9805fc78ec557100",
      "tree": "7caf9265fc7175a8c562fe79e000cffad0f975b3",
      "parents": [
        "b2ad84e7395e1f14481f62c1c81c91f75f98a3d9"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Aug 22 15:51:58 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Aug 31 15:40:59 2026 +0800"
      },
      "message": "add Linux target support to NTFC\n\nAdd a per-core \"os\" option (default \"nuttx\") that selects the target\nshell abstraction, and implement the Linux shell contract used by\nserial and QEMU devices. Linux images are pre-built, so ELF parsing\nand NuttX core discovery are skipped for them.\n\nThis allows running the same test suites against Linux and NuttX,\nwhich is useful for comparing the two systems (e.g. benchmarks).\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "b2ad84e7395e1f14481f62c1c81c91f75f98a3d9",
      "tree": "2ff803e52a8308a33b806ac3a6be51cc0f82508c",
      "parents": [
        "70cf7e93b88df8a94c7bbe1449820f5b4a93c133"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:34:27 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Aug 31 15:40:32 2026 +0800"
      },
      "message": "mypytest: support alternatives and wildcards in ntfc.yaml requirements\n\nRequirements only supported exact [key, value] matching, which cannot\nexpress init configuration that differs between build modes: flat\nbuilds use CONFIG_INIT_ENTRYPOINT, kernel builds CONFIG_INIT_FILEPATH.\nAdd, backward compatibly:\n\n- [key, \"*\"]: any truthy value satisfies\n- [[key, value], ...]: alternatives, any one satisfies\n\nAlso name the product, core and unmet requirement in the abort message.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "70cf7e93b88df8a94c7bbe1449820f5b4a93c133",
      "tree": "07b6262a1d92114c37cf7c3864d1c7fca1fbb4b9",
      "parents": [
        "2ecb573d19ba3f751e6d4e04e6aad680214b1b2a"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 25 13:41:23 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Aug 31 15:39:54 2026 +0800"
      },
      "message": "tests: fix race in GdbController gcore tests\n\nThe gcore tests wrote the \"Saved corefile\" and GCORE_MARKER reply\nlines into the pipe before calling generate_coredump().  If the\nreader thread consumed those lines before generate_coredump()\nreset _gcore_done and _last_corefile, the reset discarded them and\nthe wait timed out, returning None (seen as a flaky CI failure on\nthe Python 3.14 job).\n\nFeed the reply via a proc.stdin.write side effect triggered by the\nGCORE_MARKER echo command instead, so it arrives only after the\ncontroller has issued the gcore command -- mirroring real gdb and\nmaking the ordering deterministic.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "2ecb573d19ba3f751e6d4e04e6aad680214b1b2a",
      "tree": "2d9215f2a15547ac4579257ed52aca63b2259e27",
      "parents": [
        "121a313d06a24d372ed1119efd28abfa90b16d12"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:12:40 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 25 19:18:59 2026 +0800"
      },
      "message": "coreconfig.py: fix .config parsing of quoted values containing hex\n\nThe hex branch matched any value containing \"0x\" before the quoted\nstring branch ran, so values like CONFIG_BOARD_MEMORY_RANGE\u003d\n\"{0x40000000,...}\" raised ValueError. Parse quoted strings first and\nrequire hex to start with \"0x\", falling back to the raw string.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "121a313d06a24d372ed1119efd28abfa90b16d12",
      "tree": "8f46faca6dabd1fd0711fbb1e47c3669354527c5",
      "parents": [
        "1fe209f7eef583e29412036c1369419c9053866d"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:27:42 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 25 19:18:38 2026 +0800"
      },
      "message": "device: honor per-core exec_cwd and boot_timeout when starting targets\n\nHost devices were spawned with cwd\u003dNone. Targets that mount a\nsemihosting hostfs relative to the process working directory (qemu\narm/riscv) then cannot find their applications, and the boot wait was\nfixed at 5s, too short for a kernel-mode boot. Use CoreConfig.exec_cwd\nfor the spawn and CoreConfig.boot_timeout for the boot wait on the host\nand serial paths.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "1fe209f7eef583e29412036c1369419c9053866d",
      "tree": "ee32e5bd5a5acb9c2bf4bda9efaaef69a47aa922",
      "parents": [
        "1922d76d523af8140559be652f9f6532508b00da"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:22:26 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 25 19:18:38 2026 +0800"
      },
      "message": "coreconfig.py: add per-core kernel-mode options\n\nOptions needed to describe kernel-mode targets, where applications are\nstandalone ELF binaries installed on the target filesystem and resolved\nfrom PATH rather than linked into the kernel image:\n\n- is_kernel_build: core .config selects CONFIG_BUILD_KERNEL\n- exec_cwd: working directory for spawned sim/qemu processes; a\n  semihosting hostfs mount (qemu arm/riscv) resolves relative to it\n- boot_timeout: seconds to wait for the first shell prompt (default 5)\n- app_bindir: application binaries, bin/ next to the ELF unless set\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "1922d76d523af8140559be652f9f6532508b00da",
      "tree": "dbe64f18d93ba386e341a84c6dbf4aacd3235b38",
      "parents": [
        "55b926d7ded9e3765e8dde8a39f247f92e7c53e3"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 17:38:14 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 25 19:18:38 2026 +0800"
      },
      "message": "lib/elf: add AppBinDir for kernel-mode application discovery\n\nKernel builds install every application as a standalone ELF binary, so\nthe command name is the file name; entry points are renamed to main and\nflat-mode symbols like hello_main do not exist. AppBinDir lists the\napplication directory as the command set, supports the cmd_check marker\nsyntax (alternatives, regex, trailing _main), and falls back to symbol\nlookups over the unstripped binaries in bin_debug for names that are\nnot files (NSH builtins, cmocka entries).\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "55b926d7ded9e3765e8dde8a39f247f92e7c53e3",
      "tree": "0ce7ee1de00ee9f68588c36a9fca7ae7b7d78c36",
      "parents": [
        "7344b43edea10448ca2a4d9b6c3e645c2b026724"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Aug 24 09:48:15 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 25 19:18:38 2026 +0800"
      },
      "message": "envconfig: remove unused reboot_timeout recovery option\n\nreboot_timeout was defined in the recovery default config and documented,\nbut never read: _device_reboot() only uses max_retries and base_delay.\nRemove the dead option and its documentation.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "7344b43edea10448ca2a4d9b6c3e645c2b026724",
      "tree": "d5961af938e5ce108530fa6836af60c2bb809db8",
      "parents": [
        "9d7308031d4ae3dc47fef6387f36d47c0f7b9c4e"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Jul 06 19:32:30 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 04 22:34:04 2026 +0800"
      },
      "message": "add advanced debugging tools\n\nAdd advanced debug features: coredump collection and GDB integration.\nCoredump backends: GDB, fastboot, ymodem, local file, syslog. GDB\nsupports target-remote and simulator PID-attach, plus auto-planted\ncrash breakpoints for automatic coredump generation.\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\nCo-authored-by: wangmingrong1 \u003cwangmingrong1@xiaomi.com\u003e\nCo-authored-by: v-zhanhaixiang \u003cv-zhanhaixiang@xiaomi.com\u003e\nCo-authored-by: nijie3 \u003cnijie3@xiaomi.com\u003e\nCo-authored-by: chenjiahua1 \u003cchenjiahua1@xiaomi.com\u003e\nCo-authored-by: yangao1 \u003cyangao1@xiaomi.com\u003e\nCo-authored-by: v-zouweiwei \u003cv-zouweiwei@xiaomi.com\u003e\nCo-authored-by: v-yangjing26 \u003cv-yangjing26@xiaomi.com\u003e\nCo-authored-by: v-wuguohui1 \u003cv-wuguohui1@xiaomi.com\u003e\n"
    },
    {
      "commit": "9d7308031d4ae3dc47fef6387f36d47c0f7b9c4e",
      "tree": "d18c6899f2f2f6ff13fbdd169576bfa810176c11",
      "parents": [
        "0425facf69ef1d15f8724fa5ff41fec69a0001ff"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu May 14 13:54:43 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sat Jul 04 02:07:06 2026 +0800"
      },
      "message": "add flash_only config option for core\n\nadd flash_only config option for core. This allows flash core firmware for\na given code, without running NTFC checks and test cases on it.\n\nThis is usefull for AMP cases where we run tests only on application core,\nbut we have to flash network interface core\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "0425facf69ef1d15f8724fa5ff41fec69a0001ff",
      "tree": "957055b5155234ba62b9fb9fe383ea8d49b94e44",
      "parents": [
        "909820b02f81ffec1f60dc484dc4a417c359cc50"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu May 14 13:53:33 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sat Jul 04 02:07:06 2026 +0800"
      },
      "message": "multi.py: flash cores from manifest\n\ntry to flash cores from manifest file. So far we have only build images which\nmade sense only for host simulations, when we use real HW we have to flash the image\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "909820b02f81ffec1f60dc484dc4a417c359cc50",
      "tree": "badf24b8a602b016fd0855398975b887dadc3415",
      "parents": [
        "9bba168d696bebba908109d000212928b3cf7244"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Fri May 15 17:29:31 2026 -0500"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat May 16 17:16:37 2026 -0300"
      },
      "message": "Set up default protection ruleset for default and release branches"
    },
    {
      "commit": "9bba168d696bebba908109d000212928b3cf7244",
      "tree": "ee083d2eb4d8b6e602829ee74d6e8f748e298955",
      "parents": [
        "09c4d7f38ae78eb3c89314cfeb46f5d177620e62"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Apr 14 20:28:34 2026 +0200"
      },
      "committer": {
        "name": "Lup Yuen Lee",
        "email": "luppy@appkaki.com",
        "time": "Tue Apr 21 06:25:42 2026 +0800"
      },
      "message": "fix multi-session results placed in separate timestamp directories\n\nAll sessions from a manifest run now share a single timestamped result\ndirectory instead of each session creating its own\n\nThe final directory layout looks like this:\n  result/\u003ctimestamp\u003e/\n      report.xml\n      report/\n          result_summary.txt\n          result_summary.html\n      session-a/\n          report.xml\n          report.html\n          session.config.txt\n          ...\n      session-b/\n          report.xml\n          report.html\n          session.config.txt\n"
    },
    {
      "commit": "09c4d7f38ae78eb3c89314cfeb46f5d177620e62",
      "tree": "08c8d0948610e7ea5c6780ad0b306362b4c354bc",
      "parents": [
        "70ca2368eb92de63e11ae350fcc455c5baa288af",
        "3e00ab151ef9d7e557cd6323a9afeca2afd51b57"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Mar 31 13:05:23 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 31 13:05:23 2026 -0400"
      },
      "message": "Merge pull request #1 from szafonimateusz-mi/main\n\nbring in NTFC code"
    },
    {
      "commit": "3e00ab151ef9d7e557cd6323a9afeca2afd51b57",
      "tree": "08c8d0948610e7ea5c6780ad0b306362b4c354bc",
      "parents": [
        "d0111f0829c6b5abb0fe1503bcdd26e4642f9e8a"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 19:06:07 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 19:06:07 2026 +0200"
      },
      "message": "update link to NTFC default test cases\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "d0111f0829c6b5abb0fe1503bcdd26e4642f9e8a",
      "tree": "ccef3c278edc1af02edd4ab757fbb22700489f31",
      "parents": [
        "f78731fdc81b5b4909ff8fbf42ffff3cadb1458a"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 19:01:48 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 19:01:48 2026 +0200"
      },
      "message": "initial asf configuration\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "f78731fdc81b5b4909ff8fbf42ffff3cadb1458a",
      "tree": "d8d7445f740c852c82b7187dc2c9898658074aee",
      "parents": [
        "c4b3c811e237472fb5becec9445273e6a8ddd5a7"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 18:59:00 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 18:59:03 2026 +0200"
      },
      "message": "update github actions\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "c4b3c811e237472fb5becec9445273e6a8ddd5a7",
      "tree": "789a1032ce51fc04aa78aa52fed9069c3e3c908a",
      "parents": [
        "95e2167f52bc180c607684e8e5c3a1b42f006926"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:50:24 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:50:24 2026 +0200"
      },
      "message": "release 0.0.2\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "95e2167f52bc180c607684e8e5c3a1b42f006926",
      "tree": "5f5db742eaa811aa6d77d702a163bf11753b73f7",
      "parents": [
        "c6a7d25758a28b03c42935404531dbe8a9d06d1f"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 14:36:53 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "fix documentation build\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "c6a7d25758a28b03c42935404531dbe8a9d06d1f",
      "tree": "beee8c79ad23c213bce88ccd81b1c282571474f8",
      "parents": [
        "4c4d50d2f37a2e9852ea4ed6178c9c03f0c9fe51"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 14:19:57 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "refactor load_config_files()\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "4c4d50d2f37a2e9852ea4ed6178c9c03f0c9fe51",
      "tree": "19d61e87865995ef56bd3f66f85727b1bd7aa3d4",
      "parents": [
        "19c7cac3298a2da45d652e9ef0f9f7ea78db2424"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 14:11:16 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "refactor pytest_runtest_makereport()\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "19c7cac3298a2da45d652e9ef0f9f7ea78db2424",
      "tree": "c378a57b66762649b20cb80935bf5b987e0ce81e",
      "parents": [
        "ed037d969280f58261d21f4ac78f742ee8478c9e"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 13:52:13 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "simplify getdev.py\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "ed037d969280f58261d21f4ac78f742ee8478c9e",
      "tree": "6ad73056022d009e6cca0f7648d96d4428050b2f",
      "parents": [
        "334cf521bd18f82a5d604e7e43655cd7eb762d0f"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 13:27:18 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "handle non-UTF8 device output with safe decoding\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "334cf521bd18f82a5d604e7e43655cd7eb762d0f",
      "tree": "880bd2b821a6435dceba0fc1c255aa74c1a64def",
      "parents": [
        "fc8524f059f9953a7da25cc5ece65079db9b1039"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 13:22:06 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "return builder failure as exception\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "fc8524f059f9953a7da25cc5ece65079db9b1039",
      "tree": "df064a041b13d93e564a5844fff7e34c0820b298",
      "parents": [
        "a14a8d9c7e3b89f16a61d2337212c83a8de23c42"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 13:15:51 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "improve kconfig parser\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "a14a8d9c7e3b89f16a61d2337212c83a8de23c42",
      "tree": "a59fcd51329a09293af4158a65a689ee278ebefc",
      "parents": [
        "fa11c7162cc2781ed2cc4733cc2ce8d28e9cdbd0"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 13:04:49 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "make run_parallel handle empty input and propagate worker errors\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "fa11c7162cc2781ed2cc4733cc2ce8d28e9cdbd0",
      "tree": "3a802e49097107cebbb76fee2e2b02ad2f8a25a7",
      "parents": [
        "d9e82f18b7cd567649c2c054e1de7dcb9fb576d1"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 12:43:53 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "ensure collect always stops devices on failure\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "d9e82f18b7cd567649c2c054e1de7dcb9fb576d1",
      "tree": "639d5404041cd3e07e092ece8ddf930007200b92",
      "parents": [
        "04ce38db130ecb1dc1490840be57ac41064cd1fd"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 12:34:04 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "respect the product argument in cmd_check()\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "04ce38db130ecb1dc1490840be57ac41064cd1fd",
      "tree": "52ad903745a26a2dd348d212ef1c8a0218603f57",
      "parents": [
        "0b472099d1b2e5776a0b2474077de3e8ef68d32c"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 31 12:23:46 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "remove roadmap.rst\n\nremove roadmap.rst, it will be moved to github issues\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "0b472099d1b2e5776a0b2474077de3e8ef68d32c",
      "tree": "b0ba14eed2bdfab91db699b2a35bf1aa972494bd",
      "parents": [
        "95a9bc85611b446e51a38de7ebfc404e26b43c22"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 30 16:45:59 2026 +0200"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "add support for multi-session execution\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "95a9bc85611b446e51a38de7ebfc404e26b43c22",
      "tree": "11d7e1684b99bf56ff5b1f6615f63e5198430070",
      "parents": [
        "50633b9ef492a7e092d014e86651779208d781a8"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Mar 19 19:03:17 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "fix double DUT boot issue\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "50633b9ef492a7e092d014e86651779208d781a8",
      "tree": "94c6b28fa13b5ddf1d18aab14f323bc4cbab0dca",
      "parents": [
        "ae9a9e11c4bf7e75f4c22b28c749ad9404548ec6"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Mar 11 12:51:25 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "support for gtest suite\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\nCo-authored-by: chenjiahua1 \u003cchenjiahua1@xiaomi.com\u003e\n"
    },
    {
      "commit": "ae9a9e11c4bf7e75f4c22b28c749ad9404548ec6",
      "tree": "19f1a635b6e35b0469cc8c45062901c529e33619",
      "parents": [
        "91a4c918db294ff63e09e6ef76f1932fcf070e6f"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 13:56:10 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "update contribuitng.md\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "91a4c918db294ff63e09e6ef76f1932fcf070e6f",
      "tree": "b5a2a70815962564aa6d0e7f0b2853dd15733853",
      "parents": [
        "0383c888c6c80ea65faf744cdde34ecbb09ba0c5"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 13:37:53 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "support for custom test parsers\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "0383c888c6c80ea65faf744cdde34ecbb09ba0c5",
      "tree": "5793ef5c160aa0bf59b4255fcb68dfae4d5f016a",
      "parents": [
        "7f9104c96fc47653cdd499aab61cd1beac8ce577"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 10:38:44 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "move ignored cores to YAML config\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "7f9104c96fc47653cdd499aab61cd1beac8ce577",
      "tree": "3794c973f4c6ad924fd827e1f1dff8a185c272dc",
      "parents": [
        "ed8645d695e8a285aff686ac22dc54f96cf973b5"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 10:12:01 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "introduce CoreStatus enum replacing magic strings\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "ed8645d695e8a285aff686ac22dc54f96cf973b5",
      "tree": "10f8585b036f6401840f936f750b46a111099ed6",
      "parents": [
        "80c4aea4cb7e0a84fed0188d70e592901b74b50e"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:58:07 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "cores.py: simplify start_log_collect\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "80c4aea4cb7e0a84fed0188d70e592901b74b50e",
      "tree": "6ed2076532529a58c2cdf6cf8e4c0dc587294575",
      "parents": [
        "8c4584aa82757b40e9f77756fb3dbf62a86cd008"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:42:45 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "core.py: remove dead code\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "8c4584aa82757b40e9f77756fb3dbf62a86cd008",
      "tree": "5702e7d3fc2463d5113695691486fc17c09b4750",
      "parents": [
        "532cef775ab214851a8f3b506404165178b02f2d"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:41:33 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "state.py: always use thread-safe get_current_state()\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "532cef775ab214851a8f3b506404165178b02f2d",
      "tree": "fae027f0d15bd665ceea0d3ef0b37b188258defe",
      "parents": [
        "ab4a2f4e7ba33da3e033760007dc511457be4a0a"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:29:12 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "use logger module, not loggin\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "ab4a2f4e7ba33da3e033760007dc511457be4a0a",
      "tree": "d4c41016570be29b2c6a9d3ac58092dd1cc7a125",
      "parents": [
        "5a5c390c31cb22f4b69cd45cdd71dc99cf7ca76c"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:26:42 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "remove duplicated import\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "5a5c390c31cb22f4b69cd45cdd71dc99cf7ca76c",
      "tree": "c9bb3d7005740d19e63227dbfcf57fd2a3fd6f7b",
      "parents": [
        "b1a0d02657544f116c212c60cdda42e509c3a5d9"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:26:06 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "use shlex for _system_cmd\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "b1a0d02657544f116c212c60cdda42e509c3a5d9",
      "tree": "b521c1e308bc237397d754050dca8680792c8b1c",
      "parents": [
        "3979bbeae8929051f2c555a8a0c767f6fa388e1c"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:22:20 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "fix typos\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "3979bbeae8929051f2c555a8a0c767f6fa388e1c",
      "tree": "cee29c48e8397febd3fbe015628595944551ba77",
      "parents": [
        "640565c42925d278a153eb249634d99efc2b62a8"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:19:33 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "fix blank/malformed lines handle in _load_core_config\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "640565c42925d278a153eb249634d99efc2b62a8",
      "tree": "bd8cc0ae6001d5cedf0ee375c55dd38961c55173",
      "parents": [
        "5ce8909169eb8b3b7f22d363e036970d96a8da7e"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Mar 10 09:00:03 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "core.py: move command builder to a separate class\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "5ce8909169eb8b3b7f22d363e036970d96a8da7e",
      "tree": "a431f329877d8601b871e8734ea1beb0ccc18220",
      "parents": [
        "61603e25adb3e62dac92129254e975fbb5317aea"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 09 17:40:52 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "heartbeat.py: remove dependency on device/common.py and refactor\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "61603e25adb3e62dac92129254e975fbb5317aea",
      "tree": "1b6a71ea68fccd464ff90c3908a5b660d2e78908",
      "parents": [
        "10e5cdf348bcc256226f6d018d4cfab6c25720fb"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 09 17:16:52 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:15 2026 +0200"
      },
      "message": "remove duplicate core_index_to_name\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "10e5cdf348bcc256226f6d018d4cfab6c25720fb",
      "tree": "e8fc786f306194e0ce4fda255303cbd6c783b23c",
      "parents": [
        "008dc15ef5795b0c9351685b7a97a8ccba926508"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 09 17:12:28 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "_ANSI_ESCAPE_RE as module constant\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "008dc15ef5795b0c9351685b7a97a8ccba926508",
      "tree": "c4cda1ac00c4ec7c800b3dcb2f467d0adcec3feb",
      "parents": [
        "5eaa7c069568ae970fa8338509631609e97862f0"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 09 17:08:33 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "simplify types\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "5eaa7c069568ae970fa8338509631609e97862f0",
      "tree": "4574f444611482a271478b7740f78cdfaf26e724",
      "parents": [
        "e45fdcb9d58f09bedb9f3864251cca3c6828c381"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 09 15:16:41 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "simplify run_parallel calls\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "e45fdcb9d58f09bedb9f3864251cca3c6828c381",
      "tree": "585219e181aa3c4a3ab22599eba7b1391102cc2f",
      "parents": [
        "5c54e0ea6d68844716a2d2f5161bb1bf67564b5f"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Fri Mar 06 12:54:58 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "support for reading output without sending command\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "5c54e0ea6d68844716a2d2f5161bb1bf67564b5f",
      "tree": "c2febf7bab4c84a7da853cb054c4b8121d4aaad2",
      "parents": [
        "9005440a149e74d2b1ce519b0700588625acf787"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Fri Mar 06 12:17:59 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add fail pattern detection for commands\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "9005440a149e74d2b1ce519b0700588625acf787",
      "tree": "83130b6a84d756c1a1a2d88d65e37b04e20a5d91",
      "parents": [
        "030478da2d621340383672347cd966921c6f03f5"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 09 12:32:55 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add test framework parsers fixtures\n\nfor now only cmocka is supported\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "030478da2d621340383672347cd966921c6f03f5",
      "tree": "5e750fb2c1335a6633d78e27b416015197c4180c",
      "parents": [
        "2389a30828a4813407d2f77557ad337db0bc1036"
      ],
      "author": {
        "name": "chenjiahua1",
        "email": "chenjiahua1@xiaomi.com",
        "time": "Mon Mar 09 12:57:26 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "Support Device Recovery configurtion\n"
    },
    {
      "commit": "2389a30828a4813407d2f77557ad337db0bc1036",
      "tree": "ad235b63953e8631606c827651ea7ee37695d448",
      "parents": [
        "e78ce89a72801b94cc7833b9f4dd5fd09e27b159"
      ],
      "author": {
        "name": "chenjiahua1",
        "email": "chenjiahua1@xiaomi.com",
        "time": "Thu Mar 05 19:47:40 2026 +0800"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "Support Heartbeat plugin\n"
    },
    {
      "commit": "e78ce89a72801b94cc7833b9f4dd5fd09e27b159",
      "tree": "c5fd17bcd554c522368272aa22ab35630b81606b",
      "parents": [
        "4aa48728cb19f2c44d9629f5ac0870744c690e9c"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Mar 04 12:42:00 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "soft and hard reboot/poweroff\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "4aa48728cb19f2c44d9629f5ac0870744c690e9c",
      "tree": "148551fa2533eda5c35081a989ebb56ecb7c1d9d",
      "parents": [
        "5cb86a2da7a2130ce78962d47f64e1af5abe4da4"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 02 18:35:10 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "export log/templates in python package\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "5cb86a2da7a2130ce78962d47f64e1af5abe4da4",
      "tree": "ac1ad641808aeb2fa31dc86d288d838a1198f426",
      "parents": [
        "f31b119b610bc3087259a1bbd83570371f2e2623"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Mon Mar 02 15:20:10 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "fix for tests in external dir\n\nuse absolute path when selecting test cases, otherwise path to test cases can\nbe invalid\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "f31b119b610bc3087259a1bbd83570371f2e2623",
      "tree": "2dfb1210b089b57798d485a9e4264aa13a5cb711",
      "parents": [
        "123bb87e01b85a611d113e26ccbcb2f1f78f152e"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Fri Feb 27 12:50:34 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "store test session configuration in results\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "123bb87e01b85a611d113e26ccbcb2f1f78f152e",
      "tree": "9549f95465ce9717c5a67c062dab1caa45bad1ee",
      "parents": [
        "7ae90734e8237fee9798be8c11a5df6f73492103"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Fri Feb 27 12:49:43 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "always print config files at start\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "7ae90734e8237fee9798be8c11a5df6f73492103",
      "tree": "2f375ad94069642c96f96da4259c3d85e5c24a18",
      "parents": [
        "568b05c02d413db3ec2382c7f70c4b3c6460f2fb"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Fri Feb 27 12:37:35 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add timestamp to pytest.debug.log\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "568b05c02d413db3ec2382c7f70c4b3c6460f2fb",
      "tree": "69855b7f605eefcd19c2b6dbf354bf486ea3ddf3",
      "parents": [
        "7d597ecb4f928d95fdb94742284683a57f182d7d"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Fri Feb 27 12:20:41 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "change pytest log file to append mode\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "7d597ecb4f928d95fdb94742284683a57f182d7d",
      "tree": "12452ba299b104742cadf3f367a3a3d832441954",
      "parents": [
        "ebeff3503d0bb9570a13c10e7491c03fe8279063"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 15:37:50 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "implement device state manager\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "ebeff3503d0bb9570a13c10e7491c03fe8279063",
      "tree": "113cd316baf1800937191f186e58eabd05749fef",
      "parents": [
        "a2a6a862386394a0ec8080d3df6c083931652237"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 14:22:31 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "fix --rebuild flag, it should be enabled at default\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "a2a6a862386394a0ec8080d3df6c083931652237",
      "tree": "7c078cc7116fa780d850c420ff9d674e987ff792",
      "parents": [
        "bd02dd805646854d3bb1ab8150ad13c9933a3165"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 14:13:25 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add config option to overwrite Kconfig parameters for build\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "bd02dd805646854d3bb1ab8150ad13c9933a3165",
      "tree": "d3099d494983a5de86f71f130a5885511e5c5496",
      "parents": [
        "87e8c7796cc55a1de5c2e25f8577e1f9b2c6adcf"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 13:43:34 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add support for args in session JSON\n\nargs can be used to override options from YAML configuration\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "87e8c7796cc55a1de5c2e25f8577e1f9b2c6adcf",
      "tree": "fe5955fb6e676a4723d4da2109baa547d3bfe4b7",
      "parents": [
        "8a5f5bd06becf918d79eaf9305652547d7b415a7"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 13:32:14 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "unify dcmake format with build_env format\n\nnew format:\n\n  dcmake:\n    DEFINE1: \"VALUE1\"\n    DEFINE2: \"VALUE2\"\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "8a5f5bd06becf918d79eaf9305652547d7b415a7",
      "tree": "0ce9415b222cef828cae7221f7607d14640c6cc5",
      "parents": [
        "1cc44a3714ab994c7c4db5135d5b0bf99302c8ee"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 13:25:21 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "support for env variables for auto-build\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "1cc44a3714ab994c7c4db5135d5b0bf99302c8ee",
      "tree": "837c9716325f98cefc47c9755ae7713b13f15a0a",
      "parents": [
        "14cb73f93ce705ae763194a5618dfbbd4b9c5ec3"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Thu Feb 26 13:49:00 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "fix doc build\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "14cb73f93ce705ae763194a5618dfbbd4b9c5ec3",
      "tree": "10f5311597f1689db19c54a997ce3cf761baf17a",
      "parents": [
        "84d51615ff77e51312ec1a2d4f40be53818ba8aa"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Feb 25 14:09:26 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add instruction how to build doc to readme\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "84d51615ff77e51312ec1a2d4f40be53818ba8aa",
      "tree": "7abcfafe16596815a1757ad3eb819701c0ff1c8a",
      "parents": [
        "1f04e00196e0796ef358d750ab1ea046b34e8889"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Feb 25 14:09:45 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "use API refs in doc\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "1f04e00196e0796ef358d750ab1ea046b34e8889",
      "tree": "7604d101a360aa40eb2e0f6d33abc3ab2b7d86c2",
      "parents": [
        "8f47bf1876f6b908812b583718d4fc846d126a88"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Feb 25 13:52:50 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "generate API page from sources\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "8f47bf1876f6b908812b583718d4fc846d126a88",
      "tree": "9bad21ac92abfb7c03ac8badb617121ae7cc88d3",
      "parents": [
        "0cea98f141662fbe4dd57f6461524d5a8d469830"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Feb 25 13:44:04 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "move docs to Documentation and allow for sphinx build\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "0cea98f141662fbe4dd57f6461524d5a8d469830",
      "tree": "a8778083ecf10de826ee1d0f9e84e34bc8a738ee",
      "parents": [
        "908c75b822025e14c9979bc355d8d45ac527089f"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Feb 25 13:24:34 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "improve docs/writing-test-cases.rst\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "908c75b822025e14c9979bc355d8d45ac527089f",
      "tree": "f70709dad08f97d6f8ec88ea8579ff235cf7449e",
      "parents": [
        "f82e96896b954f2db3167ec8fff5c5ce244eceee"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Wed Feb 25 13:11:02 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "add support for tests execution order\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "f82e96896b954f2db3167ec8fff5c5ce244eceee",
      "tree": "a02a21cd6c2ff4e0006cd785c09e6ff708f0a0fe",
      "parents": [
        "3be2752c7967e09fb7c59d23d2e0bfa72924a84d"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Feb 24 15:08:41 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "move pytest.debug.log to result dir\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    },
    {
      "commit": "3be2752c7967e09fb7c59d23d2e0bfa72924a84d",
      "tree": "313bb44a00ff7c5ac3afaf7f18b2f40d88bc7a79",
      "parents": [
        "e9218aa8f8d70871c09f9cd536ddd66981368a57"
      ],
      "author": {
        "name": "p-szafonimateusz",
        "email": "p-szafonimateusz@xiaomi.com",
        "time": "Tue Feb 24 14:32:32 2026 +0100"
      },
      "committer": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Mar 31 14:44:14 2026 +0200"
      },
      "message": "move report module output to a dedicated directory\n\nSigned-off-by: p-szafonimateusz \u003cp-szafonimateusz@xiaomi.com\u003e\n"
    }
  ],
  "next": "e9218aa8f8d70871c09f9cd536ddd66981368a57"
}
