)]}'
{
  "log": [
    {
      "commit": "eb086d38d49fca54f52dc52b991eeb0af96081bd",
      "tree": "952a70ef1ab72e031bf0c5521b4d10b40847d222",
      "parents": [
        "f0f8abda93ea316888702e48b1e4c3816785659c"
      ],
      "author": {
        "name": "Junior Martinez",
        "email": "67972863+jmartinez-silabs@users.noreply.github.com",
        "time": "Wed Oct 21 15:57:55 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 19:57:55 2026 +0000"
      },
      "message": "Add a new pic for some steps of TC_SC_5_3 that require groupcast client support (#74836)\n\n* Add a new pic for some steps of TC_SC_5_3 that require groupcast client support\n\n* Update descriptions and pic to also include End device that are Groupcast senders\n\n* Revert the pic on step 3. It allign with spec and step description and setup takes care of the rest."
    },
    {
      "commit": "f0f8abda93ea316888702e48b1e4c3816785659c",
      "tree": "8d8aade6b4d04fa9997f44d0fbd2300224abef85",
      "parents": [
        "df7aec278db866bca8d3df2d3af49e49bf9c388e"
      ],
      "author": {
        "name": "Moises Terrones",
        "email": "moises.tersal@gmail.com",
        "time": "Wed Oct 21 18:48:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 18:48:11 2026 +0000"
      },
      "message": "Add WaterHeater device type to all-devices app (#74319)\n\n* add basic device implementation\n\n* Add WaterHeaterManagement cluster\n\n* Add Thermostat cluster\n\n* Add thermostat and Mode clusters\n\n* Add logging to simulated device\n\n* Fix compilation issues\n\n* Add fix for Boost duration\n\n* Replace delegate calls with direct clusters\n\n* Minor fixes\n\n* Remove heap allocation for Thermostat delegates\n\n* Remove unused WaterHeater file\n\n* Inject FabricTable into delegate\n\n* Try to improve namespace handling\n\n* Change error handling for timers\n\n* Header cleanup\n\n* minor cleanup\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Restyled by gn\n\n* Try to solve compilation issues\n\n* move delegates and add them to build\n\n* Add thermostat delegates to the Simulated class\n\n* PR fixes\n\n* Address more PR comments\n\n* Add changes for PR\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add boundaries check for temperature\n\n* Refactor heating logic\n\n* Add LogError handling\n\n* Remove KVS overwrite from Register\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* add abs min and max setpoint limits for Thermostat cluster\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add PR changes\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add sync for SystemMode and WaterHeaterMode states\n\n* Add minor PR changes\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* remove templates from base class\n\n* Separate WaterhHeater files after template removal\n\n* Fix registration error and add feature and opt attributes config\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add shutdown implementation to reset attribute storage and Cancel timer\n\n* Address additional PR comments\n\n* Restyled by gn\n\n* Add 0 time timer for cluster initialization\n\n* Add WaterHeater to enabled devices list\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Change permissions on Simulated class\n\n* Remove duplicated elements\n\n* Review improvements\n\n* Remove repeated const methods\n\n* Add unit tests and PR comments\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Restyled by gn\n\n* Add initial value for test delegate\n\n* Fix compilation error\n\n* change water heater to heat-only feature\n\n* Fix unit tests\n\n* Address PR comments\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\nCo-authored-by: Andrei Litvin \u003candy314@gmail.com\u003e"
    },
    {
      "commit": "df7aec278db866bca8d3df2d3af49e49bf9c388e",
      "tree": "9ee6b04c3d2c08bae652b53f8c85e704922f71df",
      "parents": [
        "dc6ff1598895d6f840293119e96b8fab3f5ad9d6"
      ],
      "author": {
        "name": "arielsz71",
        "email": "asztejnberg@griddynamics.com",
        "time": "Wed Oct 21 13:17:26 2026 -0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 16:17:26 2026 +0000"
      },
      "message": "Refactor ElectricalProtectionAlarm to use common AlarmBaseCluster (#74864)\n\n* Refactor to use common AlarmBaseCluster as base\n\n* Address review comments\n\n* Address review comments"
    },
    {
      "commit": "dc6ff1598895d6f840293119e96b8fab3f5ad9d6",
      "tree": "1a9c2af069183d49e8edf417cb6af55fda339536",
      "parents": [
        "fb7879020fbcb55adadbc412fe2476781dfe826c"
      ],
      "author": {
        "name": "René Josefsen",
        "email": "69624991+ReneJosefsen@users.noreply.github.com",
        "time": "Wed Oct 21 17:56:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 15:56:05 2026 +0000"
      },
      "message": "[TSTAT] Align TSTAT-2.2 with test plan (Step 13 - 18) (#74482)\n\n* Align TSTAT-2.2 with test plan (Step 13 - 18)\n\n* Addressed review feedback\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Adding PICS guards to steps being covered by previous steps to they get properly skipped of not required by PICS\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fb7879020fbcb55adadbc412fe2476781dfe826c",
      "tree": "1ab2a8225505d2622cbab8831208f6d6ac7cd932",
      "parents": [
        "e80fb80c1ff9c8e0d08a955327f7159b6550acf1"
      ],
      "author": {
        "name": "simonhmorris1",
        "email": "112178216+simonhmorris1@users.noreply.github.com",
        "time": "Wed Oct 21 16:41:43 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 15:41:43 2026 +0000"
      },
      "message": "[CP] Use NTL as the unsupported transport in COMPRO negative steps (#74856)\n\nOn a proxy supporting both BLE and Wi-Fi PAF, TC_COMPRO_2_2 step 9,\n2_3 step 19 and 2_4 step 11 had no bit to send and were skipped."
    },
    {
      "commit": "e80fb80c1ff9c8e0d08a955327f7159b6550acf1",
      "tree": "2d22285d7000e6ed9128eb4a57ba8bc25806b58d",
      "parents": [
        "38a2d18e660fad2406e882818a709e0fcca9dd10"
      ],
      "author": {
        "name": "SAYON DEEP",
        "email": "sayondeep0710@rediffmail.com",
        "time": "Wed Oct 21 20:58:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 11:28:02 2026 -0400"
      },
      "message": "[AVAnalysis] Serve ClusterRevision from AvAnalysisCluster::ReadAttribute (#74872)"
    },
    {
      "commit": "38a2d18e660fad2406e882818a709e0fcca9dd10",
      "tree": "c558102b31a7717cece2ab36f118386db2c54547",
      "parents": [
        "3368e1bbca2939b72384d577da29799631d773b6"
      ],
      "author": {
        "name": "Amine Alami",
        "email": "43780877+Alami-Amine@users.noreply.github.com",
        "time": "Wed Oct 21 16:56:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 14:56:18 2026 +0000"
      },
      "message": "[transport] Fix TCP messages exceeding the peer\u0027s advertised MaxTCPPayloadSize (#74828)\n\n* [transport] Derive the TCP application payload budget from the peer\u0027s advertised message size\n\nMaxTCPPayloadSize, as advertised in the session parameters and enforced by\nthe TCP transport on receive, is the size of the whole Matter message\n(packet header, payload header, application payload and MIC), excluding\nonly the framing length prefix. Session::GetMaxAppMessageLen() compared\nit directly against kMaxLargeAppMessageLen, which is an application\npayload size, so a peer that advertises a smaller value than our own\nbuffer size (for example an ESP32 built with the TCP transport, whose\nMAX_LARGE_BUFFER_SIZE_BYTES defaults to 1530) received messages up to\nheader + MIC bytes larger than its limit and closed the connection.\n\nSubtract the message overhead from the advertised value before clamping.\nThe overhead is derived from the largest headers the encoder can produce\n(kMaxEncodedPacketHeaderSizeBytes, kMaxEncodedPayloadHeaderSizeBytes) plus\nthe MIC, not from the platform-overridable header reserve, so every build\ncomputes the same budget for the same advertised size; static_asserts tie\nthe new constants to the encoder\u0027s field sizes and to the header reserve.\nPrepareMessage additionally checks the encoded message against the\nadvertised size, which also covers a peer whose limit is below the\noverhead itself.\n\nNodes with the default 64004-byte large buffer on both sides are\nunaffected: the local limit was already the smaller term.\n\nTests: a message of exactly the returned budget for a peer advertising\n1200 bytes must fit once encrypted (1200 keeps the test within the\nsingle-part AEAD and single-buffer limits of every test configuration);\nboundary values overhead-1, overhead, overhead+1 and UINT32_MAX; an empty\nmessage to a peer advertising 1 byte is rejected. The two existing\nexpectations that assumed the advertised value was a payload size are\nupdated.\n\n* [transport] Document and test the message header size bounds\n\nSpell out which spec 11.4 fields make up kMaxEncodedPacketHeaderSizeBytes\nand kMaxEncodedPayloadHeaderSizeBytes, define kMaxTagLen as the AEAD MIC\nlength it stands for, and add a test that encodes both headers with every\noptional field present and checks the encoded length against the bounds,\nso an encoder that starts emitting a new field cannot silently shrink the\nTCP payload budget\u0027s margin.\n\n* [transport] Check the encoded TCP message size before consuming a message counter\n\nThe whole-message size check against the peer\u0027s advertised MaxTCPPayloadSize\nran after the message counter had been advanced and after the message had\nbeen traced and logged as sent, so a rejected message consumed a counter\nvalue and showed up in logs as transmitted. The encoded size is known\nbefore encryption (the header fields set afterwards do not change it), so\ncheck it at the top of the secure-session branch instead.\n\n* [transport] Initialize encodeLen in the header size test and reword the legacy margin comment\n\nThe legacy 256-byte margin comment described it as covering network and\ntransport headers, which the kLargeMessageOverheadBytes comment above\nsays are not part of the advertised budget. Describe it as a historical\nmargin kept for compatibility, bounded by the static_assert.\n\n* [transport] Address review comments on the header size bounds\n\n- Write the header field widths inline in the two bound constants and\n  list the extensions that are decoded but never encoded.\n- Document that GetMaxAppMessageLen() returns 0 when the peer\u0027s limit\n  cannot hold the headers and MIC, and state why PrepareMessage checks\n  the full encoded size.\n- Replace a hand-computed size in a TestReportingEngine comment with\n  static_asserts, and reword the related test and assert messages.\n\n* [transport] Use early returns in Session::GetMaxAppMessageLen\n\nReturn each case directly and name the advertised value\npeerMaxMessageSize, matching SessionManager::PrepareMessage. No change\nin the returned values.\n\n* [transport] Reword the legacy margin and report chunking comments\n\n* [transport] Document kMaxLargeAppMessageLen\n\n* [transport] Clarify GetMaxAppMessageLen comments\n\n* [transport] Rename kLargeMessageOverheadBytes to kMaxMessageOverheadBytes"
    },
    {
      "commit": "3368e1bbca2939b72384d577da29799631d773b6",
      "tree": "ee2ba42a930c5edbb1ee2cb02985f7de2a512c8e",
      "parents": [
        "d3f0c189a1d205992aa039a7f79aae1588e29f73"
      ],
      "author": {
        "name": "ajkontra",
        "email": "58835944+ajkontra@users.noreply.github.com",
        "time": "Wed Oct 21 15:50:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 13:50:58 2026 +0000"
      },
      "message": "Removing Media Devices tests from the CI Exclusion list (#74868)\n\n* Removing TC-AUDIOCONTROL 2.8 from the exclusion list\n\n* Adding stdin for tv-app test cases to avoid early exits, matching existing tests against tv-app\n\n* Adding back all remaining \u0027Pending tv-app in CI\u0027 tests"
    },
    {
      "commit": "d3f0c189a1d205992aa039a7f79aae1588e29f73",
      "tree": "3d86901317efb53f322bc0728e3f96af8247f505",
      "parents": [
        "e6665e1d4a809f4cab098db04663488131e36337"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Wed Oct 21 06:47:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 13:47:20 2026 +0000"
      },
      "message": "TC-DGWIFI-2.2 - Add python automation (#73941)\n\n* add automation script\n\n* Address TC-DGWIFI-2.2 review comments"
    },
    {
      "commit": "e6665e1d4a809f4cab098db04663488131e36337",
      "tree": "2901299d8a4cc731beb8004b72cba8cc76932b28",
      "parents": [
        "c020be76689eca1840f94e0b910bbc50bded2bde"
      ],
      "author": {
        "name": "Jean-Francois Penven",
        "email": "67962328+jepenven-silabs@users.noreply.github.com",
        "time": "Wed Oct 21 09:09:48 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 13:09:48 2026 +0000"
      },
      "message": "[Silabs] Add MG26 target to python builder (#74859)\n\n* Add MG26 target to python builder\n\n* fix ci"
    },
    {
      "commit": "c020be76689eca1840f94e0b910bbc50bded2bde",
      "tree": "69d01c7d0d03b2606b773581172fd123028e9a79",
      "parents": [
        "657d0185404e50b84382baf005b19b236a184e47"
      ],
      "author": {
        "name": "René Josefsen",
        "email": "69624991+ReneJosefsen@users.noreply.github.com",
        "time": "Wed Oct 21 14:30:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 12:30:14 2026 +0000"
      },
      "message": "[Thermostat Mode] Update XML based on changes to spec (#74803)\n\n* Update XML based on changes to spec\n\n* zap regen all\n\n* Set the right domain"
    },
    {
      "commit": "657d0185404e50b84382baf005b19b236a184e47",
      "tree": "b0c120039bd88c980f86629a1875a4a8a57fc9f1",
      "parents": [
        "d4c7f9dd07d5aef26386bc8e986899227cfd1c9a"
      ],
      "author": {
        "name": "Dejin",
        "email": "45139296+DejinChen@users.noreply.github.com",
        "time": "Wed Oct 21 20:21:09 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 08:21:09 2026 -0400"
      },
      "message": "esp32: deinit openthread after mainloop returns (Auto-merged by platform-bot) (#74393)"
    },
    {
      "commit": "d4c7f9dd07d5aef26386bc8e986899227cfd1c9a",
      "tree": "cbe680471977939a0a33a8e9f0e0c33f73d71bab",
      "parents": [
        "5c64013ee21a46d5a0111a6d01df51ec2687857d"
      ],
      "author": {
        "name": "ElthamLiu",
        "email": "145949908+dengpan-liu@users.noreply.github.com",
        "time": "Wed Oct 21 16:31:29 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 08:31:29 2026 +0000"
      },
      "message": "[TC-DD-3.23] Update test script to verify commissioning window (#72758)\n\n* update test script to verify commissioning window\n\n* update TestSteps\n\n* add user input for step#3 and step#5, update commission_devices to commission_ntl_devices\n\n* update commission_ntl_device to ignore the expected traceback\n\n* use find_or_establish_pase_session_over_ntl to determine whether the device\u0027s commissioning window is currently open"
    },
    {
      "commit": "5c64013ee21a46d5a0111a6d01df51ec2687857d",
      "tree": "133afeaffbdf2866fdf55ea1fcff83e74bb71bdc",
      "parents": [
        "869cc2999fd67b3449e5a77dd3e8ef1e7e51f830"
      ],
      "author": {
        "name": "chrisdecenzo",
        "email": "61757564+chrisdecenzo@users.noreply.github.com",
        "time": "Tue Oct 20 23:39:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 06:39:27 2026 +0000"
      },
      "message": "[ContentLauncher] Pass the ContentQueueing LaunchURL fields to the delegate (#74867)\n\n* [ContentLauncher] Pass the ContentQueueing LaunchURL fields to the delegate\n\nThe cluster server decoded LaunchURL\u0027s PlaybackPreferences, ContentType,\nContentHeaders, OffsetMillisecs, QueueType and NextURL fields and then\ndropped them: HandleLaunchUrl only takes ContentURL, DisplayString and\nBrandingInformation. No delegate could act on ContentQueueing, so\nTC-CONTENTLAUNCHER-10.9 could not pass.\n\nAdd Delegate::HandleLaunchUrlRequest, which receives the whole decoded\ncommand, and call it from the server. It has a separate name so existing\nHandleLaunchUrl overrides do not trigger -Woverloaded-virtual. Its\ndefault forwards to the existing three-field HandleLaunchUrl, so\ndelegates outside the tree (and the Android and Chef delegates) keep\ntheir behavior and keep compiling.\n\nThe Linux tv-app overrides it to reject a ContentType that is not in\nAcceptHeader with URLNotAvailable (10.9 step 7) and to log the queueing\nfields, so testers can confirm steps 1-6 from the DUT log.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix spelling check for the Content Launcher README section\n\nAdd the ContentQueueing feature name to the wordlist, reword the\nsection heading, and mark the AcceptHeader attribute name as code.\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "869cc2999fd67b3449e5a77dd3e8ef1e7e51f830",
      "tree": "be78e75fc140d348d85b0db6b822663537a33061",
      "parents": [
        "45c0d7355c950c65451d6b4c651247eb54520db3"
      ],
      "author": {
        "name": "Junior Martinez",
        "email": "67972863+jmartinez-silabs@users.noreply.github.com",
        "time": "Tue Oct 20 16:20:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 20:20:33 2026 +0000"
      },
      "message": "Address post merge comments from #74807 (#74865)"
    },
    {
      "commit": "45c0d7355c950c65451d6b4c651247eb54520db3",
      "tree": "69bccb1c6bbdcbddbdd10dc00ad7e42f5af1acfb",
      "parents": [
        "5da665eb50616c5f72bb7619d664964f410e5834"
      ],
      "author": {
        "name": "Arya Hassanli",
        "email": "31996976+AryaHassanli@users.noreply.github.com",
        "time": "Tue Oct 20 16:02:13 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 20:02:13 2026 +0000"
      },
      "message": "Fix device type revision parse (#74810)\n\n* Fix device type revision parse\n\n* Address review comments on device type revision parsing\n\n* Refactor conformance parsing context to enum and enforce strict device type revision checks\n\n- Replace boolean is_device_type with ConformanceParseContext enum (CLUSTER, DEVICE_TYPE) in ConformanceParseParameters, parse_basic_callable_from_xml, and callers.\n- Add comprehensive docstrings for ConformanceParseParameters attributes and mapping types.\n- Enforce strict device type revision evaluation in device_type_revision.get_value(), raising ConformanceException when device_type_revision is None.\n- Default EmptyClusterGlobalAttributes to device_type_revision\u003duint(1) for safe fallback in general conformance checks.\n- Pass EmptyClusterGlobalAttributes(device_type_revision\u003duint(d.revision)) in generate_spec_xml.py.\n- Update TestConformanceSupport unit tests for ConformanceParseContext and exception handling."
    },
    {
      "commit": "5da665eb50616c5f72bb7619d664964f410e5834",
      "tree": "0edb0bb292655f55a0026a05eecd2da2006f645f",
      "parents": [
        "5c1d45e2a65fad55e42187c8300994dd595bce0f"
      ],
      "author": {
        "name": "ForemanZack-CableLabs",
        "email": "z.foreman@cablelabs.com",
        "time": "Tue Oct 20 11:31:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 14:31:41 2026 -0400"
      },
      "message": "Autogenerated updates for operationalcredentials::certificatechainreq… (#74861)\n\n* Autogenerated updates for operationalcredentials::certificatechainrequest\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5c1d45e2a65fad55e42187c8300994dd595bce0f",
      "tree": "d30445895529425fb0242b7a0db7c6732651b569",
      "parents": [
        "b301887a10ebcf27105be919b080f32962e73cf7"
      ],
      "author": {
        "name": "simonhmorris1",
        "email": "112178216+simonhmorris1@users.noreply.github.com",
        "time": "Tue Oct 20 19:23:52 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:23:52 2026 +0000"
      },
      "message": "Linux fixes to pass TC-CNET-4.23 (#74512)\n\n* [Linux] Bound Wi-Fi connects by ConnectMaxTimeSeconds and report why they fail\n\nA connect to a missing SSID never returned, and every failure was kUnknownError. A 30 s\ndeadline now reports kNetworkNotFound, a wrong passphrase reports kAuthFailure, and the\nfailed network is disabled so wpa_supplicant\u0027s retries no longer reject scans. CurrentNetwork\nis read from wpa_supplicant instead of the stale proxy cache, and scan results are sorted by RSSI.\n\n* [Linux] Disable a failed network only for a pending ConnectNetwork\n\nA failed reconnect that wpa_supplicant started by itself also reached the connect-failure\npath and disabled the configured network, leaving a commissioned device offline.\n\n* Apply batched suggestions from code review\n\nCo-authored-by: Sergio Soares \u003csergiosoares@google.com\u003e\n\n* [Linux] Run post-connect handling when the connect timer finds the link up\n\nWhen wpa_supplicant reports \u0027completed\u0027 without \u0027associating\u0027, the timer now\nalso runs PostNetworkConnect(). Scan results are sorted with std::sort.\n\n* [Linux] Count every wpa_supplicant association state toward a connect\n\nwpa_supplicant coalesces State signals, so \u0027associating\u0027 can be missed. The attempt now starts\nafter the old network is gone, and PAF resumes only once a failed network is disabled.\n\n---------\n\nCo-authored-by: Sergio Soares \u003csergiosoares@google.com\u003e"
    },
    {
      "commit": "b301887a10ebcf27105be919b080f32962e73cf7",
      "tree": "660fd8759a8ac30783fe159c40f961f1f84b7fa5",
      "parents": [
        "26f29cd091ce24c34d7e4294569171d987e56efb"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Tue Oct 20 10:42:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:42:12 2026 +0000"
      },
      "message": "TC-FAN-3.5 - Fix step 10b text to describe the ascending baseline (#74824)\n\n* initial progress\n\n* first increase-decrease commands\n\n* adds get_last_attribute_report_value function\n\n* draft 1\n\n* draft 2\n\n* updates descriptions and comments\n\n* restyled\n\n* fixes verify_step_attribute_values fn\n\n* add logging to write_setting\n\n* fixes feature support logic\n\n* adds test steps\n\n* restyled\n\n* restyled\n\n* lint\n\n* update scenarios\n\n* updates CI args\n\n* fix merge\n\n* fix merge\n\n* lint\n\n* updates step class\n\n* restyled\n\n* refactors steps, fns\n\n* restyled\n\n* update fn name\n\n* fix typo\n\n* adds another test scenario\n\n* update progress per pr comments\n\n* implement baseline value checks\n\n* adds case\n\n* adds cases\n\n* verifies 1st 4 scenarios\n\n* adds wrapping tests\n\n* refactors and splits lowestOff vs wrap tests\n\n* adds baseline values verifications\n\n* adds cluster_guard to matter testing support\n\n* adds command to turn fan on if on-off cluster if part of the dut\n\n* removes test off command\n\n* removes unused imports and functions\n\n* updates function signatures, return types, and descriptions\n\n* removes redundant descriptions\n\n* restyled checkpoint\n\n* restyled\n\n* lint\n\n* refactor for better test step flow\n\n* refactor for better test step flow\n\n* restyled\n\n* cosmetics\n\n* adds current values checks\n\n* restyled\n\n* restyled\n\n* lint\n\n* lint\n\n* implemented lowestOff testing for current values\n\n* checkpoint\n\n* current and non-current attribute testing\n\n* implements test steps\n\n* adjust comments\n\n* restyyled\n\n* restyled\n\n* update\n\n* restyled\n\n* restyled\n\n* restyled\n\n* cleanup\n\n* adds endpoint 1 to CI args\n\n* removes await_all_final_values_reported_threshold fn\n\n* adds get_attribute_value_from_queue\n\n* restyled\n\n* restyled\n\n* restyled\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* fix merge/imports\n\n* restyled\n\n* address pr comments\n\n* rename to lowest_off_field_conditions_test\n\n* removes reduntant lines\n\n* removes commented line\n\n* restyled\n\n* removes initialize_percent_setting\n\n* lowest_off_field_conditions_test adds clarifying comment on\n\n* updates cluster_guard docstring\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* mypy\n\n* test formatting\n\n* Restyled by autopep8\n\n* updates test steps\n\n* format test\n\n* updating test steps progress\n\n* Restyled by autopep8\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* swaps cluster_guard for cluster_present\n\n* step wording updated\n\n* cr\n\n* cr\n\n* fix imports, adds all_of fn and unit test\n\n* cr\n\n* cr\n\n* fix step numbers\n\n* fix logging\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* lint\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* updates copyright year\n\n* lint\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* removes  temp file\n\n* Remove accidentally committed test artifacts\n\n* Revert accidental third_party submodule changes\n\n* updated to not assume 100%\n\n* pr comment\n\n* gate subs\n\n* spelling\n\n* updates script\n\n* fix test step text\n\n* TC-FAN-3.5 - Rename the script to TC_FAN_3_5_provisional so it does not replace TC-FAN-3.5 in the Test Harness\n\n* TC-FAN-3.5 - Rename the test class and methods to TC_FAN_3_5_provisional\n\n* Fix TC-FAN-3.5 step 10b to save the ascending baseline\n\n---------\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "26f29cd091ce24c34d7e4294569171d987e56efb",
      "tree": "686595c36556a4c7de250c19664dd76a29b3380c",
      "parents": [
        "c3298594fe480f22dd65caf3b133a55259411d84"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 20 12:41:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 12:41:12 2026 -0400"
      },
      "message": "Bump third_party/imgui/repo from `01380c5` to `c1aaac6` (Auto-merged by bot)\n\nBumps [third_party/imgui/repo](https://github.com/ocornut/imgui) from `01380c5` to `c1aaac6`.\n- [Release notes](https://github.com/ocornut/imgui/releases)\n- [Commits](https://github.com/ocornut/imgui/compare/01380c579715e62fb9a8d6ec0502c4ea83bfde6e...c1aaac65e896a45f81f47a4d68f9959e0f86c859)\n\n---\nupdated-dependencies:\n- dependency-name: third_party/imgui/repo\n  dependency-version: c1aaac65e896a45f81f47a4d68f9959e0f86c859\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c3298594fe480f22dd65caf3b133a55259411d84",
      "tree": "19bcc8eace0b0bf2e71f15d8f8b6080d2339b46f",
      "parents": [
        "d6e57e6466c52a77cb54852fde31e62c05253898"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 20 12:40:55 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 12:40:55 2026 -0400"
      },
      "message": "Bump the codeql-action group across 1 directory with 3 updates (Auto-merged by bot)\n\nBumps the codeql-action group with 3 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).\n\n\nUpdates `github/codeql-action/init` from 4.38.3 to 4.39.0\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee)\n\nUpdates `github/codeql-action/analyze` from 4.38.3 to 4.39.0\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee)\n\nUpdates `github/codeql-action/upload-sarif` from 4.38.3 to 4.39.0\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/24c54180a607b1449ed407dd24f251e4e9147c8d...6f2ac81f5cd81fe351a197ba0b00d91d03cd2aee)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action/init\n  dependency-version: 4.39.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: codeql-action\n- dependency-name: github/codeql-action/analyze\n  dependency-version: 4.39.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: codeql-action\n- dependency-name: github/codeql-action/upload-sarif\n  dependency-version: 4.39.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n  dependency-group: codeql-action\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d6e57e6466c52a77cb54852fde31e62c05253898",
      "tree": "e5613b13e06a002dff9f410d6ec2e81947ea747d",
      "parents": [
        "c032faa689007cfbf165c9df7f51582827fe69d2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 20 12:40:40 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 12:40:40 2026 -0400"
      },
      "message": "Bump pyTooling/Actions/with-post-step from 8.5.2 to 9.2.1 in /.github/actions/dump-disk-info (Auto-merged by bot)\n\nBumps [pyTooling/Actions/with-post-step](https://github.com/pytooling/actions) from 8.5.2 to 9.2.1.\n- [Release notes](https://github.com/pytooling/actions/releases)\n- [Changelog](https://github.com/pyTooling/Actions/blob/dev/doc/Releases.rst)\n- [Commits](https://github.com/pytooling/actions/compare/a7d5e2058172ce93c3b9d657a314b328361a8b1f...5bc10856930cda38f0dfb260d2dbac61a479b6a6)\n\n---\nupdated-dependencies:\n- dependency-name: pyTooling/Actions/with-post-step\n  dependency-version: 9.2.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c032faa689007cfbf165c9df7f51582827fe69d2",
      "tree": "18e77c7dfa23aa576f40725b436c1b80c484940d",
      "parents": [
        "5c31a97eeaf85bed7a3d73c92bdf5ff269ce4c5d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 20 12:40:22 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 12:40:22 2026 -0400"
      },
      "message": "Bump pyTooling/Actions/with-post-step from 8.5.2 to 9.2.1 in /.github/actions/setup-ccache (Auto-merged by bot)\n\nBumps [pyTooling/Actions/with-post-step](https://github.com/pytooling/actions) from 8.5.2 to 9.2.1.\n- [Release notes](https://github.com/pytooling/actions/releases)\n- [Changelog](https://github.com/pyTooling/Actions/blob/dev/doc/Releases.rst)\n- [Commits](https://github.com/pytooling/actions/compare/a7d5e2058172ce93c3b9d657a314b328361a8b1f...5bc10856930cda38f0dfb260d2dbac61a479b6a6)\n\n---\nupdated-dependencies:\n- dependency-name: pyTooling/Actions/with-post-step\n  dependency-version: 9.2.1\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5c31a97eeaf85bed7a3d73c92bdf5ff269ce4c5d",
      "tree": "9d1b518e0a26fb3b28095ce335376e5d8d469729",
      "parents": [
        "ef5c6c7c6e63c73ed4bfa3224c6f289ce5180fe0"
      ],
      "author": {
        "name": "Rob Bultman",
        "email": "rob.Bultman@gmail.com",
        "time": "Tue Oct 20 11:05:21 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:05:21 2026 +0000"
      },
      "message": "Fix comments (#74839)\n\n* Fix comments\n\n* Fix comment"
    },
    {
      "commit": "ef5c6c7c6e63c73ed4bfa3224c6f289ce5180fe0",
      "tree": "57fdfdb6a22d78408b360792e111c9ddf32df47b",
      "parents": [
        "ed41f2af58ec6aded5b0969571bd01f0ca15a394"
      ],
      "author": {
        "name": "Junior Martinez",
        "email": "67972863+jmartinez-silabs@users.noreply.github.com",
        "time": "Tue Oct 20 10:22:12 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 14:22:12 2026 +0000"
      },
      "message": "Fix TC_SC_5_1 and TC_SC_5_2 when groupcast is Adopted within the group key management (#74807)\n\n* Fix TC_SC_5_1 and TC_SC_5_2 when groupcast is Adopted within the group keymanagement cluster. Re-enable SC_5_1 in ci\n\n* Move Groupcast adoption check to its own step (0c). Replace Attribute.Revision by Attribute.ClusterRevision"
    },
    {
      "commit": "ed41f2af58ec6aded5b0969571bd01f0ca15a394",
      "tree": "dbd8fc422bab998d09ff430fcf2f9927bdfae4e7",
      "parents": [
        "da79752f6a33931de0dd037fbc16fe32e8f40ae1"
      ],
      "author": {
        "name": "rob",
        "email": "rgoliver@google.com",
        "time": "Tue Oct 20 05:47:51 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 09:47:51 2026 +0000"
      },
      "message": "[Linux] Guard NanPeerInfo and ScanTimerCtx with CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF (#74835)\n\n### Summary\n\nGuards NanPeerInfo and ScanTimerCtx in ConnectivityManagerImpl.h with\nCHIP_DEVICE_CONFIG_ENABLE_WIFIPAF in addition to\nCHIP_DEVICE_CONFIG_ENABLE_COMMISSIONING_PROXY.\n\n#### Problem\n\n- NanPeerInfo and ScanTimerCtx are guarded solely by\n  CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONING_PROXY.\n- When building on Linux with Wi-Fi disabled (chip_enable_wifi \u003d false):\n  - \u003cglib.h\u003e is not included because CHIP_DEVICE_CONFIG_ENABLE_WPA is 0.\n  - If CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONING_PROXY is enabled (such as in\n    all-devices-app), ScanTimerCtx is compiled and fails:\n      error: unknown type name \u0027guint\u0027; did you mean \u0027uint\u0027?\n- NanPeerInfo and ScanTimerCtx are Wi-Fi PAF / NAN scan structures used only by\n  ConnectivityManagerImpl_WiFiPafWpaSupplicant.cpp and methods declared under\n  CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF \u0026\u0026 CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONING_PROXY.\n\n#### Solution\n\n- Updated the guard around NanPeerInfo and ScanTimerCtx to:\n  #if CHIP_DEVICE_CONFIG_ENABLE_WIFIPAF \u0026\u0026 CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONING_PROXY\n- Aligns the struct declarations with the member methods that consume them\n  (FinishWiFiPAFScan, WiFiPAFScan, mNanScanPeers), preventing compilation of\n  unused Wi-Fi PAF scan types when Wi-Fi PAF is disabled.\n\n### Testing\n\n- Automated Tests:\n  - N/A: Compile-time header preprocessor guard fix; no runtime logic was added\n    or modified. Verified existing Linux platform unit test suite compiles and\n    runs cleanly:\n      scripts/run_in_build_env.sh \"ninja -C out/linux-x64-tests-clang src/platform/tests:TestPlatformMgr.run\"\n- Manual Testing:\n  - Verified compilation of all-devices-app with Wi-Fi disabled\n    (chip_enable_wifi \u003d false):\n      scripts/run_in_build_env.sh \"ninja -C out/soil-docker\"\n    All 122 targets compiled cleanly without errors."
    },
    {
      "commit": "da79752f6a33931de0dd037fbc16fe32e8f40ae1",
      "tree": "e5871aeb6dd3d8e7983bc5deb6ec5b551f07a28d",
      "parents": [
        "c0747b78f00f61b4c36d20db474fc9721b437f5d"
      ],
      "author": {
        "name": "Pradip De",
        "email": "pradipd@google.com",
        "time": "Mon Oct 19 13:39:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 20:39:20 2026 +0000"
      },
      "message": "[Camera] Fix CaptureSnapshot when SnapshotStreamID is Null (#74681) (#74758)\n\n* [Camera] Fix CaptureSnapshot when SnapshotStreamID is Null (#74681)\n\n- Filter by stream.isAllocated in CameraDevice::MatchClosestSnapshotParams and CameraDevice::CaptureSnapshot so the unallocated capability template stream (ID 0) is not selected when SnapshotStreamID is Null.\n- Stop any existing snapshotContext before creating a new pipeline in StartSnapshotStream, and stop all snapshot streams during CameraDevice::Shutdown.\n- Remove unreachable dead code in CameraAVStreamManager::SnapshotStreamAllocate, update HAL stream resolution range and restart pipeline when reusing an existing snapshot stream, erase dynamically allocated entries on deallocation in SnapshotStreamDeallocate, and start persisted snapshot streams in AllocatedSnapshotStreamsLoaded.\n- Update TC_AVSM_2_10.py and TC_AVSM_Snapshot_Simple.py to cover CaptureSnapshot with Null SnapshotStreamID in CI.\n\n* Address review comment: catch InteractionModelError in cleanup finally block"
    },
    {
      "commit": "c0747b78f00f61b4c36d20db474fc9721b437f5d",
      "tree": "c380948b0a4d254ee8d091a8fb76d6e038f169e8",
      "parents": [
        "f6b29abbe7286c1e41f8847d13db28143881154d"
      ],
      "author": {
        "name": "Qingling-Wu",
        "email": "154312942+Qingling-Wu@users.noreply.github.com",
        "time": "Tue Oct 20 04:27:13 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:27:13 2026 -0400"
      },
      "message": "[NXP][Zephyr] Replace pre-installed NXP ZSDK with upstream Zephyr in docker image (#74437)\n\nInstead of pre-installing the NXP ZSDK workspace in the docker image,\nfetch upstream zephyrproject-rtos/zephyr only to install\nrequirements-base.txt, then remove the workspace. The Zephyr workspace\ninitialization is provided in the follow-up PR.\n\nThis allows updating the Zephyr SHA (NXP_ZEPHYR_REVISION) without\nrebuilding the docker image.\n\nSigned-off-by: Qingling Wu \u003cqingling.wu@nxp.com\u003e"
    },
    {
      "commit": "f6b29abbe7286c1e41f8847d13db28143881154d",
      "tree": "337b1a1f82fa632ce73f12ae7c08141ae46b4041",
      "parents": [
        "d9d9bd27cca7a69126579dd8d7a729062c791928"
      ],
      "author": {
        "name": "marybadalyan",
        "email": "marybadalyangdh@gmail.com",
        "time": "Mon Oct 19 23:37:39 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:37:39 2026 +0000"
      },
      "message": "Implement Irrigation device (#74655)\n\n* Implement Irrigation device\n\n* Restyled by whitespace\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix callbacks\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add support for masterValve\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix Pausing logic and configs\n\n* Fix clang-tidy\n\n* Nit;Add optional registartion\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Minor fixes\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix Handle*CallBacks\n\n* Minor tweaks\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Remove optioanl dependencies\n\n* Implment Register/UnregisterOptionalClusters\n\n* Remove level/duration local caching\n\n* Fix build dependencies\n\n* Restyled by gn\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Movestructs into LoggingIrrigationSystem\n\n* Remove watervalve changes\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Refactor IrrigationSystem to use LoggingWaterValve\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d9d9bd27cca7a69126579dd8d7a729062c791928",
      "tree": "37f891ba5b6ba1b2466fd27b8fd79522e406c33d",
      "parents": [
        "e7112a168541649be84ff642bdd60ab2c7c2b2c2"
      ],
      "author": {
        "name": "Hayk Khachatryan",
        "email": "69189182+Hayk10002@users.noreply.github.com",
        "time": "Mon Oct 19 23:16:11 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:16:11 2026 +0000"
      },
      "message": "Add device unregistration hooks and OOB accessor cleanup (#74648)\n\n* Implement oob accessors unregistering infra\n\n* reference instead of pointer in `SetCurrentDevice`\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Restyled by gn\n\n* Include order change\n\n* Add the `algorithm` header for `std::find` ands `std::find_if`\n\n* Add some comments\n\n* Do not clear listeners with the `Clear`\n\n* Add unregistration to the `DeviceScreenHook`\n\n* Use stack allocated object instead of global state\n\n* Use reference instead of pointer where makes sense\n\n* Review suggestions\n\n* Add tests for oobaccessor unregistration and callback registration\n\n* Add tests and some fixes\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* CodeRabbit suggestions\n\n* Complete the merge\n\n* Change the approach, this is way better\n\n* Add documentation\n\n* one more line of comment\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* add missing include\n\n* Revert a log message change\n\nCo-authored-by: Andrei Litvin \u003candy314@gmail.com\u003e\n\n* Address review suggestions\n\n* Remove unnecessary implementation\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Change comment style\n\n* Make ScopedDependency non movable as a design choice\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Test fix\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e\nCo-authored-by: Andrei Litvin \u003candy314@gmail.com\u003e"
    },
    {
      "commit": "e7112a168541649be84ff642bdd60ab2c7c2b2c2",
      "tree": "b5876b70b223e7853042b340fe75a7bbb96a8b16",
      "parents": [
        "bf4cb5ff780388a6f51b19f63b1c4ff7bdb4f791"
      ],
      "author": {
        "name": "Rob Bultman",
        "email": "rob.Bultman@gmail.com",
        "time": "Mon Oct 19 14:57:39 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 18:57:39 2026 +0000"
      },
      "message": "[WTLREPMON] Add test for water tank level and media (#74014)\n\n* Add test for water tank level and media\n\n* Changes per code review\n\n* Apply suggestions from code review\n\n* Update src/app/tests/suites/certification/Test_TC_ACFREMON_2_1.yaml\n\n* Restyled by whitespace\n\n* Restyled by prettier-yaml\n\n---------\n\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e"
    },
    {
      "commit": "bf4cb5ff780388a6f51b19f63b1c4ff7bdb4f791",
      "tree": "869dbd2d6b6bb8234fc67f8d00f4424511da0d26",
      "parents": [
        "fb86cf1432a53efd8840188dec51cd94bba193fb"
      ],
      "author": {
        "name": "MustafaBaquari",
        "email": "mustafabaquari@gmail.com",
        "time": "Mon Oct 19 10:41:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:41:25 2026 +0000"
      },
      "message": "[Inet] Disarm and close UDP endpoint on unrecoverable POSIX… (#74728)\n\n* Summary : [Inet] Disarm and close UDP endpoint on unrecoverable POSIX socket errors\n\nProblem / Trigger:\nIn System::LayerImplSelect, UDP sockets with SocketEventFlags::kRead enabled\nare monitored via select() in mSelected.mReadSet. Per POSIX/BSD select()\nsemantics, a socket descriptor in readfds is reported as readable whenever a\nread operation will not block, which includes persistent socket error states.\nWhile transient UDP errors (such as asynchronous ICMP errors in SO_ERROR) are\nconsumed and cleared by recvmsg(), certain socket/interface errors represent\na permanently invalidated socket state that recvmsg() does not clear:\n- ENOTCONN: Socket marked defunct by the Darwin/XNU kernel (sosetdefunct /\n  TN2277) during backgrounding or network interface transitions.\n- EBADF: File descriptor is invalid or reclaimed/closed by the OS.\n- ESHUTDOWN: Socket receive/send channel has been shut down.\n- ENXIO: Bound network interface index was detached/removed.\nRationale:\nWhen a UDP socket enters one of these unrecoverable states, recvmsg() returns\n-1 with the error code, but the underlying kernel socket state remains set.\nWithout disarming the read watch and closing the socket, PrepareEvents()\nre-adds the broken file descriptor to mSelected.mReadSet on the next turn and\nselect() returns immediately again. This traps the Matter event loop thread in\na tight 100% CPU infinite spin loop (PrepareEvents -\u003e WaitForEvents -\u003e\nHandleEvents -\u003e HandlePendingIO), starving Matter timers and completion\ncallbacks.\n\n* Code review updates :\n\n* Close socket during GetSocket\n\n* Update tests to assert System slept on the second socket read attempt after the first attempt failed.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fb86cf1432a53efd8840188dec51cd94bba193fb",
      "tree": "dfc61a8f1e6414bd5051e7b346cbb6899e8531f2",
      "parents": [
        "b7b5b4c6dae34eabe2316631642a012c91c9515c"
      ],
      "author": {
        "name": "Justin Wood",
        "email": "woody@apple.com",
        "time": "Mon Oct 19 10:29:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:29:41 2026 -0400"
      },
      "message": "[chip-tool] Cancel the pending lookup when discover resolve shuts down (#74699)\n\nThe resolve command keeps one NodeLookupHandle for its lifetime. The\ncommand waits 30 seconds, but the resolver keeps a lookup with no\nresult active for up to CHIP_CONFIG_ADDRESS_RESOLVE_MAX_LOOKUP_TIME_MS\n(45 seconds by default). Running the command again in interactive mode\ninside that window passes a handle that is still in the resolver\u0027s\nactive list to LookupNode, which aborts in IntrusiveList:\n\n    VerifyOrDie failure at src/lib/support/IntrusiveList.h:119:\n    !node-\u003eIsInList()\n\nLookupNode documents that a handle must not be reused while its lookup\nis in progress, and CHIPCommand::Shutdown documents that the command is\nready for another invocation afterwards. Cancel the lookup in Shutdown.\nSkip the failure callback: the command has already finished, and the\ncallback would set its exit status again."
    },
    {
      "commit": "b7b5b4c6dae34eabe2316631642a012c91c9515c",
      "tree": "7546bd6bef840f7643e718a694379f17569c84e7",
      "parents": [
        "1e1c3719272e28e52d7d1086d7db229dc71749cd"
      ],
      "author": {
        "name": "Junming Chen",
        "email": "jchen73@gmu.edu",
        "time": "Mon Oct 19 13:13:44 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:13:44 2026 -0400"
      },
      "message": "Microwave Oven Control: reject zero TimeToAdd (#74741)\n\n* Microwave Oven Control: reject zero TimeToAdd\n\nEnforce the one-second lower bound before the application callback while\npreserving Error-state precedence and subtraction-based overflow checks.\nNo public API, storage format, or production state-member change.\n\nAdd command-path boundary, error-state, and application-failure tests;\nidentical tests fail on original code and on validation after the callback.\n\nFixes #74740\n\n* Update test description for AddMoreTime command\n\n* Remove non-essential comments"
    },
    {
      "commit": "1e1c3719272e28e52d7d1086d7db229dc71749cd",
      "tree": "45bc58af271035ae8443196cb32da16028771284",
      "parents": [
        "cffb02570e97622d3eb3ad85ef66c13e6cd349e5"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 10:05:05 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:05:05 2026 -0400"
      },
      "message": "Run TC_PS_2_3 and TC_I_2_4 against all-devices-app (#74799)\n\nReplace the all-clusters-app run with an all-devices-app run that targets\nthe device for each cluster: power-source for Power Source and\non-off-light for Identify. Local runs of both apps passed with no step\nskipped on all-devices-app that all-clusters-app executes."
    },
    {
      "commit": "cffb02570e97622d3eb3ad85ef66c13e6cd349e5",
      "tree": "cc6f4d17ff9f37823bd8d12b75e8c83206fa8514",
      "parents": [
        "e8e5d944861ff557f7a8fa0741c5be71cb7d9423"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 10:03:40 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:03:40 2026 -0400"
      },
      "message": "Move Valve Configuration and Control and Mode Select tests to all-devices-app (#74815)\n\n* Move Valve Configuration and Control and Mode Select tests to all-devices-app\n\nall-clusters-app is being retired, so run TC_VALCC_2_1, 3_1, 3_2, 3_4,\n4_1, 4_2, 4_3, 4_4 and 4_5 against all-devices-app\n(--device water-valve:1) instead. The all-devices runs execute every\nstep the all-clusters runs did.\n\nTC_MOD_1_2 keeps its all-clusters-app run and gains an all-devices-app\nrun (--device mode-select:1). The mode-select device has no OnOff\ndependency, so it has no OnMode or StartUpMode attribute and steps 4\nand 5 skip there.\n\nPart of #74797\n\n* Keep all-clusters-app runs for Valve tests that skip steps on all-devices-app\n\nTC_VALCC_2_1, 3_4, 4_3 and 4_4 pass on all-devices-app without running\nevery step. The water valve has no AutoCloseTime, DefaultOpenLevel,\nValveFault or LevelStep attribute and no TimeSync feature, and the tests\nstep past the checks that need them without marking them skipped.\nRestore their all-clusters-app run as run1 and keep the all-devices-app\nrun as run2 until the water valve covers those steps.\n\nPart of #74797"
    },
    {
      "commit": "e8e5d944861ff557f7a8fa0741c5be71cb7d9423",
      "tree": "b1a8d8c8a8f75b1d9b13e7316fef4bc8039ee2f7",
      "parents": [
        "7a94c9583fdfb81b66ee8cff5a78746beec4c1dc"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 10:02:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:02:58 2026 -0400"
      },
      "message": "Use all-devices-app as the TH server in Fabric Synchronization tests (#74814)\n\nall-clusters-app is being retired. TC_CCTRL_2_2, 2_3, TC_ECOINFO_2_1,\n2_2 and TC_MCORE_FS_1_1, 1_2, 1_5 start their own TH server from\nth_server_app_path, so point it at all-devices-app instead. The tests\nuse only the TH server\u0027s root endpoint, and both runs of each test\nexecute the same steps as before.\n\nPart of #74797"
    },
    {
      "commit": "7a94c9583fdfb81b66ee8cff5a78746beec4c1dc",
      "tree": "58020dfd5411f103cade99e67aae99feabdc6a2d",
      "parents": [
        "5efe08793d980e196e9b632626eb84b713f9211d"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 10:02:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:02:21 2026 -0400"
      },
      "message": "Move Diagnostics, IDM and Thermostat tests to all-devices-app (#74811)\n\n* Move Diagnostics, IDM and Thermostat tests to all-devices-app\n\nall-clusters-app is being retired, so run TC_DGGEN_2_4, 2_5 and\nTC_IDM_1_5, 4_2, 5_2 (--device on-off-light:1) and TC_TSTAT_2_3, 4_2\n(--device thermostat:1) against all-devices-app instead. The\nall-devices runs execute every step the all-clusters runs did.\n\nTC_DGSW_2_1 and TC_TSTAT_4_4 keep their all-clusters-app run and gain\nan all-devices-app run. all-devices-app has no ThreadMetrics or heap\nattributes in Software Diagnostics (TC_DGSW_2_1 steps 2 to 5) and its\nthermostat has no Thermostat Sensors feature (TC_TSTAT_4_4 steps 2b\nto 6b).\n\nPart of #74797\n\n* Keep all-clusters-app runs for DGGEN_2_4 and TSTAT_4_2\n\nBoth tests pass on all-devices-app without running every step.\nall-devices-app\u0027s root node has no Time Synchronization cluster, so\nTC_DGGEN_2_4 leaves out steps 1b, 1c and 3a to 3e. The thermostat\u0027s\npreset types leave TC_TSTAT_4_2 unable to run steps 8, 10, 12, 13 and\n18, which it logs and passes over. Restore their all-clusters-app run as\nrun1 and keep the all-devices-app run as run2 until all-devices-app\ncovers those steps.\n\nPart of #74797"
    },
    {
      "commit": "5efe08793d980e196e9b632626eb84b713f9211d",
      "tree": "beac2f95e4fb16166b374cbfe6dfea6ecd177875",
      "parents": [
        "e9eb0c94106ce0e9737522345acdbf5387b80481"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 10:01:57 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 13:01:57 2026 -0400"
      },
      "message": "Add all-devices-app wildcard runs to whole-device tests (#74801)\n\nAdd an all-devices-app run (--device \"*\" --groupcast) to TC_IDM_9_1,\nTC_IDM_1_2, 1_4, 2_2, 3_2, 4_3 and TCP_Tests. Their all-clusters-app run\nstays until all-devices-app covers the same clusters and steps.\nTC_IDM_4_3\u0027s new run sets timeout: 900.\n\nRun TC_IDM_2_3 on --device \"*\" instead of contact-sensor.\n\nDeny-list MicrowaveOvenControl AddMoreTime for command constraint probing\nuntil #74740 is fixed. It is the only failure of TC_IDM_9_1 on\n--device \"*\".\n\nPart of #74797"
    },
    {
      "commit": "e9eb0c94106ce0e9737522345acdbf5387b80481",
      "tree": "5e5d66c7c669d8148b08e7a5cea471451bd72087",
      "parents": [
        "f191272beac99ad48dd5e2280100d6a425a66d5f"
      ],
      "author": {
        "name": "Shreyas Balakrishna Bhandare",
        "email": "bhandares@google.com",
        "time": "Mon Oct 19 09:43:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:43:39 2026 +0000"
      },
      "message": "[Chef] Increase default RVC cycle duration to 90s and add Python test (#74829)\n\n* [Chef] Increase default RVC cycle duration to 90s and add Python test\n\n* Remove redundant sleep delays"
    },
    {
      "commit": "f191272beac99ad48dd5e2280100d6a425a66d5f",
      "tree": "ead94a55c1fcc0918246ffcb23d9e5c892cc1c76",
      "parents": [
        "a68961709c7df60c4e4caa4f6b62d894b5ea6615"
      ],
      "author": {
        "name": "chrisdecenzo",
        "email": "61757564+chrisdecenzo@users.noreply.github.com",
        "time": "Mon Oct 19 09:41:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 16:41:29 2026 +0000"
      },
      "message": "[MediaFileManagement] Reject unsupported OfferFile MIME types; seed a file for TC-MFILEMAN-3.1 (#74806)\n\n* [MediaFileManagement] Reject unsupported OfferFile MIME types; seed a file for TC-3.1\n\nOfferFile has no response payload, so the cluster server now rejects a\nMimeType missing from a non-empty SupportedMimeTypes list with the\ncluster-specific status UnsupportedMimeType before the delegate starts a\ndownload, as TC-MFILEMAN-3.2 step 4 expects. The check lives in the\ncluster so every delegate gets it.\n\nTC-MFILEMAN-3.1 requires at least one file on the DUT. The \"add a file\nwhen AvailableFiles is empty\" logic from TC-2.2 moves into the shared\ntest base as ensure_file_available; TC-3.1 now uses it and removes the\nfile it added during teardown.\n\nThe tv-app grants share/offer consent automatically; log that explicitly\nand document the tv-app\u0027s Media File Management behavior for testers.\n\n* Address review: MIME lookup errors, consent log contents, async teardown\n\n- IsSupportedMimeType returns the delegate\u0027s error when SupportedMimeTypes\n  cannot be read, so OfferFile reports that failure instead of claiming\n  the offered type is unsupported.\n- The tv-app consent logs no longer echo peer-supplied ClientName/Name,\n  which could carry CR/LF and forge log lines.\n- Drop the explicit super().teardown_test() from the async teardowns in\n  TC-MFILEMAN-2.1, 3.1 and 3.2. __init_subclass__ already runs the base\n  teardown after the override, and calling it from inside the running\n  event loop made the ACL snapshot restore fail.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Test OfferFile against a SupportedMimeTypes list longer than the read limit\n\nCovers the path where the delegate reports more than the spec\u0027s 64\nentries without a match, which was the only part of IsSupportedMimeType\nleft uncovered.\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a68961709c7df60c4e4caa4f6b62d894b5ea6615",
      "tree": "4f3114b964706cb72bc4e8e1fd310011622197bf",
      "parents": [
        "75eeceb96b6ab9627d259d63b76845927ed423cd"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 09:31:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 12:31:11 2026 -0400"
      },
      "message": "Move Commissioning and Basic Information tests to all-devices-app (#74808)\n\nall-clusters-app is being retired, so run TC_BINFO_2_2, 3_2,\nTC_CADMIN_1_5, 1_9, 1_10, 1_15, 1_19, 1_22, 1_25 and TC_CGEN_2_1, 2_2,\n2_4 against all-devices-app (--device on-off-light:1) instead. These are\nroot-node tests, and the all-devices runs execute every step the\nall-clusters runs did.\n\nTC_BINFO_2_1 and TC_CADMIN_1_11 keep their all-clusters-app run and gain\nan all-devices-app run. all-devices-app has no ProductAppearance\nattribute (TC_BINFO_2_1 step 21) and no Basic Commissioning Window\nsupport (TC_CADMIN_1_11 steps 9a to 9d).\n\nPart of #74797"
    },
    {
      "commit": "75eeceb96b6ab9627d259d63b76845927ed423cd",
      "tree": "a362bf7461a3d38fd8743358e972052ead2e5749",
      "parents": [
        "c0cc4e548a343de845fc48220dd633c4aa6e7162"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Mon Oct 19 09:30:37 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 12:30:37 2026 -0400"
      },
      "message": "Move Operational Credentials and Attestation tests to all-devices-app (#74809)\n\nall-clusters-app is being retired, so run TC_DA_1_2, 1_5, 1_7 and\nTC_OPCREDS_3_1, 3_2, 3_4, 3_5, 3_8 against all-devices-app\n(--device on-off-light:1) instead. These tests work on endpoint 0, and\nthe all-devices runs execute every step the all-clusters runs did.\n\nPart of #74797"
    },
    {
      "commit": "c0cc4e548a343de845fc48220dd633c4aa6e7162",
      "tree": "abd290c0c8324920cba238c356505f1654ae9167",
      "parents": [
        "24fafe816f7a5db9aeb514d6504ff6b57384b4f1"
      ],
      "author": {
        "name": "Moises Terrones",
        "email": "moises.tersal@gmail.com",
        "time": "Mon Oct 19 16:27:01 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 12:27:01 2026 -0400"
      },
      "message": "Regenerate older cluster XML and Alchemy exclusion list cleanup (#74826)"
    },
    {
      "commit": "24fafe816f7a5db9aeb514d6504ff6b57384b4f1",
      "tree": "e165da827000e20b171ecc85d220f451000912ec",
      "parents": [
        "3584c8c8552f4a0d471f2aad24a15b478959c230"
      ],
      "author": {
        "name": "Elen Soghomonyan",
        "email": "43118262+Elen777300@users.noreply.github.com",
        "time": "Mon Oct 19 18:12:36 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 14:12:36 2026 +0000"
      },
      "message": "[door-lock-server] Add code-driven DoorLockCluster core (phase 3a) (#74440)\n\n* [door-lock-server] Add code-driven DoorLockCluster (Phase 3a)\n\nIntroduces the code-driven DoorLockCluster (DefaultServerCluster subclass)\nalongside the still-active legacy ember implementation, with unit tests.\nStacked on the CodegenIntegration.cpp rename PR #74510.\n\n* [door-lock-server] Address review comments on code-driven DoorLockCluster\n\n* [door-lock-server] Address review comments (tests-backwards-compatibility target, inline SetLockState)"
    },
    {
      "commit": "3584c8c8552f4a0d471f2aad24a15b478959c230",
      "tree": "bd436641d2c5f6bace2835c8d7751f367a48473d",
      "parents": [
        "ea92c967842430c3c0e49d07c18f7826b293d257"
      ],
      "author": {
        "name": "yunhanw-google",
        "email": "yunhanw@google.com",
        "time": "Sat Oct 17 07:22:38 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 14:22:38 2026 +0000"
      },
      "message": "[Android] Support concurrent OTA/BDX transfers and background transfer locks in CHIPTool (#74793)\n\n* [Android] Support concurrent OTA/BDX transfers and background transfer locks in CHIPTool\n\nRework BdxOTASender into a per-(fabric, node) session manager so the\nAndroid OTA provider can serve multiple BDX transfers concurrently, and\nextend the CHIPTool OTA provider screen to target multiple node IDs with\nper-device progress, foreground service execution, and transfer-scoped\npower and Wi-Fi locks:\n\n- Split per-transfer state into BdxOTASession managed by BdxOTASender in\n  a (FabricIndex, NodeId) map, capped at 8 concurrent sessions (further\n  QueryImage requests receive a Busy response with delayedActionTime,\n  evicting the oldest unstarted reservation when all 8 slots are held by\n  unstarted reservations). QueryImage failures for one node reset only\n  that node\u0027s session and notify Java with the failing nodeId.\n- Detach finished sessions from the map immediately and destroy them on\n  a subsequent event loop turn via a zero-delay cancellable timer so\n  in-stack callers (PollForOutput, timer callbacks) never touch freed\n  members. Route all termination paths (2-minute BDX Init timeout,\n  transfer timeout, received or sent StatusReport, internal error, send\n  failure, null-exchange abort, and provider shutdown) through an\n  idempotent Finish(), while CancelForReplacement() silently cancels a\n  superseded session when the same node re-queries after Java accepted\n  its new QueryImage.\n- Pass requestor nodeId to OTAProviderDelegate.handleQueryImage and\n  handleOTAQueryFailure via backward-compatible default interface\n  methods so concurrent QueryImage requests attribute status and errors\n  to the exact node without breaking 7-argument callers.\n- In CHIPTool OtaProviderClientFragment, support comma-separated target\n  node IDs cached on the UI thread, per-node firmware\n  BufferedInputStreams honoring BDX start offset and bytesToSkip,\n  cached firmware file size, 4 Hz throttled per-node progress cards with\n  per-node retry, and a single summary status banner.\n- Scope a non-reference-counted PARTIAL_WAKE_LOCK, WifiLock\n  (WIFI_MODE_FULL_LOW_LATENCY on API 29+, WIFI_MODE_FULL_HIGH_PERF\n  earlier), and OtaTransferService (connectedDevice foreground service\n  updating its notification via NotificationManager.notify) to active\n  BDX transfer node IDs, renewing a 10-minute safety timeout while\n  blocks are served and releasing all locks on completion or fragment\n  teardown.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ea92c967842430c3c0e49d07c18f7826b293d257",
      "tree": "961c2ac41cf9e56a330575ef6c2a0be175cec758",
      "parents": [
        "5a5b7274174d88c78f76f84a10fe2e601eb8fde9"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Fri Oct 16 21:40:35 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 04:40:35 2026 +0000"
      },
      "message": "Move Access Control tests to all-devices-app (#74800)\n\nRun TC_ACE_1_2 to TC_ACE_1_5 and TC_ACL_2_2, 2_4, 2_6 and 2_8 against\nall-devices-app (--device on-off-light:1) instead of all-clusters-app.\n\nTC_ACL_2_9 and TC_ACL_2_10 keep their all-clusters-app run and gain an\nall-devices-app run. all-devices-app has no Access Control Extension\nattribute, so it skips the Extension steps those tests cover.\n\nPart of #74797"
    },
    {
      "commit": "5a5b7274174d88c78f76f84a10fe2e601eb8fde9",
      "tree": "85a5de54236baab7800dfa852562ba2687a79609",
      "parents": [
        "abef4fdb8a357d78f1f4c6855766e4b2defba02e"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Fri Oct 16 21:38:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 04:38:27 2026 +0000"
      },
      "message": "Move Secure Channel tests to all-devices-app (#74812)\n\nall-clusters-app is being retired, so run TC_SC_3_1, 3_2, 3_4, 3_6,\n4_3 and 7_1 against all-devices-app (--device on-off-light:1) instead.\nThese are root-node tests, and the all-devices runs execute every step\nthe all-clusters runs did. TC_SC_4_3 keeps its LIT ICD run.\n\nTC_SC_4_1 keeps its all-clusters-app runs and gains all-devices-app\nruns for both the manual pairing code and the QR code. all-devices-app\ndoes not support OpenBasicCommissioningWindow, so steps 9 to 17 skip\nthere.\n\nPart of #74797"
    },
    {
      "commit": "abef4fdb8a357d78f1f4c6855766e4b2defba02e",
      "tree": "86c9d0035ffcb27b8609125b10a0f409ffad85b1",
      "parents": [
        "f0c0615e30f59a91e877778102d3c2daf0e5718b"
      ],
      "author": {
        "name": "apahl-cl",
        "email": "a.pahl@cablelabs.com",
        "time": "Sat Oct 17 00:35:48 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 04:35:48 2026 +0000"
      },
      "message": "[JF] Use get_random_port() for TC_JFDS_2_5 app ports (#74823)\n\nThe JF Administrator port was drawn from 5001-5999, which includes\nCHIP_UDC_PORT (5550) and the jf-control-app\u0027s per-fabric UDC listen\nports. When it landed on one of those, PASE requests from the JF\nController went to a UDC listener instead of the JF Administrator,\nand setup_class timed out waiting for anchor commissioning.\n\nget_random_port() picks from 35000-45000 and checks the port is free,\nmatching the other JF tests. TH2 now uses it too.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "f0c0615e30f59a91e877778102d3c2daf0e5718b",
      "tree": "f58458133920c25671d75592f869c19fcce29182",
      "parents": [
        "7c12dce6d5bbe5104c656be4679a182f528c3772"
      ],
      "author": {
        "name": "Syed Abdul Khaliq",
        "email": "abdul@bugqore.com",
        "time": "Sat Oct 17 06:03:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 20:33:08 2026 -0400"
      },
      "message": "reset CD write offset per download in nrfconnect OTA processor (Auto-merged by platform-bot) (#74116)\n\n* reset CD write offset per download in nrfconnect OTA processor\n\n* skip persisting the CD on a failed nrfconnect OTA download"
    },
    {
      "commit": "7c12dce6d5bbe5104c656be4679a182f528c3772",
      "tree": "e371586a94653fae6fb5b48e7fee4d80ba88b4d7",
      "parents": [
        "7718d236dddc68a9cbb8547f61ae055975b44e4c"
      ],
      "author": {
        "name": "joonhaengHeo",
        "email": "85541460+joonhaengHeo@users.noreply.github.com",
        "time": "Sat Oct 17 08:06:27 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 23:06:27 2026 +0000"
      },
      "message": "Fix TC-BR-4: Use code driven cluster calls for Temperature Measurement (#73922)\n\n* Fix TC-BR-4 Test Fail\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Potential fix for pull request finding\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* Fix form comment\n\n* Fix from comments -2\n\n* Fix Register Verify code\n\n* Fix from comment\n\n* Add nullable to min/max (they are nullable in zap)\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Another fix: also mark no default value so we are not 0\n\n* Remove nonsense comments ... the attribute name is right there, the comment stating attribute name again is of 0 help\n\n* Feature map is not nullable. fix\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\nCo-authored-by: Andrei Litvin \u003candy314@gmail.com\u003e"
    },
    {
      "commit": "7718d236dddc68a9cbb8547f61ae055975b44e4c",
      "tree": "6a5ebe50c3d28daa7f8eb7b8178103cd5163c4cc",
      "parents": [
        "585928cc79dd142a41ea697166af35c63cd3dfcd"
      ],
      "author": {
        "name": "rob",
        "email": "rgoliver@google.com",
        "time": "Fri Oct 16 17:40:01 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 21:40:01 2026 +0000"
      },
      "message": "[all-devices-app] Implement SoilSensorAccessor for out-of-band state mutation (#74693)\n\n- Implement SoilSensorAccessor to handle SetAttribute actions for SoilMoistureMeasuredValue and MeasuredValue (Temperature), taking SoilSensor directly.\n- Add GetSoilMoistureMeasuredValue getter to SoilMeasurementCluster.\n- Update IncreasingMoistureSoilSensor to read and advance cluster values directly rather than duplicating state in private members, name simulation constants with units, and safely wrap on limit overflow.\n- Register SoilSensorAccessor via OOBAccessors and OOBAccessorHook.\n- Fix IncreasingMoistureSoilSensor to rollback registration if the timer fails to start, and correct temperature range configuration to 0.01°C units (-1000 to 5000).\n- Add unit test suite TestSoilSensorAccessor covering initial values, moisture writes (value, null transition, and constraint check), temperature writes (value, null transition, and constraint check), unsupported cluster/attribute rejection, simulation progression from OOB state, and invalid action/endpoint validation."
    },
    {
      "commit": "585928cc79dd142a41ea697166af35c63cd3dfcd",
      "tree": "81472a88a93b6594360c802ad4e5f604fd724f6d",
      "parents": [
        "17df369d9389df0c6e7042a7b646a977c03698d9"
      ],
      "author": {
        "name": "Pradip De",
        "email": "pradipd@google.com",
        "time": "Fri Oct 16 16:01:13 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 21:01:13 2026 +0000"
      },
      "message": "[ZoneManagement] Add Python certification test TC_ZONEMGMT_2_5 for RemoteZones (#73101) (#74775)\n\n* [ZoneManagement] Add Python certification test TC_ZONEMGMT_2_5 for RemoteZones (#73101)\n\n- Implement TC-ZONEMGMT-2.5 in src/python_testing/TC_ZONEMGMT_2_5.py covering all 7 test plan steps for the RemoteZones feature (ZONEMGMT.S.F04).\n- Configure CI test runner arguments for CAMERA_APP with --camera-remote-analysis and --app-pipe.\n- Verify CreateTwoDCartesianZone with Remote_NodeId/Remote_EndpointId, ConstraintError rejection when NodeId is absent or invalid, ZoneTriggered event NodeId/EndpointId fields, UpdateTwoDCartesianZone with updated NodeId/EndpointId, and RemoveZone cleanup.\n\nFixes #73101\n\n* Address CodeRabbit review: filter ZoneTriggered events by zoneID_Remote"
    },
    {
      "commit": "17df369d9389df0c6e7042a7b646a977c03698d9",
      "tree": "afafde3b15f77d9f21a75c6d2bb46d121034be45",
      "parents": [
        "20a051d6d1a0b7f1a3238c3c4393ff3e7978feb8"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Fri Oct 16 13:54:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 20:54:21 2026 +0000"
      },
      "message": "mdns_discovery - Add shared discovery test support helpers for the SC-4.x tests (#74069)\n\n* refactor\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* misspell\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* update to include 4.6/4.7\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Use the shared PTR and SRV discovery helpers in TC-SC-4.1\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "20a051d6d1a0b7f1a3238c3c4393ff3e7978feb8",
      "tree": "f24e6e2c96c627ed2a69e036c6f583ad53529ffd",
      "parents": [
        "3d3cb48824490d1da1c378ef24c0dc1c3a830180"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Fri Oct 16 12:12:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 19:12:28 2026 +0000"
      },
      "message": "TC-FAN-3.5: Enhanced attribute value testing (#38081)\n\n* initial progress\n\n* first increase-decrease commands\n\n* adds get_last_attribute_report_value function\n\n* draft 1\n\n* draft 2\n\n* updates descriptions and comments\n\n* restyled\n\n* fixes verify_step_attribute_values fn\n\n* add logging to write_setting\n\n* fixes feature support logic\n\n* adds test steps\n\n* restyled\n\n* restyled\n\n* lint\n\n* update scenarios\n\n* updates CI args\n\n* fix merge\n\n* fix merge\n\n* lint\n\n* updates step class\n\n* restyled\n\n* refactors steps, fns\n\n* restyled\n\n* update fn name\n\n* fix typo\n\n* adds another test scenario\n\n* update progress per pr comments\n\n* implement baseline value checks\n\n* adds case\n\n* adds cases\n\n* verifies 1st 4 scenarios\n\n* adds wrapping tests\n\n* refactors and splits lowestOff vs wrap tests\n\n* adds baseline values verifications\n\n* adds cluster_guard to matter testing support\n\n* adds command to turn fan on if on-off cluster if part of the dut\n\n* removes test off command\n\n* removes unused imports and functions\n\n* updates function signatures, return types, and descriptions\n\n* removes redundant descriptions\n\n* restyled checkpoint\n\n* restyled\n\n* lint\n\n* refactor for better test step flow\n\n* refactor for better test step flow\n\n* restyled\n\n* cosmetics\n\n* adds current values checks\n\n* restyled\n\n* restyled\n\n* lint\n\n* lint\n\n* implemented lowestOff testing for current values\n\n* checkpoint\n\n* current and non-current attribute testing\n\n* implements test steps\n\n* adjust comments\n\n* restyyled\n\n* restyled\n\n* update\n\n* restyled\n\n* restyled\n\n* restyled\n\n* cleanup\n\n* adds endpoint 1 to CI args\n\n* removes await_all_final_values_reported_threshold fn\n\n* adds get_attribute_value_from_queue\n\n* restyled\n\n* restyled\n\n* restyled\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* fix merge/imports\n\n* restyled\n\n* address pr comments\n\n* rename to lowest_off_field_conditions_test\n\n* removes reduntant lines\n\n* removes commented line\n\n* restyled\n\n* removes initialize_percent_setting\n\n* lowest_off_field_conditions_test adds clarifying comment on\n\n* updates cluster_guard docstring\n\n* Update src/python_testing/TC_FAN_3_5.py\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\n\n* mypy\n\n* test formatting\n\n* Restyled by autopep8\n\n* updates test steps\n\n* format test\n\n* updating test steps progress\n\n* Restyled by autopep8\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* swaps cluster_guard for cluster_present\n\n* step wording updated\n\n* cr\n\n* cr\n\n* fix imports, adds all_of fn and unit test\n\n* cr\n\n* cr\n\n* fix step numbers\n\n* fix logging\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* lint\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* updates copyright year\n\n* lint\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* removes  temp file\n\n* Remove accidentally committed test artifacts\n\n* Revert accidental third_party submodule changes\n\n* updated to not assume 100%\n\n* pr comment\n\n* gate subs\n\n* spelling\n\n* updates script\n\n* fix test step text\n\n* TC-FAN-3.5 - Rename the script to TC_FAN_3_5_provisional so it does not replace TC-FAN-3.5 in the Test Harness\n\n* TC-FAN-3.5 - Rename the test class and methods to TC_FAN_3_5_provisional\n\n---------\n\nCo-authored-by: C Freeman \u003ccecille@google.com\u003e\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3d3cb48824490d1da1c378ef24c0dc1c3a830180",
      "tree": "b9ed610b2045787139a64618ceaf3f3cb1ef5fef",
      "parents": [
        "7ef6de7274a35de825d9455e48f21d3414145440"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Fri Oct 16 11:39:32 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 18:39:32 2026 +0000"
      },
      "message": "Remove the mDNS core PICS that no test uses any more (#74795)"
    },
    {
      "commit": "7ef6de7274a35de825d9455e48f21d3414145440",
      "tree": "53b1f7f69b4dae863455aa1734f3d3d17343079b",
      "parents": [
        "c258da000886fdeb82a6ecfd5e0ebe767f865901"
      ],
      "author": {
        "name": "Andrei Litvin",
        "email": "andy314@gmail.com",
        "time": "Fri Oct 16 12:01:09 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 12:01:09 2026 -0400"
      },
      "message": "[AI Agents] Add comment and technical writing guidelines to AGENTS.md (#74805)\n\n* [AI Agents] Add comment and technical writing guidelines to AGENTS.md\n\n* Add final-code lens and delete-on-sight comment rules\n\n* Add tradeoff and tradeoffs to spellcheck wordlist"
    },
    {
      "commit": "c258da000886fdeb82a6ecfd5e0ebe767f865901",
      "tree": "34342b66033e838ed28b1ddfec278f12b2539e8a",
      "parents": [
        "2308c1a9b3bf8a626559b5dfe3eb2bfe1b89a8e0"
      ],
      "author": {
        "name": "Shubham Patil",
        "email": "shubham.patil@espressif.com",
        "time": "Fri Oct 16 21:29:13 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 11:59:13 2026 -0400"
      },
      "message": "fix a typo in attribute-storage.h (#74786)\n\n* fix a typo in attribute-storage.h\n\n* Update src/app/util/attribute-storage.h\n\nCo-authored-by: coderabbitai[bot] \u003c136622811+coderabbitai[bot]@users.noreply.github.com\u003e\n\n---------\n\nCo-authored-by: coderabbitai[bot] \u003c136622811+coderabbitai[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "2308c1a9b3bf8a626559b5dfe3eb2bfe1b89a8e0",
      "tree": "5bb576a446568ca3a1a027d608b22ff27aff8df1",
      "parents": [
        "b1784a11cd7e7fff616f2dfa29560f7caacf7fa3"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Fri Oct 16 07:27:36 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:27:36 2026 +0000"
      },
      "message": "Remove is_commissioning\u003dTrue from commissioned-device tests (#74796)\n\nSplit out of #73565 at review: the step tag removal and marker fixes land\nhere, and #73565 keeps the setup_class precondition.\n\nThe device-requirement marker declares each test\u0027s DUT state, and the TH\nclassifies tests by it (project-chip/certification-tool-backend#399), so\ndrop the redundant step-1 is_commissioning\u003dTrue from\nMatterTestCommissionedDevice tests. BasicCompositionTests-based tests have\nno marker and keep the flag. TH builds without #399 still classify by the\nflag, so this needs a TH that includes it.\n\nAlso fix markers the TH now relies on: TC_WEBRTCR_2_1-2_7 are\nMatterTestCommissioner (the DUT is the commissioner and never joins the TH\nfabric), and TestCreateNewController is CertificationUnitTestNoDevice."
    },
    {
      "commit": "b1784a11cd7e7fff616f2dfa29560f7caacf7fa3",
      "tree": "fca227fbbc1b1e75432c07f9a8cb74152d30c55c",
      "parents": [
        "b0cc17b0fa02f9c14c38c9fadd63bbfa6b536e7c"
      ],
      "author": {
        "name": "Moises Terrones",
        "email": "moises.tersal@gmail.com",
        "time": "Fri Oct 16 14:14:14 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 14:14:14 2026 +0000"
      },
      "message": "Change WHM constructor parameter from Feature to Bitmask (#74778)\n\n* Changed WHM constructor parameter from Feature to Bitmask\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b0cc17b0fa02f9c14c38c9fadd63bbfa6b536e7c",
      "tree": "7142cd118c25d9de7d241fd182170e6b9b4b1e30",
      "parents": [
        "87ddae2b5beb9d482bb439df827251af1cbb88d4"
      ],
      "author": {
        "name": "marybadalyan",
        "email": "marybadalyangdh@gmail.com",
        "time": "Fri Oct 16 17:45:27 2026 +0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 13:45:27 2026 +0000"
      },
      "message": "Change waterValve config (#74788)\n\n* Change waterValve config\n\n* Remove delegate as a parent\n\n* Implement LoggingWaterValve\n\n* Fix build files\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Remove API duplications\n\n* Switch to LoggingWaterValve\n\n* Minor Tweaks\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "87ddae2b5beb9d482bb439df827251af1cbb88d4",
      "tree": "af1b163301bf3ca098676a3830a99e3f35b8fecc",
      "parents": [
        "a4b91e1ae213619fb99bf1e152b8e2cb40a08c04"
      ],
      "author": {
        "name": "René Josefsen",
        "email": "69624991+ReneJosefsen@users.noreply.github.com",
        "time": "Fri Oct 16 15:32:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 13:32:29 2026 +0000"
      },
      "message": "Add PERSIST_FAIL_REJECT and PERSIST_FAIL_ACCEPT status codes (#74802)\n\n* Add PERSIST_FAIL_REJECT and PERSIST_FAIL_ACCEPT status codes\n\n* Add codes to ERROR_CODES.md\n\n* Generated ERROR_CODES.md"
    },
    {
      "commit": "a4b91e1ae213619fb99bf1e152b8e2cb40a08c04",
      "tree": "00405223895f18114e9010e52486dca8388b24d0",
      "parents": [
        "cec04d9b0ebd13aac2f09e73289fcff88d3b5f46"
      ],
      "author": {
        "name": "Sumith D",
        "email": "Sai.Sumith@grlps.com",
        "time": "Fri Oct 16 18:57:48 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 13:27:48 2026 +0000"
      },
      "message": "TC-G-2.3 Updated yaml script as per test plan  (#74664)\n\n* Modify group management test cases for endpoint updates\n\nUpdated test steps to reflect changes in endpoint IDs and command parameters for group management operations.\n\n* Fix indentation for label in Test_TC_G_2_3.yaml\n\n* Fix formatting in Test_TC_G_2_3.yaml\n\n* Restyled by whitespace\n\n* Restyled by prettier-yaml\n\n* fixing the restyle patch\n\n* Delete pr-74664-restyled.zip\n\n* Delete pr-74664-restyled.patch\n\n---------\n\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e\nCo-authored-by: Kishok G \u003c133193761+KishokG@users.noreply.github.com\u003e"
    },
    {
      "commit": "cec04d9b0ebd13aac2f09e73289fcff88d3b5f46",
      "tree": "f5ad4ae2a90b09d74ea82b13390128a9199096b3",
      "parents": [
        "ecee22fdc5c8654048113edb86e45b967030cba4"
      ],
      "author": {
        "name": "Sumith D",
        "email": "Sai.Sumith@grlps.com",
        "time": "Fri Oct 16 18:56:34 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 09:26:34 2026 -0400"
      },
      "message": "[TC-SU-2.5, 2.7] Manual Yaml script are removed as Automated Python script are available (#74748)\n\n* Delete src/app/tests/suites/certification/Test_TC_SU_2_5.yaml\n\n* Delete src/app/tests/suites/certification/Test_TC_SU_2_7.yaml"
    },
    {
      "commit": "ecee22fdc5c8654048113edb86e45b967030cba4",
      "tree": "dedf91fd263db1b81f3a0a8efc9025bda8e5ace3",
      "parents": [
        "9cc395aa9cd4d2e9f12b92516d5649e9aa2d2cfd"
      ],
      "author": {
        "name": "Matthew Albert",
        "email": "matthew.albert@silabs.com",
        "time": "Fri Oct 16 08:22:14 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 12:22:14 2026 +0000"
      },
      "message": "[all-devices-app] Fix Zephyr OTA startup and OTA event reporting using the feature-owned cluster (#74691)\n\n* rework feature\n\n* Handle missing factory data in AppTaskBase\n\nLog an error when factory data is requested but not provided.\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\n\n* attributes based approach\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add comment for double mOTARequestorAttributes\n\n* third approach\n\n* cleanup diff\n\n* add silabs apptask\n\n* add a using\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI \u003c175728472+Copilot@users.noreply.github.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9cc395aa9cd4d2e9f12b92516d5649e9aa2d2cfd",
      "tree": "815e585dbaf67a7ac29d7649c15e30804cfaed3e",
      "parents": [
        "92e1ef02143e982e5e12e57c078181665061eded"
      ],
      "author": {
        "name": "Ludovic BOUÉ",
        "email": "lboue@users.noreply.github.com",
        "time": "Fri Oct 16 10:09:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 08:09:00 2026 +0000"
      },
      "message": "thermostat: implement Matter Schedule Configuration (MSCH) feature (#73700)\n\n* thermostat: port Matter Schedule Configuration (MSCH) onto the multi-delegate cluster split\n\nRe-implements the Schedules feature (ScheduleTypes, NumberOfSchedules,\nNumberOfScheduleTransitions, NumberOfScheduleTransitionPerDay,\nActiveScheduleHandle, Schedules, SetActiveScheduleRequest) as a\nThermostatSchedules feature class following the same pattern as\nThermostatPresets, now that #73355 split the monolithic ThermostatCluster\ninto per-feature delegate classes.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* thermostat: fix Copilot review findings on Schedules delegate/mock\n\n- ThermostatSchedulesDelegate::GetActiveScheduleHandle now validates the\n  caller-provided Nullable\u003cMutableByteSpan\u003e is non-null and large enough\n  before dereferencing it, instead of assuming it always is.\n- MockSchedulesDelegate::SetActiveScheduleHandle now returns the injected\n  error before mutating any state, instead of after.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* thermostat: fix CodeRabbit review findings on Schedules precommit and tests\n\n- MatchingPendingScheduleExists now returns the delegate\u0027s CHIP_ERROR\n  separately from the found/not-found result instead of swallowing it as\n  \u0027not found\u0027. PrecommitSchedules propagates that error as InvalidInState\n  instead of silently letting the atomic commit proceed.\n- TestScheduleStructWithOwnedMembers: guard GetScheduleHandle().Value()\n  calls with ASSERT_FALSE(...IsNull()) instead of EXPECT_FALSE or no guard\n  at all, so a real regression fails the assertion instead of aborting the\n  test binary.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* thermostat: remove unused Accessors.h include from ThermostatClusterSchedules.cpp\n\nPer CodeRabbit nitpick: the file only uses mDelegate, never any symbol\nfrom Accessors.h.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* thermostat: raise test coverage on the Schedules feature\n\nAdds 17 cluster-level tests (TestThermostatClusterSchedules.cpp) and 2\nstruct-level tests (TestScheduleStructWithOwnedMembers.cpp) targeting\nbranches the existing suite didn\u0027t reach: ScheduleTypes/pending-list reads,\nBusy on a concurrent writer, the AppendItem list-writing pattern, the\nremaining AppendPendingSchedule constraint checks (oversized preset\nhandles, the owned-storage transition hard cap, an unknown SystemMode, a\nbuilt-in flag on a new schedule, an unsupported SystemMode), the\nActiveScheduleHandle-not-in-pending precommit failure, delegate-error\npropagation from SetActiveScheduleRequest/CommitWrite, the\nno-per-day-limit-configured path, and (via new MockSchedulesDelegate\nfault-injection knobs) delegate lookup failures mid-loop in\nPrecommitSchedules and AppendPendingSchedule -- including the\nMatchingPendingScheduleExists error-propagation path fixed in a prior\ncommit on this branch.\n\nAlso removes ThermostatSchedules::GetDelegate(), which (unlike its Presets\ncounterpart, used by ThermostatSuggestions) had no caller.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* thermostat: avoid schedule handle collision with built-in schedules in example delegate\n\nThermostatSchedulesDelegate::AppendToPendingScheduleList assigned new\n(null-handle) schedules a handle derived from SystemMode, the same scheme\nInitializeSchedules() uses to seed the built-in schedule\u0027s handle. Since\nPrecommitSchedules matches schedules by handle only, a client could submit\na new, non-built-in schedule with the same SystemMode as the built-in one\nand have it silently take over the built-in schedule\u0027s handle -- passing\nthe \u0027built-in schedules cannot be removed\u0027 check while actually replacing\nit.\n\nAssign auto-generated handles from a monotonically increasing counter\nthat starts above any valid SystemModeEnum value instead, so it can never\ncollide with a SystemMode-derived built-in handle.\n\nReported-by: Copilot (PR review)\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* thermostat: propagate delegate errors from schedule lookup helpers instead of treating them as not-found\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Update ThermostatClusterSchedules.h\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* thermostat: fix remaining review findings on Schedules name-support lookup\n\nDistinguish a genuine delegate error from an unsupported system mode when\nchecking whether a schedule type supports names: ScheduleTypeSupportsNames()\nnow returns a CHIP_ERROR alongside the bool result, so AppendPendingSchedule\nreports InvalidInState on delegate failure instead of misclassifying it as\nConstraintError (matching how MaximumScheduleTypeCount() already handles this).\n\nAlso clarify the WriteAttribute log message: schedules are writable during an\nopen atomic write, so the previous \"not editable\" wording was misleading for\nthe case it actually covers (writes outside of an atomic write).\n\nAdds a test that exercises the new delegate-error-on-second-scan path via a\ncall-count-gated error injection on the schedule type mock.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Ludovic BOUÉ \u003c938089+lboue@users.noreply.github.com\u003e\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Hasty Granbery \u003cgranbery@google.com\u003e"
    },
    {
      "commit": "92e1ef02143e982e5e12e57c078181665061eded",
      "tree": "0c145a10fcfbf3165a3d254b4eb6ff16a19e4b3c",
      "parents": [
        "bc0ae032ebdb5aba4790a9984307f532dc54112e"
      ],
      "author": {
        "name": "shripad621git",
        "email": "79364691+shripad621git@users.noreply.github.com",
        "time": "Fri Oct 16 12:47:50 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 07:17:50 2026 +0000"
      },
      "message": "[ESP32] : Add thread support to esp32 zephyr lighting app on esp32c6. (#74680)\n\n* feat(esp32-zephyr): add thread support to lighting app\n\n- Add overlay-thread.conf for a thread-only build on ESP32-C6\n- Init OpenThread stack and register the Thread network commissioning driver\n- Move Wi-Fi buffer counts into Kconfig.defaults under WIFI_ESP32\n- Set NET_CONFIG_INIT_TIMEOUT\u003d0 to avoid a 30 s boot stall\n- Document thread build and ble-thread commissioning in README\n\n* Addressed review comments\n\n* Address review comments on esp32_zephyr Thread support\n\n- Fail at compile time if both CHIP_DEVICE_CONFIG_ENABLE_WIFI and\n  CHIP_DEVICE_CONFIG_ENABLE_THREAD are set, since the Zephyr platform\n  layer would then expect an initialized OpenThread instance that the\n  app never creates.\n- Drop CONFIG_WIFI/CONFIG_WIFI_ESP32 from the C6 board config; CHIP_WIFI\n  already selects them, so overlay-thread.conf only needs\n  CONFIG_CHIP_WIFI\u003dn to turn the Wi-Fi stack off.\n- Add the license header to overlay-thread.conf.\n- Cover the esp32_zephyr example under the esp32 platform maintainers"
    },
    {
      "commit": "bc0ae032ebdb5aba4790a9984307f532dc54112e",
      "tree": "826cc1ad45f20a4fd31a61269cfd63e2ac64bf69",
      "parents": [
        "be14adc3a72693c4ebf079b8dc8a03f0a1d54ff4"
      ],
      "author": {
        "name": "Jake Ororke",
        "email": "jororke@csa-iot.org",
        "time": "Thu Oct 15 23:03:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 06:03:18 2026 +0000"
      },
      "message": "[TC-IDM-9.1] Derive out-of-bounds values for enum-typed writable attributes (#73888)\n\n* [TC-IDM-9.1] Derive out-of-bounds values for enum-typed writable attributes\n\nAn enum\u0027s legal values live in its \u003cdataTypes\u003e definition rather than in a\n\u003cconstraint\u003e element on the attribute, so enum-typed writable attributes were\nskipped in step 2 and never probed.\n\nDerive the violating value from the union of the spec enum definition and the\ngenerated Python enum, choosing the smallest value neither defines. Legal values\nare a set rather than a range -- 30 enums in the 1.6.1 data model leave holes --\nso the violation may sit inside the span of defined values (SystemMode: 2) or\nbelow the smallest (ACLouverPosition: 0), not one past the largest.\n\nGraft the value onto the enum first: MatterIntEnum maps unrecognized values to\nkUnknownEnumValue on construction, which would otherwise encode a different\nvalue than the one under test.\n\n* Probe enum-typed command fields and fix sibling misattribution\n\n* Probe every gap of a sparse enum, not just the smallest as suggested by Amine\n\n* Deny-list LevelControl Move for constraint fuzzing\n\n* Deny-list LevelControl Move for constraint fuzzing - wording update\n\n* Count an unreadable read-back as an accepted constraint violation - suggestion from Amine\n\nA write answered with Success can leave an attribute holding a value the\nDUT\u0027s own encoder refuses to send, so the read-back comes back as a decode\nfailure. read_single_attribute_check_success turned that into a TestFailure,\nwhich TC-IDM-9.1 step 2 caught and counted as skipped: the attribute never\nreached accepted_attributes, the spec-version policy never saw it, and the\nprobe aborted before restoring the original value.\n\nRead back with read_single_attribute so the failure arrives as a value the\nloop can classify, restore the attribute, record a warning and count it as\naccepted. Reachable on any enum-typed writable attribute whose cluster\ndecodes without an EnsureKnownEnumValue guard.\n\n* Add Thermostat.ControlSequenceOfOperation and Identify.TriggerEffect to deny lists and provided reason with reference\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Updated code from comments and suggestions made by Cecille:\n\t- Stop treating real kUnknown* enum members as undefined in IDM probing\n\t- Find IDM probe enum types with the encoder\u0027s union unwrapping\n\t- Take IDM filler enum values from the DUT\u0027s spec, excluding obsolete items\n\t- Record accepted IDM constraint violations as errors on strict DUTs\n\n* Skip IDM constraint probes on command fields the DUT ignores for unsupported features\n\nEvaluate field conformance against the cluster FeatureMap, and add FEATURE_GATED_COMMAND_FIELDS for the Closure Control/Dimension fields the spec says to ignore without PS/SP. Fixes 40 false-positive errors on all-devices-app.\n\n* Deny-list MicrowaveOvenControl AddMoreTime for IDM constraint fuzzing until #74740 is fixed\n\n* Use Groups.ViewGroup in test_ungated_field_is_kept now that AddMoreTime is deny-listed\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "be14adc3a72693c4ebf079b8dc8a03f0a1d54ff4",
      "tree": "fd0404ab03fd18066d199d58790f4061ca5e60cd",
      "parents": [
        "062641d1694ec362795a5fb1a16385b92491c37e"
      ],
      "author": {
        "name": "marktrayer",
        "email": "m.trayer@samsung.com",
        "time": "Thu Oct 15 18:53:49 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 23:53:49 2026 +0000"
      },
      "message": "[Camera] Add Ambient Sensing Cluster instance to the Camera App (#74760)\n\n* Add Ambient Sensing Cluster instance to the Camera App\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Address code comments\n\n* Update PICS\n\n* Address code comments\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "062641d1694ec362795a5fb1a16385b92491c37e",
      "tree": "fd0b695012c65205926dfce580b781155c76ebf7",
      "parents": [
        "85d550b0c3c60d45dc27efd1cecbea4c83a2a404"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 15 14:15:00 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 14:15:00 2026 -0400"
      },
      "message": "Bump restyled-io/actions/setup from 4.4.29 to 4.4.32 (Auto-merged by bot)\n\nBumps [restyled-io/actions/setup](https://github.com/restyled-io/actions) from 4.4.29 to 4.4.32.\n- [Release notes](https://github.com/restyled-io/actions/releases)\n- [Commits](https://github.com/restyled-io/actions/compare/8467a405c8fafe4dff2f3c341e37b56bd1703c89...ab22a0751549a3e4fe782295458b303a55f04f76)\n\n---\nupdated-dependencies:\n- dependency-name: restyled-io/actions/setup\n  dependency-version: 4.4.32\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "85d550b0c3c60d45dc27efd1cecbea4c83a2a404",
      "tree": "5005e03ab893d82cfa3a98160430b931e8462c25",
      "parents": [
        "da7f279508b788cd79607e8796602418968342ca"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Thu Oct 15 10:39:54 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 17:39:54 2026 +0000"
      },
      "message": "TC-ICDB-3.1/3.2 - Add script argument to simulate DSLS transitions (#73566)\n\n* adds simulate_dsls_transitions script arg, updates 3.1 and 3.2\n\n* address pr comment"
    },
    {
      "commit": "da7f279508b788cd79607e8796602418968342ca",
      "tree": "2f1e56d7f44c18adc9a8b1005d223b6cbd5e0a54",
      "parents": [
        "e4de93699dfcc5eb67bc5d0618803deda506d811"
      ],
      "author": {
        "name": "Andrei Litvin",
        "email": "andy314@gmail.com",
        "time": "Thu Oct 15 13:27:19 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 17:27:19 2026 +0000"
      },
      "message": "[Code-driven clusters] Store ZAP-configured attribute defaults in flash instead of Ember RAM (#74614)\n\n* [Code-driven clusters] Store ZAP-configured attribute defaults in flash instead of Ember RAM\n\n* Address review feedback: add ICD instruction unit test and update comments\n\n* Address review feedback: include \u003calgorithm\u003e, static_assert test buffer length, remove orphan chef .matter\n\n* Move remaining code-driven cluster attributes out of Ember RAM\n\n* Complete code-driven cluster attribute migration to external/keepDefault storage\n\n* Move ClusterRevision/FeatureMap to external storage for ConcentrationMeasurement, ElectricalEnergyMeasurement, and ThreadNetworkDirectory\n\n* Restyle\n\n* zap regen\n\n---------\n\nCo-authored-by: Andrei Litvin \u003candreilitvin@google.com\u003e"
    },
    {
      "commit": "e4de93699dfcc5eb67bc5d0618803deda506d811",
      "tree": "2de2bc56951bd8fc4e104824398bbde0947c5d18",
      "parents": [
        "6a2d2599dc3fa4ae78321be91224d02bab4421cb"
      ],
      "author": {
        "name": "Boris Zbarsky",
        "email": "bzbarsky@apple.com",
        "time": "Thu Oct 15 13:24:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 17:24:24 2026 +0000"
      },
      "message": "[Darwin] Validate XPC server replies and callbacks in the XPC client (#74782)"
    },
    {
      "commit": "6a2d2599dc3fa4ae78321be91224d02bab4421cb",
      "tree": "35adfbafb1edf033720e90ef14fd0c51ba2c1446",
      "parents": [
        "22c312d87d595798fe90588855d905d1a0e00741"
      ],
      "author": {
        "name": "rob",
        "email": "rgoliver@google.com",
        "time": "Thu Oct 15 12:54:22 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:54:22 2026 +0000"
      },
      "message": "[app/server] Decouple CommissioningWindowManager from chip::Server (#74612)\n\n* [app/server] Decouple CommissioningWindowManager from chip::Server\n\nReplace CommissioningWindowManager::Init(Server *) and Server * mServer with an explicit CommissioningWindowManager::Context struct holding references to FailSafeContext, FabricTable, ExchangeManager, SessionManager, and (when BLE is enabled) BleLayer.\n\nAlso remove #include \u003capp/server/Server.h\u003e and Server::GetInstance() from CommissioningWindowManager, AdministratorCommissioningLogic.h, and the three commissioning cluster unit tests (TestAdministratorCommissioningCluster, TestGeneralCommissioningCluster, and TestOperationalCredentials).\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Move BLE preprocessor conditional outside SuccessOrExit macro\n\n* Bind local Context reference to avoid unchecked-optional-access warnings\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* review feedback\n\n* review feedback\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "22c312d87d595798fe90588855d905d1a0e00741",
      "tree": "c61041532333b602701af02153e4d08ae3e919aa",
      "parents": [
        "57b61a752c53d3bb35ac67671e64d53565aa7fc0"
      ],
      "author": {
        "name": "Lyudmila Kostanyan",
        "email": "119743330+LyudmilaKostanyan@users.noreply.github.com",
        "time": "Thu Oct 15 16:03:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:03:48 2026 +0000"
      },
      "message": "[all-devices-app] Add `Thermostat` device and `Thermostat UI Configuration` to `Temperature Sensor` (#74286)\n\n* Initial commit\n\n* Register Thermostat device\n\n  - Add Thermostat to the device factory and GN/CMake builds\n  - Update build targets and target snapshots\n  - Update supported device and cluster documentation\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix ESP32 link error by adding thermostat-server to CMake build\n\n* Fix ESP32 link error for Thermostat User Interface Configuration cluster\n\n* Remove thermostat-server from CMake build configuration\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Update README.md to format device options for improved readability\n\n* Fix TemperatureSensor architecture: Move optional UI cluster to simulation\n\nAccording to architectural guidelines, optional clusters should not be hardcoded in base device classes. This moves the ThermostatUserInterfaceConfigurationCluster out of the base TemperatureSensor class and into the IncreasingTemperatureSensor simulation via RegisterAdditionalClusters/UnregisterAdditionalClusters hooks. Also updates BUILD.gn.\n\n* Simulate running state and optional attributes in LoggingThermostat\n\n* Make Thermostat features configurable via Context\n\n* Enable Python and YAML CI tests for all-devices thermostat\n\n* Refactor Thermostat to extract optional UI/Groups clusters and fix initialization order\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Support Thermostat AutoMode, setpoint limits and refactor dependencies\n- Implement ThermostatAutoSetpoints::Delegate in LoggingThermostat to support AutoMode (TSTAT.S.F05) and return a valid MinSetpointDeadBand, satisfying TC_TSTAT_2_2.\n- Implement getters and setters for optional setpoint limits in LoggingThermostat to support dynamic limits and resolve UNSUPPORTED_ATTRIBUTE errors in TC_TSTAT_2_1.\n- Enable ScheduleProgrammingVisibility in ThermostatUserInterfaceConfiguration cluster for LoggingThermostat and IncreasingTemperatureSensor to satisfy TSUIC tests.\n- Refactor Thermostat base class Context and includes to decouple unused dependencies, moving groups-server and thermostat-user-interface-configuration-server to the logging target.\n- Add ALL_DEVICES_DEVICE_THERMOSTAT to Zephyr\u0027s Kconfig.devices to enable compiling the thermostat device type on Zephyr platform.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Add preset and setpoint hold delegates\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Refactor setpoint limit validation to ensure proper constraints for heating and cooling limits\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Fix handle type in AppendToPendingPresetList to ensure proper range and prevent overflow\n\n* Support SystemMode Auto, register missing optional attributes and simplify startup validation\n\n- Accept SystemModeEnum::kAuto when AutoMode is enabled and simulate running\n  mode/state in Auto.\n- Enable ThermostatRunningMode (with AutoMode) and SetpointHoldExpiryTimestamp\n  optional attributes so the values written by delegates are registered.\n- Replace per-limit startup sanity checks with a single Setpoints::Valid()\n  check that resets limits and setpoints to defaults when inconsistent.\n- Remove redundant CriticalFreeze/Overheat delegate overrides; the base\n  setpoint delegates already default to the same values.\n- Remove the in-PR history comment from Thermostat.h.\n- Drop the duplicated ThermostatUserInterfaceConfigurationCluster.cpp from\n  ALL_DEVICES_CLUSTER_SOURCES; it is already built in libCHIP.\n\n* Rename Thermostat device class to FullThermostat\n\nThe device/types/\u003cType\u003e classes are expected to stay generic for all devices\nof the type. This composition requires the optional Presets and Hold\ndelegates, so name it FullThermostat to make that explicit.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* Hardcode the FullThermostat feature set\n\nThermostatClusterType registers all attributes and commands implied by the\nheating, cooling, AutoMode and Presets features at compile time, so the\nfeature flags can no longer come from Context: a narrower FeatureMap would\ndisagree with the registered cluster surface.\n\nAlso initialize changed in SetRunningState before any return.\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e\nCo-authored-by: Elen777300 \u003celensoghomonyan@gmail.com\u003e\nCo-authored-by: Elen Soghomonyan \u003c43118262+Elen777300@users.noreply.github.com\u003e"
    },
    {
      "commit": "57b61a752c53d3bb35ac67671e64d53565aa7fc0",
      "tree": "9b0407ad8d568f27191972ecad93468c594e831d",
      "parents": [
        "62e87949448417e136792466b9873b01918a4412"
      ],
      "author": {
        "name": "rob",
        "email": "rgoliver@google.com",
        "time": "Thu Oct 15 11:07:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 15:07:53 2026 +0000"
      },
      "message": "[all-devices-app] Implement WaterValveAccessor and support OOB cluster writes (#74755)\n\n- Implement WaterValveAccessor taking ValveConfigurationAndControlCluster and EndpointId to handle SetAttribute actions for CurrentState and CurrentLevel.\n- Track and preserve non-zero open level across open/close transitions, including when opened via in-band commands or closed via zero-level OOB writes.\n- Apply cluster DefaultOpenDuration on OOB open operations.\n- Include explicit DataModel decode and nullable headers.\n- Register WaterValveAccessor via OOBAccessors and OOBAccessorHook.\n- Add comprehensive unit test suite TestWaterValveAccessor covering state transitions, level persistence, default open duration, error handling, and wrong cluster/endpoint rejection."
    },
    {
      "commit": "62e87949448417e136792466b9873b01918a4412",
      "tree": "8757b0c6dafe4cacfd638ecf01e09f97c721a075",
      "parents": [
        "bdf9ddc34cbc30a9638f56c4e6050d52812b8a8b"
      ],
      "author": {
        "name": "Shreyas Balakrishna Bhandare",
        "email": "bhandares@google.com",
        "time": "Thu Oct 15 06:44:00 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 13:44:00 2026 +0000"
      },
      "message": "[cloudbuild] Unset JAVA_HOME for C++ host builds in chef.yaml and examples.yaml (#74783)"
    },
    {
      "commit": "bdf9ddc34cbc30a9638f56c4e6050d52812b8a8b",
      "tree": "54e9b72d4e5c3d913ddf7ca7a3da9ffcb817582a",
      "parents": [
        "43c0a7d29f8d251d3eef0a7333d3b68e421eed81"
      ],
      "author": {
        "name": "Shreyas Balakrishna Bhandare",
        "email": "bhandares@google.com",
        "time": "Thu Oct 15 06:43:55 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 09:43:55 2026 -0400"
      },
      "message": "[Chef] Fix clang arm64 warnings in Thermostat delegates and stubs.cpp (#74784)\n\n* [Chef] Fix clang arm64 warnings in Thermostat delegates and stubs.cpp\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "43c0a7d29f8d251d3eef0a7333d3b68e421eed81",
      "tree": "c739cc3b9881b0c27a70e8f49a4d9a6d8cd008e5",
      "parents": [
        "11ed323e911f62097412b20d620f1e548c796020"
      ],
      "author": {
        "name": "Daniel Nordahl",
        "email": "167216984+gulbeta@users.noreply.github.com",
        "time": "Thu Oct 15 09:48:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 07:48:35 2026 +0000"
      },
      "message": "Adds water tank level monitoring all clusters example app (#73992)\n\n* WaterTankLevelMonitoring: Added water tank level montoring to all clusters app\n\n* WaterTankLevelMonitoring: Added example app based on HEPA/Activated-Carbon Filter Monitoring\n\n* WaterTankLevelMonitoring: Add WaterTankLevelMonitoring into the shared resource-monitoring-\nserver\n\nWires WaterTankLevelMonitoring into the shared resource-monitoring-\nserver (it shares the same abstract Resource Monitoring shape as\nHEPA/Activated Carbon Filter Monitoring), registers it as code-driven\nin zap codegen config, and instantiates it in all-clusters-app.\n\n* Fixed review comments.\n\n* Regenerate WaterTankLevelMonitoring accessors"
    },
    {
      "commit": "11ed323e911f62097412b20d620f1e548c796020",
      "tree": "624fe72dd1758da0168c972a31d0061f8546921d",
      "parents": [
        "6a84e2158c25f4d8d30b9b4fe7077f8d7a297c70"
      ],
      "author": {
        "name": "fengming-ye",
        "email": "142978240+fengming-ye@users.noreply.github.com",
        "time": "Thu Oct 15 16:31:29 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 07:31:29 2026 +0000"
      },
      "message": "Fix TestSetUpCodePairer build on LwIP platforms (#74745)\n\nOn LwIP platforms, InterfaceId::PlatformType is\n`struct netif *` (a pointer), not an integer. The existing\nstatic_cast\u003cPlatformType\u003e(unsigned int) is invalid for pointer types.\n\nUse a static array of netif structs to provide valid pointers on LwIP.\nA bare integer-to-pointer cast would compile but crash at runtime if\nany code path dereferences the pointer (e.g. GetInterfaceName accessing\nnetif-\u003ename).\n\nFixes #74744"
    },
    {
      "commit": "6a84e2158c25f4d8d30b9b4fe7077f8d7a297c70",
      "tree": "570d5b8bae0ecd933a1651a68df2ee176796f7f7",
      "parents": [
        "636ce6bf723522d1183f374ef9fa580b266d97e2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 15 02:20:48 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 02:20:48 2026 -0400"
      },
      "message": "Bump pydata-sphinx-theme from 0.22.0 to 0.23.0 (Auto-merged by bot)\n\nBumps [pydata-sphinx-theme](https://github.com/pydata/pydata-sphinx-theme) from 0.22.0 to 0.23.0.\n- [Release notes](https://github.com/pydata/pydata-sphinx-theme/releases)\n- [Changelog](https://github.com/pydata/pydata-sphinx-theme/blob/main/RELEASE.md)\n- [Commits](https://github.com/pydata/pydata-sphinx-theme/compare/v0.22.0...v0.23.0)\n\n---\nupdated-dependencies:\n- dependency-name: pydata-sphinx-theme\n  dependency-version: 0.23.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "636ce6bf723522d1183f374ef9fa580b266d97e2",
      "tree": "22c212ceb9ae0522c567c95a9016a3cb155a465e",
      "parents": [
        "f05cff081a32d5d7f5eb54797f4728d4bcb27362"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 15 02:20:33 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 02:20:33 2026 -0400"
      },
      "message": "Bump restyled-io/actions/run from 4.4.29 to 4.4.32 (Auto-merged by bot)\n\nBumps [restyled-io/actions/run](https://github.com/restyled-io/actions) from 4.4.29 to 4.4.32.\n- [Release notes](https://github.com/restyled-io/actions/releases)\n- [Commits](https://github.com/restyled-io/actions/compare/8467a405c8fafe4dff2f3c341e37b56bd1703c89...ab22a0751549a3e4fe782295458b303a55f04f76)\n\n---\nupdated-dependencies:\n- dependency-name: restyled-io/actions/run\n  dependency-version: 4.4.32\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f05cff081a32d5d7f5eb54797f4728d4bcb27362",
      "tree": "17f6e17b7111f164885a7f7f89981c8de5941f55",
      "parents": [
        "575abe13d1aa289edb815bd88ca5ffa18d11b308"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 14 20:30:04 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 20:30:04 2026 -0400"
      },
      "message": "Bump the codeql-action group across 1 directory with 3 updates (Auto-merged by bot)\n\nBumps the codeql-action group with 3 updates in the / directory: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).\n\n\nUpdates `github/codeql-action/init` from 4.38.2 to 4.38.3\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)\n\nUpdates `github/codeql-action/analyze` from 4.38.2 to 4.38.3\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)\n\nUpdates `github/codeql-action/upload-sarif` from 4.38.2 to 4.38.3\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/2892aa5e19bbd11bc0cff5427e3b750a04d9e3c2...24c54180a607b1449ed407dd24f251e4e9147c8d)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action/analyze\n  dependency-version: 4.38.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: codeql-action\n- dependency-name: github/codeql-action/init\n  dependency-version: 4.38.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: codeql-action\n- dependency-name: github/codeql-action/upload-sarif\n  dependency-version: 4.38.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n  dependency-group: codeql-action\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "575abe13d1aa289edb815bd88ca5ffa18d11b308",
      "tree": "e4d46896817ee8c4cff27cb98e24db4e677c673f",
      "parents": [
        "47b152e953b85ab3f84736715adaa1eba504bfc1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 14 20:29:49 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 20:29:49 2026 -0400"
      },
      "message": "Bump ossf/scorecard-action from 2.4.4 to 2.5.0 (Auto-merged by bot)\n\nBumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.4 to 2.5.0.\n- [Release notes](https://github.com/ossf/scorecard-action/releases)\n- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)\n- [Commits](https://github.com/ossf/scorecard-action/compare/2d1146689b8cda280b9bc96326124645441f03bc...fa7117db83c52d787ae5a89f350999701505d78e)\n\n---\nupdated-dependencies:\n- dependency-name: ossf/scorecard-action\n  dependency-version: 2.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "47b152e953b85ab3f84736715adaa1eba504bfc1",
      "tree": "1322c32e3212c43a53912de7e4fd67e67bbb9ee4",
      "parents": [
        "83041994b4f30813aeb7480832966cbd597a9dc2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 14 20:29:24 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 20:29:24 2026 -0400"
      },
      "message": "Bump actions/upload-artifact from 7.0.1 to 7.0.2 in /.github/actions/bootstrap (Auto-merged by bot)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "83041994b4f30813aeb7480832966cbd597a9dc2",
      "tree": "cd0c22c4b057ba462dd20321032a0f33b6bf6adf",
      "parents": [
        "be7657fcc5dc5d41d020740523eed630769e5d9c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 14 20:29:10 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 20:29:10 2026 -0400"
      },
      "message": "Bump actions/upload-artifact from 7.0.1 to 7.0.2 in /.github/actions/upload-size-reports (Auto-merged by bot)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "be7657fcc5dc5d41d020740523eed630769e5d9c",
      "tree": "a7baedea59d8c90e58075a578f1a7aa39e099a3d",
      "parents": [
        "1c9f3142e82ee25b0e7774f3488211574a597cc6"
      ],
      "author": {
        "name": "Amine Alami",
        "email": "43780877+Alami-Amine@users.noreply.github.com",
        "time": "Wed Oct 14 20:02:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 18:02:37 2026 +0000"
      },
      "message": "[CI] Rebalance host unit-test jobs and document what runs when (#74386)\n\n* [CI] Rebalance host unit-test jobs\n\n- Move the ICD/ARL/rotating-id (all_features) unit tests to nightly.\n- Drop the gcc \u0027main\u0027 unit-test job; gcc_debug in build.yaml now runs\n  the unit tests on PRs and builds the silabs platform tests.\n- Run mbedTLS ASan unit tests next to PSA, gated on crypto-related\n  paths, with the path filter ahead of bootstrap.\n\n* [CI] Comment chip_build_all_platform_tests in gcc_debug\n\n* [CI] Bootstrap gcc_debug with unit_tests submodules\n\n* [CI] Run gcc_debug no-logging tests on PRs only\n\n* [CI] Run gcc_debug no-logging build on PRs only\n\n* [CI] Bootstrap crypto backend job without unit_tests submodules\n\n* [CI] Document host unit-test CI coverage\n\nAdd docs/ci-cd/host_unit_tests.md, a table of which unit-test\nconfigurations run on PRs, master pushes and nightly, and why.\n\nscripts/tools/list_unit_test_steps.py lists every workflow step that\nruns unit tests into docs/ci-cd/host_unit_tests.steps.txt; --check\nreports when the workflows no longer match the snapshot and --update\nregenerates it.\n\n* [CI] Drop unused msan case from the master sanitizer loop\n\nThe loop only iterates asan, tsan and ubsan; MSan runs in nightly.yaml.\n\n* [CI] Check the unit-test steps snapshot in lint\n\n* [CI] Revert unit-test steps snapshot to before the msan change\n\nTemporary: shows the lint check failing on a stale snapshot.\n\n* [CI] Regenerate unit-test steps snapshot\n\nPicks up the msan removal and the nightly crypto-backend ASan job from\nmaster, and adds that job to host_unit_tests.md.\n\n* [CI] Rename unit-test steps snapshot and mark it generated\n\nhost_unit_tests.generated.txt now starts with a header naming the\nscript that writes it.\n\n* [CI] Stop the crypto job at the first failed backend\n\nMatches the other multi-build jobs; mbedTLS no longer builds next to a\nfailed PSA output.\n\n* [CI] Record path triggers and path filters in the unit-test steps snapshot\n\nThe snapshot now lists paths/paths-ignore on workflow triggers and the\ndorny/paths-filter lists that each test step\u0027s condition reads, so a\nchange to either fails the lint check.\n\n* [CI] Record full trigger config in the unit-test steps snapshot\n\nEvery trigger setting except inputs is now written out (types,\nbranches-ignore, schedule cron, ...), replacing the per-key list.\n\n* Gate master pushes of the crypto backend unit tests on the path filter\n\nnightly.yaml already runs the PSA and mbedTLS unit tests on the full\ntree every night, so running them on every master push repeated that\nwork. Master pushes now follow the same crypto path filter as PRs.\nRelease-branch pushes still always run, since scheduled workflows do\nnot run on release branches.\n\ndorny/paths-filter calls git on push events and runs before bootstrap,\nso mark the workspace as a safe git directory first.\n\n* Point the nightly crypto backend comment at host_unit_tests.md\n\n* Apply the crypto path filter to release-branch pushes as well\n\n* Drop the safe.directory step before dorny/paths-filter\n\nThe pinned dorny/paths-filter (v4.0.3) already retries git with a\ntemporary safe.directory entry when the workspace is owned by another\nuser (dorny/paths-filter#317), so the extra step is not needed.\n\n* Reset gn args when a later gn_gen.sh call has none\n\nA job that runs gn_gen.sh with --args and later runs it with default\narguments kept the earlier arguments in the snapshot.\n\n* Point the crypto and various-features unit-test jobs at host_unit_tests.md\n\n* Reword the host_unit_tests.md pointer comments"
    },
    {
      "commit": "1c9f3142e82ee25b0e7774f3488211574a597cc6",
      "tree": "a5eafcdec749d8e112723f793d94e535c4d26fd0",
      "parents": [
        "c73c09fe74a78f349945b80b5d8877b6a369ff0e"
      ],
      "author": {
        "name": "SAYON DEEP",
        "email": "sayondeep0710@rediffmail.com",
        "time": "Wed Oct 14 22:39:38 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 17:09:38 2026 +0000"
      },
      "message": "[Camera] Support the Analysis stream usage and adapt the AVSM tests (#74316)\n\n* [Camera] Support the Analysis stream usage in the Linux camera\n\nAnalysis was missing from the supported stream usages and priorities, so\nVideoStreamAllocate with StreamUsage\u003dAnalysis (sent by an AV Analysis\nNode) was rejected with INVALID_IN_STATE.\n\n* [AVSM] Skip TC_AVSM_2_11 step 4 when the DUT supports every stream usage\n\n* [AVSM] Skip TC_AVSM_2_5 step 9 when StreamUsagePriorities holds every usage\n\n* [AVSM] Skip TC_AVSM_2_7 step 18 when StreamUsagePriorities holds every usage\n\n* [AVSM] Let TC_AVSM_2_11 step 4 probe with the Internal usage\n\n* [AVSM] Narrow StreamUsagePriorities before allocating in TC_AVSM_2_5 and 2_7"
    },
    {
      "commit": "c73c09fe74a78f349945b80b5d8877b6a369ff0e",
      "tree": "65bbee0519aaac6d6c9765a12ce3e7b426932e26",
      "parents": [
        "3a68e87b0680ab3ffe09f90ac2899e7d02937cfb"
      ],
      "author": {
        "name": "sarthak shaha",
        "email": "sarthak.shaha@silabs.com",
        "time": "Wed Oct 14 11:21:53 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 15:21:53 2026 +0000"
      },
      "message": "[SL-UP][SL-ONLY] MATTER-6633 : Update the Comment (#1103) (#74765)\n\nUpdate the Comment"
    },
    {
      "commit": "3a68e87b0680ab3ffe09f90ac2899e7d02937cfb",
      "tree": "b623b0f7f7a49a2668281808ea4d1da8951e22a3",
      "parents": [
        "56b49408cf43a6f17a0c51e003ee89a594ee9396"
      ],
      "author": {
        "name": "yunhanw-google",
        "email": "yunhanw@google.com",
        "time": "Wed Oct 14 07:14:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 14:14:16 2026 +0000"
      },
      "message": "[Android] Add Thread dataset fetch from system with optional GMS support (#74761)\n\n* [Android] Add Thread dataset fetch from system with optional GMS support\n\n- Add a \"Fetch dataset from system Thread manager\" button to\n  EnterNetworkFragment for Thread provisioning. It populates the channel,\n  PAN ID, extended PAN ID and network key fields from the active\n  operational dataset of the phone\u0027s Thread network.\n- Fetch credentials via the GMS ThreadNetworkClient (with the\n  preferred-credentials consent flow) when Google Play services is\n  available, and otherwise fall back to the Android 14+\n  ThreadNetworkManager system service. The GMS path is only taken when\n  GoogleApiAvailability reports SUCCESS; otherwise GoogleApiManager keeps\n  the request pending behind a \"Get Google Play services\" resolution and\n  the fetch would never complete or fall back.\n- The ThreadNetworkController APIs are system APIs guarded by\n  THREAD_NETWORK_PRIVILEGED, so the system-service path only works when\n  CHIPTool is installed as a privileged app. Check the permission up front\n  and surface the underlying error instead of an opaque reflection failure.\n- Add the matterEnableGms Gradle property (default true). It selects the\n  src/gms or src/nogms source set for GmsThreadDatasetHelper, so builds\n  with matterEnableGms\u003dfalse do not link play-services-threadnetwork.\n- Ignore results delivered after the fragment view is destroyed and\n  unregister the pending dataset callback in onDestroyView.\n\n* [Android] CHIPTool: address review comments on Thread dataset fetch\n\n- Replace getAllCredentials() with getAllActiveCredentials().\n  getAllCredentials() returns only credentials added by the calling app,\n  which CHIPTool never adds, so taking its first entry could only return\n  nothing or an unrelated stored network. getAllActiveCredentials()\n  returns every active Thread network reachable through nearby border\n  routers after a single consent prompt; when more than one is shared the\n  user picks one from a list (network name, extended PAN ID, channel).\n  Fall back to getPreferredCredentials() when it is unavailable (e.g. the\n  phone is not on Wi-Fi).\n- Bump play-services-threadnetwork to 16.2.1, the first version with\n  getAllActiveCredentials().\n- Skip launching the consent prompt when the fragment view no longer\n  exists, since the result would be discarded."
    },
    {
      "commit": "56b49408cf43a6f17a0c51e003ee89a594ee9396",
      "tree": "74417c9456f2ea7dbda7c9fd4e12ea6844e68904",
      "parents": [
        "344bf031d9fc20fab316e6de0573e1e196ccbbea"
      ],
      "author": {
        "name": "rob",
        "email": "rgoliver@google.com",
        "time": "Wed Oct 14 10:04:37 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 14:04:37 2026 +0000"
      },
      "message": "[all-devices-app] Battery Power Source OOB Accessor (#74754)\n\n* [all-devices-app] Implement BatteryPowerSourceAccessor and support OOB cluster writes\n\n- Implement BatteryPowerSourceAccessor to handle SetAttribute actions for BatPercentRemaining and BatVoltage.\n- Unrecognized attributes return std::nullopt to allow downstream handlers and data model provider fall-through.\n- Register BatteryPowerSourceAccessor via OOBAccessors and OOBAccessorHook.\n- Add comprehensive unit test suite TestBatteryPowerSourceAccessor using typed BuildSetAttributeRequest helpers and InMemoryOOBAccessorRegistry dispatch.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "344bf031d9fc20fab316e6de0573e1e196ccbbea",
      "tree": "aa68d3946e7ae3f87b3276ef43d4ae9cb16a7a76",
      "parents": [
        "82de9f6dacf95e24e0bbd72b454393996d59ef07"
      ],
      "author": {
        "name": "fengming-ye",
        "email": "142978240+fengming-ye@users.noreply.github.com",
        "time": "Wed Oct 14 21:18:03 2026 +0900"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 08:18:03 2026 -0400"
      },
      "message": "[NXP] Add ThreadStackManagerImpl test helpers for unit test build (Auto-merged by platform-bot) (#74762)\n\nAdd SetThreadEnabledForTest, SetThreadAttachedForTest, and\nResetThreadStateForTest to NXP ThreadStackManagerImpl, matching the\nLinux platform interface. These are guarded by\nCONFIG_BUILD_FOR_HOST_UNIT_TEST and needed by TestICDManager.cpp\nwhich calls these methods when both CONFIG_BUILD_FOR_HOST_UNIT_TEST\nand CHIP_DEVICE_CONFIG_ENABLE_THREAD are defined.\n\nWithout these methods, the NXP MCXW72 (Thread) unit test build fails:\n  error: \u0027class ThreadStackManagerImpl\u0027 has no member named\n  \u0027SetThreadEnabledForTest\u0027"
    },
    {
      "commit": "82de9f6dacf95e24e0bbd72b454393996d59ef07",
      "tree": "394ef091309e318b6d2b866385146680b14c35ca",
      "parents": [
        "61485549cbf9b80a894f256bcb0e15060677dba9"
      ],
      "author": {
        "name": "yunhanw-google",
        "email": "yunhanw@google.com",
        "time": "Wed Oct 14 00:14:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 07:14:11 2026 +0000"
      },
      "message": "[Platform][Linux] Fix GLib main loop guards when disabled with WiFi enabled (#74753)"
    },
    {
      "commit": "61485549cbf9b80a894f256bcb0e15060677dba9",
      "tree": "9e98ae1428164f63f730dfb81345388561b52eab",
      "parents": [
        "2d024f624375005280eee94ba05d98d7b0379dea"
      ],
      "author": {
        "name": "Kiel Oleson",
        "email": "kielo@apple.com",
        "time": "Tue Oct 13 13:47:41 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 20:47:41 2026 +0000"
      },
      "message": "Darwin: allow guarding enums and bitmaps that belong to private cluster extensions (#74734)\n\nPrivate extension attributes and commands are routed by manufacturerCode,\nbut enums and bitmaps have no manufacturer code, so an extension\u0027s types\nare always emitted unguarded into MTRBaseClusters.h.\n\nAdd a DarwinPrivateExtensionTypes config list (Cluster::TypeName). Listed\nenums and bitmaps are wrapped in the same MTR_INCLUDE_CLUSTER_EXTENSION_*\nguard as the rest of that cluster\u0027s private extension. The list is empty\nhere, so generated output is unchanged."
    },
    {
      "commit": "2d024f624375005280eee94ba05d98d7b0379dea",
      "tree": "17fe62e61f21d728524207c5fe13ae5f4363d594",
      "parents": [
        "d8fb31a1ae9de2afe382f311b8dc10298c221c8a"
      ],
      "author": {
        "name": "Hrishikesh Dhayagude",
        "email": "dhrishi@users.noreply.github.com",
        "time": "Wed Oct 14 01:28:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 19:58:18 2026 +0000"
      },
      "message": "[ESP] Add support of ESP-Mosaico for all-devices-app (#74701)\n\n* all-devices-app: put the LVGL display and chime behind a board layer\n\nThe LVGL renderer called the CoreS3 BSP directly. Route the panel, lock and\nbrightness calls through DisplayBoard, with one backend per board, and keep\nthe chime\u0027s tone synthesis in TonePlayingChime so a board only supplies its\naudio output path.\n\nAlso fix the build with ESP-IDF 6.2: GCC 16 warns on partial designated\ninitializers, and LVGL 9.5 has no lv_obj_set_send_draw_task_events().\n\n* all-devices-app: support the ESP-Mosaico (ESP32-S31)\n\nAdd the board choice with its DisplayBoard and chime backends, the Mosaico\ndefaults and the README instructions. The build takes the esp-mosaico-bsp\ncomponent from the checkout ESP_MOSAICO_BSP_PATH points at.\n\nThe board\u0027s USB-C port is the USB OTG controller, so the application runs a\nTinyUSB CDC console on it that also answers esptool\u0027s USB Serial/JTAG reset\nsequence; logs and idf.py flash work over the one cable.\n\nSmall allocations go to PSRAM on this board: with the 4 KB internal threshold\nthe CHIP stack, LVGL and the NimBLE host left about 24 KB of internal RAM and\nthe BLE controller dropped the link during commissioning.\n\n* all-devices-app: redesign the LVGL UI and show commissioning progress\n\nA theme and a small design system give every screen one finish and scale\nbetween 320x240 and 480-class panels. The navigation bar shows breadcrumbs\nand live Wi-Fi, BLE and fabric indicators. A CommissioningMonitor turns\nplatform events into a status line on the QR screen and returns to Home on\nsuccess; once a fabric exists that screen shows a Commissioned notice, since\na later commissioning window carries its own passcode. Boards report an edge\ninset so rounded panels do not clip the Home crumb.\n\n* all-devices-app: reword possessives the spelling check rejects\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* all-devices-app: compile the Mosaico USB console only for the Mosaico\n\nmain/ is compiled per directory for every board, so the console ended up in\nthe CoreS3 and M5Stack builds, which have neither TinyUSB nor the S31 registers.\nMove it next to the other per-board sources.\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n* all-devices-app: address review comments\n\nRelease the restart timer and shutdown handler when the USB console\nfails to come up, rebuild the commissioning codes screen when the\nfabric count changes while it is open, and do not report a BLE close\nas a failure once network credentials have been received.\n\nReset the styles of layout rows inside cards so they do not inherit the\ncard shadow, and use a bullet in the Home caption since Montserrat has\nno middle dot.\n\n* all-devices-app: drop the Mosaico revision list and fix a status table row\n\nThe BSP handles board revisions itself, so the Kconfig help and README\ndo not need to list them. The BLE close is only a failure before\ncredentials arrive, which the display README now says.\n\n* all-devices-app: trim the Mosaico documentation\n\nDrop the Kconfig help, the duplicate repository table, the esptool retry\nnote and the shell remark from the README, and cut the display README\nback to what the code does.\n\n* all-devices-app: reword a line the spelling check rejects\n\n---------\n\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d8fb31a1ae9de2afe382f311b8dc10298c221c8a",
      "tree": "59b93335cc13fdc53a4d4dfa8b0027459dd8325d",
      "parents": [
        "f368e4862fd0c00f2c3a4931e50ea235f7762a30"
      ],
      "author": {
        "name": "Raul Marquez",
        "email": "130402456+raul-marquez-csa@users.noreply.github.com",
        "time": "Tue Oct 13 11:43:18 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 18:43:18 2026 +0000"
      },
      "message": "TC-DLOG-2.1 - Add python automation (#74140)\n\n* Python BDX: end and release a rejected transfer (fixes #74138)\n\n* adds dlog 2.1 automation script\n\n* removes yaml\n\n* cr comment\n\n* flips MCORE.BDX.Initiator to 1\n\n* pr comments\n\n* cr comment\n\n* step adjust\n\n* pr comments"
    },
    {
      "commit": "f368e4862fd0c00f2c3a4931e50ea235f7762a30",
      "tree": "1bbb5a9dfc59090e814245807b4279a3aeb44173",
      "parents": [
        "cf0fe80139a6473a4bc1d484f2c28f8c162c0268"
      ],
      "author": {
        "name": "Amine Alami",
        "email": "43780877+Alami-Amine@users.noreply.github.com",
        "time": "Tue Oct 13 20:19:48 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 18:19:48 2026 +0000"
      },
      "message": "[Thermostat] Enforce Atomic Write State rules in AtomicRequest (#74411)\n\n* [Thermostat] Reject AtomicRequest outside a CASE session\n\nAn AtomicRequest received on a groupcast session was accepted and the\ngroup message source node ID recorded as the Atomic Writer ID. The spec\ndefines the Atomic Writer ID of a groupcast session context as invalid,\nand requires INVALID_COMMAND for an AtomicRequest with an invalid Atomic\nWriter ID or without an accessing fabric (AtomicRequest, Effect on\nReceipt). Return INVALID_COMMAND for any AtomicRequest that does not\narrive on a CASE session, for all request types.\n\nGetSourceScopedNodeId still mapped a group session to its source node\nID, following spec text that was replaced before 1.4. Remove that\nbranch; it is no longer reachable from AtomicRequest.\n\n* [Thermostat] Check the Atomic Writer ID on AtomicRequest commit and rollback\n\nCommitWrite and RollbackWrite were accepted from any client naming the\nsame attribute set as the open atomic write, not only from the client\nassociated with it. The spec requires INVALID_IN_STATE when the client\nis not associated with a matching Atomic Write State, which includes\nthe Atomic Writer ID and accessing fabric. Compare the recorded writer\nagainst the requesting session, as BeginWrite already does.\n\n* [Thermostat] Do not replace an open atomic write on BeginWrite\n\nThe cluster holds a single Atomic Write State, but BeginWrite only\nreported BUSY for attributes already in the open atomic write. A\nBeginWrite from another client for a different atomic attribute passed\nevery check and replaced the open state, so the first client\u0027s pending\nwrites were never rolled back and its CommitWrite failed.\n\nReturn RESOURCE_EXHAUSTED for those attributes instead, as the spec\nrequires when the server cannot pend writes to an attribute."
    },
    {
      "commit": "cf0fe80139a6473a4bc1d484f2c28f8c162c0268",
      "tree": "d48b927f57fe0560b74af2b8e66d73b58594e91d",
      "parents": [
        "cd0318dbd32b1c539b5f604aa061f3949a073ebe"
      ],
      "author": {
        "name": "Arghya Dutta",
        "email": "arghya.dutta@silabs.com",
        "time": "Tue Oct 13 23:48:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 14:18:08 2026 -0400"
      },
      "message": "[Silabs] Add support for BRD4357C (Auto-merged by platform-bot) (#74670)"
    },
    {
      "commit": "cd0318dbd32b1c539b5f604aa061f3949a073ebe",
      "tree": "f7720a2f8f30693600cba12091a325dec7c5b4d2",
      "parents": [
        "316225b525874b13407e285807c9c46d890b9619"
      ],
      "author": {
        "name": "Moises Terrones",
        "email": "moises.tersal@gmail.com",
        "time": "Tue Oct 13 16:53:54 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 16:53:54 2026 +0000"
      },
      "message": "Update cluster with complete Alchemy metadata. (#74592)\n\n* Update clusters with complete metadata\n\n* Revert changes to zcl files\n\n* Restyled by whitespace\n\n* Restyled by prettier-json\n\n---------\n\nCo-authored-by: Restyled.io \u003ccommits@restyled.io\u003e"
    },
    {
      "commit": "316225b525874b13407e285807c9c46d890b9619",
      "tree": "c5e612690ec86776ee8e0b67fad65c666af53e1c",
      "parents": [
        "c3f0728af9ceb57edfd0de033d9812ecf8940d1f"
      ],
      "author": {
        "name": "Hasty Granbery",
        "email": "granbery@google.com",
        "time": "Tue Oct 13 09:25:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 16:25:01 2026 +0000"
      },
      "message": "[HVAC] Implement Thermostat test 2.3 (#74458)\n\n* [HVAC] Implement Thermostat test 2.3\n\n* Simplify some of the PICS checks\n\n* Apply batched suggestions from code review\n\nCo-authored-by: René Josefsen \u003c69624991+ReneJosefsen@users.noreply.github.com\u003e\n\n* [pre-commit.ci] auto fixes from pre-commit.com hooks\n\nfor more information, see https://pre-commit.ci\n\n---------\n\nCo-authored-by: René Josefsen \u003c69624991+ReneJosefsen@users.noreply.github.com\u003e\nCo-authored-by: pre-commit-ci[bot] \u003c66853113+pre-commit-ci[bot]@users.noreply.github.com\u003e"
    }
  ],
  "next": "c3f0728af9ceb57edfd0de033d9812ecf8940d1f"
}
