Skip to content

Sync csa branch with main - #1280

Merged
sarthak shaha (Sarthak-Shaha) merged 50 commits into
mainfrom
automation/update_main
Oct 19, 2026
Merged

sarthak shaha (Sarthak-Shaha) merged 50 commits into
mainfrom
automation/update_main

Conversation

@silabs-matter-ci-bot

Copy link
Copy Markdown
Contributor

This PR syncs the csa branch with the main branch.

PR MUST BE MERGED WITH MERGE COMMIT - ADMIN MUST ENABLE THE OPTION

yunhanw-google and others added 11 commits October 14, 2026 07:14
…to-merged by platform-bot) (#74762)

Add SetThreadEnabledForTest, SetThreadAttachedForTest, and
ResetThreadStateForTest to NXP ThreadStackManagerImpl, matching the
Linux platform interface. These are guarded by
CONFIG_BUILD_FOR_HOST_UNIT_TEST and needed by TestICDManager.cpp
which calls these methods when both CONFIG_BUILD_FOR_HOST_UNIT_TEST
and CHIP_DEVICE_CONFIG_ENABLE_THREAD are defined.

Without these methods, the NXP MCXW72 (Thread) unit test build fails:
  error: 'class ThreadStackManagerImpl' has no member named
  'SetThreadEnabledForTest'
* [all-devices-app] Implement BatteryPowerSourceAccessor and support OOB cluster writes

- Implement BatteryPowerSourceAccessor to handle SetAttribute actions for BatPercentRemaining and BatVoltage.
- Unrecognized attributes return std::nullopt to allow downstream handlers and data model provider fall-through.
- Register BatteryPowerSourceAccessor via OOBAccessors and OOBAccessorHook.
- Add comprehensive unit test suite TestBatteryPowerSourceAccessor using typed BuildSetAttributeRequest helpers and InMemoryOOBAccessorRegistry dispatch.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…ort (#74761)

* [Android] Add Thread dataset fetch from system with optional GMS support

- Add a "Fetch dataset from system Thread manager" button to
  EnterNetworkFragment for Thread provisioning. It populates the channel,
  PAN ID, extended PAN ID and network key fields from the active
  operational dataset of the phone's Thread network.
- Fetch credentials via the GMS ThreadNetworkClient (with the
  preferred-credentials consent flow) when Google Play services is
  available, and otherwise fall back to the Android 14+
  ThreadNetworkManager system service. The GMS path is only taken when
  GoogleApiAvailability reports SUCCESS; otherwise GoogleApiManager keeps
  the request pending behind a "Get Google Play services" resolution and
  the fetch would never complete or fall back.
- The ThreadNetworkController APIs are system APIs guarded by
  THREAD_NETWORK_PRIVILEGED, so the system-service path only works when
  CHIPTool is installed as a privileged app. Check the permission up front
  and surface the underlying error instead of an opaque reflection failure.
- Add the matterEnableGms Gradle property (default true). It selects the
  src/gms or src/nogms source set for GmsThreadDatasetHelper, so builds
  with matterEnableGms=false do not link play-services-threadnetwork.
- Ignore results delivered after the fragment view is destroyed and
  unregister the pending dataset callback in onDestroyView.

* [Android] CHIPTool: address review comments on Thread dataset fetch

- Replace getAllCredentials() with getAllActiveCredentials().
  getAllCredentials() returns only credentials added by the calling app,
  which CHIPTool never adds, so taking its first entry could only return
  nothing or an unrelated stored network. getAllActiveCredentials()
  returns every active Thread network reachable through nearby border
  routers after a single consent prompt; when more than one is shared the
  user picks one from a list (network name, extended PAN ID, channel).
  Fall back to getPreferredCredentials() when it is unavailable (e.g. the
  phone is not on Wi-Fi).
- Bump play-services-threadnetwork to 16.2.1, the first version with
  getAllActiveCredentials().
- Skip launching the consent prompt when the fragment view no longer
  exists, since the result would be discarded.
…#74316)

* [Camera] Support the Analysis stream usage in the Linux camera

Analysis was missing from the supported stream usages and priorities, so
VideoStreamAllocate with StreamUsage=Analysis (sent by an AV Analysis
Node) was rejected with INVALID_IN_STATE.

* [AVSM] Skip TC_AVSM_2_11 step 4 when the DUT supports every stream usage

* [AVSM] Skip TC_AVSM_2_5 step 9 when StreamUsagePriorities holds every usage

* [AVSM] Skip TC_AVSM_2_7 step 18 when StreamUsagePriorities holds every usage

* [AVSM] Let TC_AVSM_2_11 step 4 probe with the Internal usage

* [AVSM] Narrow StreamUsagePriorities before allocating in TC_AVSM_2_5 and 2_7
* [CI] Rebalance host unit-test jobs

- Move the ICD/ARL/rotating-id (all_features) unit tests to nightly.
- Drop the gcc 'main' unit-test job; gcc_debug in build.yaml now runs
  the unit tests on PRs and builds the silabs platform tests.
- Run mbedTLS ASan unit tests next to PSA, gated on crypto-related
  paths, with the path filter ahead of bootstrap.

* [CI] Comment chip_build_all_platform_tests in gcc_debug

* [CI] Bootstrap gcc_debug with unit_tests submodules

* [CI] Run gcc_debug no-logging tests on PRs only

* [CI] Run gcc_debug no-logging build on PRs only

* [CI] Bootstrap crypto backend job without unit_tests submodules

* [CI] Document host unit-test CI coverage

Add docs/ci-cd/host_unit_tests.md, a table of which unit-test
configurations run on PRs, master pushes and nightly, and why.

scripts/tools/list_unit_test_steps.py lists every workflow step that
runs unit tests into docs/ci-cd/host_unit_tests.steps.txt; --check
reports when the workflows no longer match the snapshot and --update
regenerates it.

* [CI] Drop unused msan case from the master sanitizer loop

The loop only iterates asan, tsan and ubsan; MSan runs in nightly.yaml.

* [CI] Check the unit-test steps snapshot in lint

* [CI] Revert unit-test steps snapshot to before the msan change

Temporary: shows the lint check failing on a stale snapshot.

* [CI] Regenerate unit-test steps snapshot

Picks up the msan removal and the nightly crypto-backend ASan job from
master, and adds that job to host_unit_tests.md.

* [CI] Rename unit-test steps snapshot and mark it generated

host_unit_tests.generated.txt now starts with a header naming the
script that writes it.

* [CI] Stop the crypto job at the first failed backend

Matches the other multi-build jobs; mbedTLS no longer builds next to a
failed PSA output.

* [CI] Record path triggers and path filters in the unit-test steps snapshot

The snapshot now lists paths/paths-ignore on workflow triggers and the
dorny/paths-filter lists that each test step's condition reads, so a
change to either fails the lint check.

* [CI] Record full trigger config in the unit-test steps snapshot

Every trigger setting except inputs is now written out (types,
branches-ignore, schedule cron, ...), replacing the per-key list.

* Gate master pushes of the crypto backend unit tests on the path filter

nightly.yaml already runs the PSA and mbedTLS unit tests on the full
tree every night, so running them on every master push repeated that
work. Master pushes now follow the same crypto path filter as PRs.
Release-branch pushes still always run, since scheduled workflows do
not run on release branches.

dorny/paths-filter calls git on push events and runs before bootstrap,
so mark the workspace as a safe git directory first.

* Point the nightly crypto backend comment at host_unit_tests.md

* Apply the crypto path filter to release-branch pushes as well

* Drop the safe.directory step before dorny/paths-filter

The pinned dorny/paths-filter (v4.0.3) already retries git with a
temporary safe.directory entry when the workspace is owned by another
user (dorny/paths-filter#317), so the extra step is not needed.

* Reset gn args when a later gn_gen.sh call has none

A job that runs gn_gen.sh with --args and later runs it with default
arguments kept the earlier arguments in the snapshot.

* Point the crypto and various-features unit-test jobs at host_unit_tests.md

* Reword the host_unit_tests.md pointer comments
…upload-size-reports (Auto-merged by bot)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@043fb46...cf430e0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…bootstrap (Auto-merged by bot)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@043fb46...cf430e0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.4 to 2.5.0.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](ossf/scorecard-action@2d11466...fa7117d)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  dependency-version: 2.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…merged by bot)

Bumps 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).


Updates `github/codeql-action/init` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

Updates `github/codeql-action/analyze` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

Updates `github/codeql-action/upload-sarif` from 4.38.2 to 4.38.3
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@2892aa5...24c5418)

---
updated-dependencies:
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-action
- dependency-name: github/codeql-action/init
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-action
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.38.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: codeql-action
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@silabs-matter-ci-bot
silabs-matter-ci-bot Bot requested a review from a team as a code owner October 15, 2026 00:44
@silabs-matter-ci-bot silabs-matter-ci-bot Bot added changing-git-submodules-on-purpose sl-require-admin-action This TAG indicates that an admin must take action. labels Oct 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

The check for sl-require-admin-action label CI failure for this job is normal. An admin must do the merge.

Comment thread .github/workflows/nightly.yaml Dismissed
dependabot Bot and others added 4 commits October 15, 2026 02:20
Bumps [restyled-io/actions/run](https://github.com/restyled-io/actions) from 4.4.29 to 4.4.32.
- [Release notes](https://github.com/restyled-io/actions/releases)
- [Commits](restyled-io/actions@8467a40...ab22a07)

---
updated-dependencies:
- dependency-name: restyled-io/actions/run
  dependency-version: 4.4.32
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pydata-sphinx-theme](https://github.com/pydata/pydata-sphinx-theme) from 0.22.0 to 0.23.0.
- [Release notes](https://github.com/pydata/pydata-sphinx-theme/releases)
- [Changelog](https://github.com/pydata/pydata-sphinx-theme/blob/main/RELEASE.md)
- [Commits](pydata/pydata-sphinx-theme@v0.22.0...v0.23.0)

---
updated-dependencies:
- dependency-name: pydata-sphinx-theme
  dependency-version: 0.23.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
On LwIP platforms, InterfaceId::PlatformType is
`struct netif *` (a pointer), not an integer. The existing
static_cast<PlatformType>(unsigned int) is invalid for pointer types.

Use a static array of netif structs to provide valid pointers on LwIP.
A bare integer-to-pointer cast would compile but crash at runtime if
any code path dereferences the pointer (e.g. GetInterfaceName accessing
netif->name).

Fixes #74744
* WaterTankLevelMonitoring: Added water tank level montoring to all clusters app

* WaterTankLevelMonitoring: Added example app based on HEPA/Activated-Carbon Filter Monitoring

* WaterTankLevelMonitoring: Add WaterTankLevelMonitoring into the shared resource-monitoring-
server

Wires WaterTankLevelMonitoring into the shared resource-monitoring-
server (it shares the same abstract Resource Monitoring shape as
HEPA/Activated Carbon Filter Monitoring), registers it as code-driven
in zap codegen config, and instantiates it in all-clusters-app.

* Fixed review comments.

* Regenerate WaterTankLevelMonitoring accessors
… (#74784)

* [Chef] Fix clang arm64 warnings in Thermostat delegates and stubs.cpp

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…r writes (#74755)

- Implement WaterValveAccessor taking ValveConfigurationAndControlCluster and EndpointId to handle SetAttribute actions for CurrentState and CurrentLevel.
- 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.
- Apply cluster DefaultOpenDuration on OOB open operations.
- Include explicit DataModel decode and nullable headers.
- Register WaterValveAccessor via OOBAccessors and OOBAccessorHook.
- Add comprehensive unit test suite TestWaterValveAccessor covering state transitions, level persistence, default open duration, error handling, and wrong cluster/endpoint rejection.
…ation` to `Temperature Sensor` (#74286)

* Initial commit

* Register Thermostat device

  - Add Thermostat to the device factory and GN/CMake builds
  - Update build targets and target snapshots
  - Update supported device and cluster documentation

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix ESP32 link error by adding thermostat-server to CMake build

* Fix ESP32 link error for Thermostat User Interface Configuration cluster

* Remove thermostat-server from CMake build configuration

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update README.md to format device options for improved readability

* Fix TemperatureSensor architecture: Move optional UI cluster to simulation

According 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.

* Simulate running state and optional attributes in LoggingThermostat

* Make Thermostat features configurable via Context

* Enable Python and YAML CI tests for all-devices thermostat

* Refactor Thermostat to extract optional UI/Groups clusters and fix initialization order

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Support Thermostat AutoMode, setpoint limits and refactor dependencies
- Implement ThermostatAutoSetpoints::Delegate in LoggingThermostat to support AutoMode (TSTAT.S.F05) and return a valid MinSetpointDeadBand, satisfying TC_TSTAT_2_2.
- Implement getters and setters for optional setpoint limits in LoggingThermostat to support dynamic limits and resolve UNSUPPORTED_ATTRIBUTE errors in TC_TSTAT_2_1.
- Enable ScheduleProgrammingVisibility in ThermostatUserInterfaceConfiguration cluster for LoggingThermostat and IncreasingTemperatureSensor to satisfy TSUIC tests.
- Refactor Thermostat base class Context and includes to decouple unused dependencies, moving groups-server and thermostat-user-interface-configuration-server to the logging target.
- Add ALL_DEVICES_DEVICE_THERMOSTAT to Zephyr's Kconfig.devices to enable compiling the thermostat device type on Zephyr platform.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Add preset and setpoint hold delegates

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Refactor setpoint limit validation to ensure proper constraints for heating and cooling limits

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix handle type in AppendToPendingPresetList to ensure proper range and prevent overflow

* Support SystemMode Auto, register missing optional attributes and simplify startup validation

- Accept SystemModeEnum::kAuto when AutoMode is enabled and simulate running
  mode/state in Auto.
- Enable ThermostatRunningMode (with AutoMode) and SetpointHoldExpiryTimestamp
  optional attributes so the values written by delegates are registered.
- Replace per-limit startup sanity checks with a single Setpoints::Valid()
  check that resets limits and setpoints to defaults when inconsistent.
- Remove redundant CriticalFreeze/Overheat delegate overrides; the base
  setpoint delegates already default to the same values.
- Remove the in-PR history comment from Thermostat.h.
- Drop the duplicated ThermostatUserInterfaceConfigurationCluster.cpp from
  ALL_DEVICES_CLUSTER_SOURCES; it is already built in libCHIP.

* Rename Thermostat device class to FullThermostat

The device/types/<Type> classes are expected to stay generic for all devices
of the type. This composition requires the optional Presets and Hold
delegates, so name it FullThermostat to make that explicit.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Hardcode the FullThermostat feature set

ThermostatClusterType registers all attributes and commands implied by the
heating, cooling, AutoMode and Presets features at compile time, so the
feature flags can no longer come from Context: a narrower FeatureMap would
disagree with the registered cluster surface.

Also initialize changed in SetRunningState before any return.

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Elen777300 <elensoghomonyan@gmail.com>
Co-authored-by: Elen Soghomonyan <43118262+Elen777300@users.noreply.github.com>
…74612)

* [app/server] Decouple CommissioningWindowManager from chip::Server

Replace 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.

Also remove #include <app/server/Server.h> and Server::GetInstance() from CommissioningWindowManager, AdministratorCommissioningLogic.h, and the three commissioning cluster unit tests (TestAdministratorCommissioningCluster, TestGeneralCommissioningCluster, and TestOperationalCredentials).

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Move BLE preprocessor conditional outside SuccessOrExit macro

* Bind local Context reference to avoid unchecked-optional-access warnings

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* review feedback

* review feedback

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…sh instead of Ember RAM (#74614)

* [Code-driven clusters] Store ZAP-configured attribute defaults in flash instead of Ember RAM

* Address review feedback: add ICD instruction unit test and update comments

* Address review feedback: include <algorithm>, static_assert test buffer length, remove orphan chef .matter

* Move remaining code-driven cluster attributes out of Ember RAM

* Complete code-driven cluster attribute migration to external/keepDefault storage

* Move ClusterRevision/FeatureMap to external storage for ConcentrationMeasurement, ElectricalEnergyMeasurement, and ThreadNetworkDirectory

* Restyle

* zap regen

---------

Co-authored-by: Andrei Litvin <andreilitvin@google.com>
…73566)

* adds simulate_dsls_transitions script arg, updates 3.1 and 3.2

* address pr comment
…bot)

Bumps [restyled-io/actions/setup](https://github.com/restyled-io/actions) from 4.4.29 to 4.4.32.
- [Release notes](https://github.com/restyled-io/actions/releases)
- [Commits](restyled-io/actions@8467a40...ab22a07)

---
updated-dependencies:
- dependency-name: restyled-io/actions/setup
  dependency-version: 4.4.32
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
shripad621git and others added 11 commits October 16, 2026 07:17
… (#74680)

* feat(esp32-zephyr): add thread support to lighting app

- Add overlay-thread.conf for a thread-only build on ESP32-C6
- Init OpenThread stack and register the Thread network commissioning driver
- Move Wi-Fi buffer counts into Kconfig.defaults under WIFI_ESP32
- Set NET_CONFIG_INIT_TIMEOUT=0 to avoid a 30 s boot stall
- Document thread build and ble-thread commissioning in README

* Addressed review comments

* Address review comments on esp32_zephyr Thread support

- Fail at compile time if both CHIP_DEVICE_CONFIG_ENABLE_WIFI and
  CHIP_DEVICE_CONFIG_ENABLE_THREAD are set, since the Zephyr platform
  layer would then expect an initialized OpenThread instance that the
  app never creates.
- Drop CONFIG_WIFI/CONFIG_WIFI_ESP32 from the C6 board config; CHIP_WIFI
  already selects them, so overlay-thread.conf only needs
  CONFIG_CHIP_WIFI=n to turn the Wi-Fi stack off.
- Add the license header to overlay-thread.conf.
- Cover the esp32_zephyr example under the esp32 platform maintainers
…73700)

* thermostat: port Matter Schedule Configuration (MSCH) onto the multi-delegate cluster split

Re-implements the Schedules feature (ScheduleTypes, NumberOfSchedules,
NumberOfScheduleTransitions, NumberOfScheduleTransitionPerDay,
ActiveScheduleHandle, Schedules, SetActiveScheduleRequest) as a
ThermostatSchedules feature class following the same pattern as
ThermostatPresets, now that #73355 split the monolithic ThermostatCluster
into per-feature delegate classes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* thermostat: fix Copilot review findings on Schedules delegate/mock

- ThermostatSchedulesDelegate::GetActiveScheduleHandle now validates the
  caller-provided Nullable<MutableByteSpan> is non-null and large enough
  before dereferencing it, instead of assuming it always is.
- MockSchedulesDelegate::SetActiveScheduleHandle now returns the injected
  error before mutating any state, instead of after.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* thermostat: fix CodeRabbit review findings on Schedules precommit and tests

- MatchingPendingScheduleExists now returns the delegate's CHIP_ERROR
  separately from the found/not-found result instead of swallowing it as
  'not found'. PrecommitSchedules propagates that error as InvalidInState
  instead of silently letting the atomic commit proceed.
- TestScheduleStructWithOwnedMembers: guard GetScheduleHandle().Value()
  calls with ASSERT_FALSE(...IsNull()) instead of EXPECT_FALSE or no guard
  at all, so a real regression fails the assertion instead of aborting the
  test binary.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* thermostat: remove unused Accessors.h include from ThermostatClusterSchedules.cpp

Per CodeRabbit nitpick: the file only uses mDelegate, never any symbol
from Accessors.h.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* thermostat: raise test coverage on the Schedules feature

Adds 17 cluster-level tests (TestThermostatClusterSchedules.cpp) and 2
struct-level tests (TestScheduleStructWithOwnedMembers.cpp) targeting
branches the existing suite didn't reach: ScheduleTypes/pending-list reads,
Busy on a concurrent writer, the AppendItem list-writing pattern, the
remaining AppendPendingSchedule constraint checks (oversized preset
handles, the owned-storage transition hard cap, an unknown SystemMode, a
built-in flag on a new schedule, an unsupported SystemMode), the
ActiveScheduleHandle-not-in-pending precommit failure, delegate-error
propagation from SetActiveScheduleRequest/CommitWrite, the
no-per-day-limit-configured path, and (via new MockSchedulesDelegate
fault-injection knobs) delegate lookup failures mid-loop in
PrecommitSchedules and AppendPendingSchedule -- including the
MatchingPendingScheduleExists error-propagation path fixed in a prior
commit on this branch.

Also removes ThermostatSchedules::GetDelegate(), which (unlike its Presets
counterpart, used by ThermostatSuggestions) had no caller.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* thermostat: avoid schedule handle collision with built-in schedules in example delegate

ThermostatSchedulesDelegate::AppendToPendingScheduleList assigned new
(null-handle) schedules a handle derived from SystemMode, the same scheme
InitializeSchedules() uses to seed the built-in schedule's handle. Since
PrecommitSchedules matches schedules by handle only, a client could submit
a new, non-built-in schedule with the same SystemMode as the built-in one
and have it silently take over the built-in schedule's handle -- passing
the 'built-in schedules cannot be removed' check while actually replacing
it.

Assign auto-generated handles from a monotonically increasing counter
that starts above any valid SystemModeEnum value instead, so it can never
collide with a SystemMode-derived built-in handle.

Reported-by: Copilot (PR review)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* thermostat: propagate delegate errors from schedule lookup helpers instead of treating them as not-found

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update ThermostatClusterSchedules.h

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* thermostat: fix remaining review findings on Schedules name-support lookup

Distinguish a genuine delegate error from an unsupported system mode when
checking whether a schedule type supports names: ScheduleTypeSupportsNames()
now returns a CHIP_ERROR alongside the bool result, so AppendPendingSchedule
reports InvalidInState on delegate failure instead of misclassifying it as
ConstraintError (matching how MaximumScheduleTypeCount() already handles this).

Also clarify the WriteAttribute log message: schedules are writable during an
open atomic write, so the previous "not editable" wording was misleading for
the case it actually covers (writes outside of an atomic write).

Adds a test that exercises the new delegate-error-on-second-scan path via a
call-count-gated error injection on the schedule type mock.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Ludovic BOUÉ <938089+lboue@users.noreply.github.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Hasty Granbery <granbery@google.com>
…g the feature-owned cluster (#74691)

* rework feature

* Handle missing factory data in AppTaskBase

Log an error when factory data is requested but not provided.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* attributes based approach

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Add comment for double mOTARequestorAttributes

* third approach

* cleanup diff

* add silabs apptask

* add a using

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…cript are available (#74748)

* Delete src/app/tests/suites/certification/Test_TC_SU_2_5.yaml

* Delete src/app/tests/suites/certification/Test_TC_SU_2_7.yaml
* Modify group management test cases for endpoint updates

Updated test steps to reflect changes in endpoint IDs and command parameters for group management operations.

* Fix indentation for label in Test_TC_G_2_3.yaml

* Fix formatting in Test_TC_G_2_3.yaml

* Restyled by whitespace

* Restyled by prettier-yaml

* fixing the restyle patch

* Delete pr-74664-restyled.zip

* Delete pr-74664-restyled.patch

---------

Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: Kishok G <133193761+KishokG@users.noreply.github.com>
* Add PERSIST_FAIL_REJECT and PERSIST_FAIL_ACCEPT status codes

* Add codes to ERROR_CODES.md

* Generated ERROR_CODES.md
* Change waterValve config

* Remove delegate as a parent

* Implement LoggingWaterValve

* Fix build files

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Remove API duplications

* Switch to LoggingWaterValve

* Minor Tweaks

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* Changed WHM constructor parameter from Feature to Bitmask

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Split out of #73565 at review: the step tag removal and marker fixes land
here, and #73565 keeps the setup_class precondition.

The device-requirement marker declares each test's DUT state, and the TH
classifies tests by it (project-chip/certification-tool-backend#399), so
drop the redundant step-1 is_commissioning=True from
MatterTestCommissionedDevice tests. BasicCompositionTests-based tests have
no marker and keep the flag. TH builds without #399 still classify by the
flag, so this needs a TH that includes it.

Also fix markers the TH now relies on: TC_WEBRTCR_2_1-2_7 are
MatterTestCommissioner (the DUT is the commissioner and never joins the TH
fabric), and TestCreateNewController is CertificationUnitTestNoDevice.
* fix a typo in attribute-storage.h

* Update src/app/util/attribute-storage.h

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
… (#74805)

* [AI Agents] Add comment and technical writing guidelines to AGENTS.md

* Add final-code lens and delete-on-sight comment rules

* Add tradeoff and tradeoffs to spellcheck wordlist
* initial progress

* first increase-decrease commands

* adds get_last_attribute_report_value function

* draft 1

* draft 2

* updates descriptions and comments

* restyled

* fixes verify_step_attribute_values fn

* add logging to write_setting

* fixes feature support logic

* adds test steps

* restyled

* restyled

* lint

* update scenarios

* updates CI args

* fix merge

* fix merge

* lint

* updates step class

* restyled

* refactors steps, fns

* restyled

* update fn name

* fix typo

* adds another test scenario

* update progress per pr comments

* implement baseline value checks

* adds case

* adds cases

* verifies 1st 4 scenarios

* adds wrapping tests

* refactors and splits lowestOff vs wrap tests

* adds baseline values verifications

* adds cluster_guard to matter testing support

* adds command to turn fan on if on-off cluster if part of the dut

* removes test off command

* removes unused imports and functions

* updates function signatures, return types, and descriptions

* removes redundant descriptions

* restyled checkpoint

* restyled

* lint

* refactor for better test step flow

* refactor for better test step flow

* restyled

* cosmetics

* adds current values checks

* restyled

* restyled

* lint

* lint

* implemented lowestOff testing for current values

* checkpoint

* current and non-current attribute testing

* implements test steps

* adjust comments

* restyyled

* restyled

* update

* restyled

* restyled

* restyled

* cleanup

* adds endpoint 1 to CI args

* removes await_all_final_values_reported_threshold fn

* adds get_attribute_value_from_queue

* restyled

* restyled

* restyled

* Update src/python_testing/TC_FAN_3_5.py

Co-authored-by: C Freeman <cecille@google.com>

* Update src/python_testing/TC_FAN_3_5.py

Co-authored-by: C Freeman <cecille@google.com>

* Update src/python_testing/TC_FAN_3_5.py

Co-authored-by: C Freeman <cecille@google.com>

* fix merge/imports

* restyled

* address pr comments

* rename to lowest_off_field_conditions_test

* removes reduntant lines

* removes commented line

* restyled

* removes initialize_percent_setting

* lowest_off_field_conditions_test adds clarifying comment on

* updates cluster_guard docstring

* Update src/python_testing/TC_FAN_3_5.py

Co-authored-by: C Freeman <cecille@google.com>

* mypy

* test formatting

* Restyled by autopep8

* updates test steps

* format test

* updating test steps progress

* Restyled by autopep8

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* swaps cluster_guard for cluster_present

* step wording updated

* cr

* cr

* fix imports, adds all_of fn and unit test

* cr

* cr

* fix step numbers

* fix logging

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* lint

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* updates copyright year

* lint

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* removes  temp file

* Remove accidentally committed test artifacts

* Revert accidental third_party submodule changes

* updated to not assume 100%

* pr comment

* gate subs

* spelling

* updates script

* fix test step text

* 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

* TC-FAN-3.5 - Rename the test class and methods to TC_FAN_3_5_provisional

---------

Co-authored-by: C Freeman <cecille@google.com>
Co-authored-by: Restyled.io <commits@restyled.io>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…-4.x tests (#74069)

* refactor

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* misspell

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* update to include 4.6/4.7

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Use the shared PTR and SRV discovery helpers in TC-SC-4.1

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
…moteZones (#73101) (#74775)

* [ZoneManagement] Add Python certification test TC_ZONEMGMT_2_5 for RemoteZones (#73101)

- 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).
- Configure CI test runner arguments for CAMERA_APP with --camera-remote-analysis and --app-pipe.
- 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.

Fixes #73101

* Address CodeRabbit review: filter ZoneTriggered events by zoneID_Remote
…mutation (#74693)

- Implement SoilSensorAccessor to handle SetAttribute actions for SoilMoistureMeasuredValue and MeasuredValue (Temperature), taking SoilSensor directly.
- Add GetSoilMoistureMeasuredValue getter to SoilMeasurementCluster.
- 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.
- Register SoilSensorAccessor via OOBAccessors and OOBAccessorHook.
- Fix IncreasingMoistureSoilSensor to rollback registration if the timer fails to start, and correct temperature range configuration to 0.01°C units (-1000 to 5000).
- 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.
…t (#73922)

* Fix TC-BR-4 Test Fail

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Fix form comment

* Fix from comments -2

* Fix Register Verify code

* Fix from comment

* Add nullable to min/max (they are nullable in zap)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Another fix: also mark no default value so we are not 0

* Remove nonsense comments ... the attribute name is right there, the comment stating attribute name again is of 0 help

* Feature map is not nullable. fix

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Andrei Litvin <andy314@gmail.com>
…merged by platform-bot) (#74116)

* reset CD write offset per download in nrfconnect OTA processor

* skip persisting the CD on a failed nrfconnect OTA download
apahl-cl and others added 4 commits October 17, 2026 04:35
The JF Administrator port was drawn from 5001-5999, which includes
CHIP_UDC_PORT (5550) and the jf-control-app's per-fabric UDC listen
ports. When it landed on one of those, PASE requests from the JF
Controller went to a UDC listener instead of the JF Administrator,
and setup_class timed out waiting for anchor commissioning.

get_random_port() picks from 35000-45000 and checks the port is free,
matching the other JF tests. TH2 now uses it too.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
all-clusters-app is being retired, so run TC_SC_3_1, 3_2, 3_4, 3_6,
4_3 and 7_1 against all-devices-app (--device on-off-light:1) instead.
These are root-node tests, and the all-devices runs execute every step
the all-clusters runs did. TC_SC_4_3 keeps its LIT ICD run.

TC_SC_4_1 keeps its all-clusters-app runs and gains all-devices-app
runs for both the manual pairing code and the QR code. all-devices-app
does not support OpenBasicCommissioningWindow, so steps 9 to 17 skip
there.

Part of #74797
Run TC_ACE_1_2 to TC_ACE_1_5 and TC_ACL_2_2, 2_4, 2_6 and 2_8 against
all-devices-app (--device on-off-light:1) instead of all-clusters-app.

TC_ACL_2_9 and TC_ACL_2_10 keep their all-clusters-app run and gain an
all-devices-app run. all-devices-app has no Access Control Extension
attribute, so it skips the Extension steps those tests cover.

Part of #74797
…r locks in CHIPTool (#74793)

* [Android] Support concurrent OTA/BDX transfers and background transfer locks in CHIPTool

Rework BdxOTASender into a per-(fabric, node) session manager so the
Android OTA provider can serve multiple BDX transfers concurrently, and
extend the CHIPTool OTA provider screen to target multiple node IDs with
per-device progress, foreground service execution, and transfer-scoped
power and Wi-Fi locks:

- Split per-transfer state into BdxOTASession managed by BdxOTASender in
  a (FabricIndex, NodeId) map, capped at 8 concurrent sessions (further
  QueryImage requests receive a Busy response with delayedActionTime,
  evicting the oldest unstarted reservation when all 8 slots are held by
  unstarted reservations). QueryImage failures for one node reset only
  that node's session and notify Java with the failing nodeId.
- Detach finished sessions from the map immediately and destroy them on
  a subsequent event loop turn via a zero-delay cancellable timer so
  in-stack callers (PollForOutput, timer callbacks) never touch freed
  members. Route all termination paths (2-minute BDX Init timeout,
  transfer timeout, received or sent StatusReport, internal error, send
  failure, null-exchange abort, and provider shutdown) through an
  idempotent Finish(), while CancelForReplacement() silently cancels a
  superseded session when the same node re-queries after Java accepted
  its new QueryImage.
- Pass requestor nodeId to OTAProviderDelegate.handleQueryImage and
  handleOTAQueryFailure via backward-compatible default interface
  methods so concurrent QueryImage requests attribute status and errors
  to the exact node without breaking 7-argument callers.
- In CHIPTool OtaProviderClientFragment, support comma-separated target
  node IDs cached on the UI thread, per-node firmware
  BufferedInputStreams honoring BDX start offset and bytesToSkip,
  cached firmware file size, 4 Hz throttled per-node progress cards with
  per-node retry, and a single summary status banner.
- Scope a non-reference-counted PARTIAL_WAKE_LOCK, WifiLock
  (WIFI_MODE_FULL_LOW_LATENCY on API 29+, WIFI_MODE_FULL_HIGH_PERF
  earlier), and OtaTransferService (connectedDevice foreground service
  updating its notification via NotificationManager.notify) to active
  BDX transfer node IDs, renewing a 10-minute safety timeout while
  blocks are served and releasing all locks on completion or fragment
  teardown.

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
@silabs-matter-ci-bot
silabs-matter-ci-bot Bot force-pushed the automation/update_main branch 2 times, most recently from 27fff5f to 3584c8c Compare October 19, 2026 00:46
@Sarthak-Shaha
sarthak shaha (Sarthak-Shaha) merged commit fe310ec into main Oct 19, 2026
106 of 108 checks passed
@Sarthak-Shaha
sarthak shaha (Sarthak-Shaha) deleted the automation/update_main branch October 19, 2026 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changing-git-submodules-on-purpose sl-require-admin-action This TAG indicates that an admin must take action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.