Fix empty report feedback loop (#35899)

diff --git a/src/app/reporting/ReportScheduler.h b/src/app/reporting/ReportScheduler.h
index f0e6ce3..d6425e3 100644
--- a/src/app/reporting/ReportScheduler.h
+++ b/src/app/reporting/ReportScheduler.h
@@ -150,6 +150,7 @@
                      IsEngineRunScheduled()));
         }
 
+        bool CanStartReporting() const { return mReadHandler->CanStartReporting(); }
         bool IsChunkedReport() const { return mReadHandler->IsChunkedReport(); }
         bool IsEngineRunScheduled() const { return mFlags.Has(ReadHandlerNodeFlags::EngineRunScheduled); }
         void SetEngineRunScheduled(bool aEngineRunScheduled)
diff --git a/src/app/reporting/SynchronizedReportSchedulerImpl.cpp b/src/app/reporting/SynchronizedReportSchedulerImpl.cpp
index a402f32..6d04e2b 100644
--- a/src/app/reporting/SynchronizedReportSchedulerImpl.cpp
+++ b/src/app/reporting/SynchronizedReportSchedulerImpl.cpp
@@ -183,7 +183,7 @@
     VerifyOrReturn(mNodesPool.Allocated());
 
     mNodesPool.ForEachActiveObject([now, &firedEarly](ReadHandlerNode * node) {
-        if (node->GetMinTimestamp() <= now)
+        if (node->GetMinTimestamp() <= now && node->CanStartReporting())
         {
             // Since this handler can now report whenever it wants to, mark it as allowed to report if any other handler is
             // reporting using the CanBeSynced flag.