Autosubmit bot logs for #106914 (#1954)

diff --git a/app_dart/lib/src/service/scheduler.dart b/app_dart/lib/src/service/scheduler.dart
index 51d98d8..4cc2b86 100644
--- a/app_dart/lib/src/service/scheduler.dart
+++ b/app_dart/lib/src/service/scheduler.dart
@@ -273,6 +273,7 @@
       pullRequest: pullRequest,
       reason: reason,
     );
+
     final github.CheckRun ciValidationCheckRun = await githubChecksService.githubChecksUtil.createCheckRun(
       config,
       pullRequest.base!.repo!.slug(),
@@ -283,6 +284,7 @@
         summary: 'If this check is stuck pending, push an empty commit to retrigger the checks',
       ),
     );
+
     final github.RepositorySlug slug = pullRequest.base!.repo!.slug();
     dynamic exception;
     try {
diff --git a/app_dart/pubspec.lock b/app_dart/pubspec.lock
index cfdcd7c..320b686 100644
--- a/app_dart/pubspec.lock
+++ b/app_dart/pubspec.lock
@@ -245,7 +245,7 @@
       name: github
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "9.3.0"
+    version: "9.4.0"
   glob:
     dependency: transitive
     description:
diff --git a/app_dart/pubspec.yaml b/app_dart/pubspec.yaml
index 7fe6da8..fecd3c8 100644
--- a/app_dart/pubspec.yaml
+++ b/app_dart/pubspec.yaml
@@ -19,7 +19,7 @@
   file: ^6.1.2
   fixnum: ^1.0.1
   gcloud: ^0.8.4
-  github: ^9.3.0
+  github: ^9.4.0
   googleapis: ^7.0.0
   googleapis_auth: ^1.3.1
   gql: ^0.13.1
diff --git a/auto_submit/lib/model/auto_submit_query_result.dart b/auto_submit/lib/model/auto_submit_query_result.dart
index 79c5509..fe027fc 100644
--- a/auto_submit/lib/model/auto_submit_query_result.dart
+++ b/auto_submit/lib/model/auto_submit_query_result.dart
@@ -2,6 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
+import 'dart:convert';
+
 import 'package:json_annotation/json_annotation.dart';
 
 part 'auto_submit_query_result.g.dart';
@@ -88,6 +90,9 @@
   factory ContextNode.fromJson(Map<String, dynamic> json) => _$ContextNodeFromJson(json);
 
   Map<String, dynamic> toJson() => _$ContextNodeToJson(this);
+
+  @override
+  String toString() => jsonEncode(_$ContextNodeToJson(this));
 }
 
 @JsonSerializable()
diff --git a/auto_submit/lib/validations/ci_successful.dart b/auto_submit/lib/validations/ci_successful.dart
index c66ced4..19268dc 100644
--- a/auto_submit/lib/validations/ci_successful.dart
+++ b/auto_submit/lib/validations/ci_successful.dart
@@ -66,6 +66,7 @@
     if (!allSuccess && failures.isEmpty) {
       return ValidationResult(allSuccess, Action.IGNORE_TEMPORARILY, '');
     }
+
     final StringBuffer buffer = StringBuffer();
     if (failures.isNotEmpty) {
       for (FailureDetail detail in failures) {
@@ -84,6 +85,7 @@
     if (Config.reposWithTreeStatus.contains(slug)) {
       bool treeStatusExists = false;
       final String treeStatusName = 'luci-${slug.name}';
+      log.info('Validating tree status: ${slug.name}, statuses: $statuses');
 
       /// Scan list of statuses to see if the tree status exists (this list is expected to be <5 items)
       for (ContextNode status in statuses) {
@@ -107,8 +109,8 @@
   bool validateStatuses(github.RepositorySlug slug, List<String> labelNames, List<ContextNode> statuses,
       Set<FailureDetail> failures, bool allSuccess) {
     final String overrideTreeStatusLabel = config.overrideTreeStatusLabel;
+    log.info('Validating name: ${slug.name}, statuses: $statuses');
 
-    log.info('Validating name: ${slug.name}, status: $statuses');
     for (ContextNode status in statuses) {
       // How can name be null but presumed to not be null below when added to failure?
       final String? name = status.context;
@@ -133,7 +135,8 @@
   /// Returns allSuccess unmodified if there were no failures, false otherwise.
   bool validateCheckRuns(
       github.RepositorySlug slug, List<github.CheckRun> checkRuns, Set<FailureDetail> failures, bool allSuccess) {
-    log.info('Validating name: ${slug.name}, checks: $checkRuns');
+    log.info('Validating name: ${slug.name}, checkRuns: $checkRuns');
+
     for (github.CheckRun checkRun in checkRuns) {
       final String? name = checkRun.name;
 
diff --git a/auto_submit/pubspec.lock b/auto_submit/pubspec.lock
index 6814cfa..f57a1e6 100644
--- a/auto_submit/pubspec.lock
+++ b/auto_submit/pubspec.lock
@@ -224,7 +224,7 @@
       name: github
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "9.3.0"
+    version: "9.4.0"
   glob:
     dependency: transitive
     description:
diff --git a/auto_submit/pubspec.yaml b/auto_submit/pubspec.yaml
index b1e658d..dc4ef42 100644
--- a/auto_submit/pubspec.yaml
+++ b/auto_submit/pubspec.yaml
@@ -14,7 +14,7 @@
   appengine: ^0.13.2
   corsac_jwt: ^1.0.0-nullsafety.1
   flutter_lints: ^1.0.4
-  github: ^9.3.0
+  github: ^9.4.0
   googleapis: ^7.0.0
   googleapis_auth: ^1.3.1
   graphql: ^5.1.1
diff --git a/auto_submit/test/requests/github_webhook_test_data.dart b/auto_submit/test/requests/github_webhook_test_data.dart
index 684e92e..d7a4b5d 100644
--- a/auto_submit/test/requests/github_webhook_test_data.dart
+++ b/auto_submit/test/requests/github_webhook_test_data.dart
@@ -371,6 +371,7 @@
 const String emptyCheckRunsMock = '''{"check_runs": [{}]}''';
 
 // repositoryStatusesMock is from the official Github API: https://developer.github.com/v3/repos/statuses/#list-statuses-for-a-specific-ref
+// state can be error, failure, pending, success
 const String repositoryStatusesMock = '''{
   "state": "success",
   "statuses": [
diff --git a/auto_submit/test/validations/ci_successful_test.dart b/auto_submit/test/validations/ci_successful_test.dart
index fb8518b..a7234b6 100644
--- a/auto_submit/test/validations/ci_successful_test.dart
+++ b/auto_submit/test/validations/ci_successful_test.dart
@@ -221,6 +221,7 @@
     test('Validate tree status is set contains slug.', () {
       slug = github.RepositorySlug('octocat', 'flutter');
       final List<ContextNode> contextNodeList = _getContextNodeListFromJson(repositoryStatusesMock);
+      expect(contextNodeList.isEmpty, false);
 
       /// The status must be uppercase as the original code is expecting this.
       _convertContextNodeStatuses(contextNodeList);
@@ -231,6 +232,7 @@
     test('Validate tree status is set does not contain slug.', () {
       slug = github.RepositorySlug('octocat', 'infra');
       final List<ContextNode> contextNodeList = _getContextNodeListFromJson(repositoryStatusesMock);
+      expect(contextNodeList.isEmpty, false);
 
       /// The status must be uppercase as the original code is expecting this.
       _convertContextNodeStatuses(contextNodeList);
diff --git a/dashboard/pubspec.lock b/dashboard/pubspec.lock
index ca8ca36..514f236 100644
--- a/dashboard/pubspec.lock
+++ b/dashboard/pubspec.lock
@@ -323,14 +323,14 @@
       name: material_color_utilities
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.1.5"
+    version: "0.1.4"
   meta:
     dependency: transitive
     description:
       name: meta
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.0"
+    version: "1.7.0"
   mime:
     dependency: transitive
     description:
@@ -365,7 +365,7 @@
       name: path
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "1.8.2"
+    version: "1.8.1"
   pedantic:
     dependency: transitive
     description: