1/* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17syntax = "proto2"; 18package android.federatedcompute; 19 20option java_outer_classname = "FederatedComputeProtoEnums"; 21option java_multiple_files = true; 22 23// Enum used to track federated computation job stages. 24// Next Tag: 87 25enum TrainingEventKind { 26 // Undefined value. 27 TRAIN_UNDEFINED = 0; 28 29 // Indicates that training was scheduled but did not start due to runtime 30 // checks (e.g. insufficient battery levels). 31 TRAIN_NOT_STARTED = 1; 32 33 // Client started downloading train phase info from the server 34 TRAIN_DOWNLOAD_STARTED = 2; 35 36 // Client is about to issue an eligibility eval checkin request to the 37 // server. 38 TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED = 3; 39 40 // Client received eligibility eval plan & checkpoint URIs from the server, 41 // but hasn't downloaded them yet. Also logged when the plan/checkpoint 42 // resources were actually supplied inline in the protocol response message 43 // and no actual HTTP fetch needs to happen anymore. This ensures that this 44 // event can always be compared against 45 // TRAIN_ELIGIBILITY_EVAL_PLAN_RECEIVED. 46 // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 47 TRAIN_ELIGIBILITY_EVAL_PLAN_URI_RECEIVED = 4; 48 49 // Client received an eligibility eval plan from the server. 50 // Always preceded by TRAIN_ELIGIBILITY_EVAL_PLAN_URI_RECEIVED. 51 TRAIN_ELIGIBILITY_EVAL_PLAN_RECEIVED = 5; 52 53 // Client was told by the server that there is no eligibility eval plan for 54 // the given population. 55 // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 56 TRAIN_ELIGIBILITY_EVAL_NOT_CONFIGURED = 6; 57 58 // Client was rejected from an eligibility eval checkin request. 59 // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 60 TRAIN_ELIGIBILITY_EVAL_TURNED_AWAY = 7; 61 62 // Client issued an eligibility eval checkin request, but an IO error was 63 // encountered. 64 // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 65 TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_ERROR_IO = 8; 66 67 // Client issued an eligibility eval checkin request, but an invalid payload 68 // was received. 69 // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 70 TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_ERROR_INVALID_PAYLOAD = 9; 71 72 // Client issued an eligibility eval checkin request, but got interrupted on 73 // the client. Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 74 TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_CLIENT_INTERRUPTED = 10; 75 76 // Client issued an eligibility eval checkin request, but server aborted. 77 // Always preceded by TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_STARTED. 78 TRAIN_ELIGIBILITY_EVAL_DOWNLOAD_SERVER_ABORTED = 11; 79 80 // Client issued a regular checkin request, but got an IO error. 81 // Always preceded by TRAIN_DOWNLOAD_STARTED. 82 TRAIN_DOWNLOAD_ERROR_IO = 12; 83 84 // Client issued a regular checkin request, but the server returned an 85 // invalid payload. 86 // Always preceded by TRAIN_DOWNLOAD_STARTED. 87 TRAIN_DOWNLOAD_ERROR_INVALID_PAYLOAD = 13; 88 89 // Client issued a regular checin request, but got interrupted on the 90 // client. Always preceded by TRAIN_DOWNLOAD_STARTED. 91 TRAIN_DOWNLOAD_CLIENT_INTERRUPTED = 14; 92 93 // Client issued a regular checin request, but got aborted by the server. 94 // Always preceded by TRAIN_DOWNLOAD_STARTED. 95 TRAIN_DOWNLOAD_SERVER_ABORTED = 15; 96 97 // Client received plan and checkpoint URIs from the server, but hasn't 98 // actually downloaded them yet. Also logged when the plan/checkpoint 99 // resources were actually supplied inline in the protocol response message 100 // and no actual HTTP fetch needs to happen anymore. This ensures that this 101 // event can always be compared against TRAIN_DOWNLOAD_PLAN_RECEIVED. 102 // Always preceded by TRAIN_DOWNLOAD_STARTED. 103 TRAIN_DOWNLOAD_PLAN_URI_RECEIVED = 16; 104 105 // Client received a plan from the server. 106 // Always preceded by TRAIN_DOWNLOADED_PLAN_URI_RECEIVED. 107 TRAIN_DOWNLOAD_PLAN_RECEIVED = 17; 108 109 // Client was rejected from a checkin request. 110 // Always preceded by TRAIN_DOWNLOAD_STARTED. 111 TRAIN_DOWNLOAD_TURNED_AWAY = 18; 112 TRAIN_DOWNLOAD_TURNED_AWAY_NO_TASK_AVAILABLE = 70; 113 TRAIN_DOWNLOAD_TURNED_AWAY_UNAUTHORIZED = 71; 114 TRAIN_DOWNLOAD_TURNED_AWAY_UNAUTHENTICATED = 72; 115 116 // Client started eligibility eval computation. 117 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED = 19; 118 119 // Client encountered a TensorFlow error during eligibility eval task 120 // computation. 121 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 122 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_TENSORFLOW = 20; 123 124 // Reading from disk failed during eligibility eval task computation. 125 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 126 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_IO = 21; 127 128 // Input parameters are invalid for eligibility eval task computation. 129 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 130 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_INVALID_ARGUMENT = 22; 131 132 // Client encountered an example selector error during eligibility eval task 133 // computation. 134 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 135 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 23; 136 137 // Eligibility eval computation was interrupted by the client. 138 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_CLIENT_INTERRUPTED = 24; 139 140 // Client finished eligibility eval computation. 141 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 142 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_COMPLETED = 25; 143 144 // Client finished eligibility eval computation and result is eligible. 145 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 146 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_ELIGIBLE = 51; 147 148 // Eligibility check failed during check-in due to min separation policy. 149 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 150 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_NOT_ELIGIBLE_MIN_SEPARATION = 85; 151 152 // Eligibility check failed during check-in due to data availability policy 153 // i.e. does not have minimum examples. 154 // Always preceded by TRAIN_ELIGIBILITY_EVAL_COMPUTATION_STARTED. 155 TRAIN_ELIGIBILITY_EVAL_COMPUTATION_NOT_ELIGIBLE_MIN_EXAMPLE = 86; 156 157 158 // The status of FCP binds to client implemented ExampleStoreService. 159 TRAIN_EXAMPLE_STORE_BIND_START = 62; 160 TRAIN_EXAMPLE_STORE_BIND_SUCCESS = 63; 161 TRAIN_EXAMPLE_STORE_BIND_ERROR = 64; 162 163 // The status of ExampleStoreService.startQuery API. 164 TRAIN_EXAMPLE_STORE_START_QUERY_START = 65; 165 TRAIN_EXAMPLE_STORE_START_QUERY_TIMEOUT = 66; 166 // Indicates all failure cases except timeout when call ExampleStoreService.startQuery API. 167 TRAIN_EXAMPLE_STORE_START_QUERY_ERROR = 67; 168 TRAIN_EXAMPLE_STORE_START_QUERY_SUCCESS = 68; 169 // General error for uncaught failure cases for example store stage. 170 TRAIN_EXAMPLE_STORE_ERROR = 69; 171 172 // Client started computation. 173 TRAIN_COMPUTATION_STARTED = 26; 174 175 // A TensorFlow error was encountered during computation, or the output from 176 // the computation was missing or of an unexpected type. Always preceded by 177 // TRAIN_COMPUTATION_STARTED. 178 TRAIN_COMPUTATION_ERROR_TENSORFLOW = 27; 179 180 // Reading from disk failed during computation. 181 // Always preceded by TRAIN_COMPUTATION_STARTED. 182 TRAIN_COMPUTATION_ERROR_IO = 28; 183 184 // Input parameters are invalid for the given computation. 185 // Always preceded by TRAIN_COMPUTATION_STARTED. 186 TRAIN_COMPUTATION_ERROR_INVALID_ARGUMENT = 29; 187 188 // An error occurred when processing the example selector. 189 // Always preceded by TRAIN_COMPUTATION_STARTED. 190 TRAIN_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 30; 191 192 // Client got interrupted during computation. 193 // Always preceded by TRAIN_COMPUTATION_STARTED. 194 TRAIN_COMPUTATION_CLIENT_INTERRUPTED = 31; 195 196 // Client finished computation. 197 // Always preceded by TRAIN_COMPUTATION_STARTED. 198 TRAIN_COMPUTATION_COMPLETED = 32; 199 200 // Client report result to server successfully 201 TRAIN_RESULT_REPORT_SUCCESS = 50; 202 203 // Client starts to upload successfully computed results. 204 TRAIN_RESULT_UPLOAD_STARTED = 33; 205 206 // An error occurred during upload. 207 // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. 208 TRAIN_RESULT_UPLOAD_ERROR_IO = 34; 209 210 // Upload was interrupted by the client. 211 // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. 212 TRAIN_RESULT_UPLOAD_CLIENT_INTERRUPTED = 35; 213 214 // Upload was aborted by the server. 215 // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. 216 TRAIN_RESULT_UPLOAD_SERVER_ABORTED = 36; 217 218 // Client uploaded training results to the server 219 // Always preceded by TRAIN_RESULT_UPLOAD_STARTED. 220 TRAIN_RESULT_UPLOADED = 37; 221 222 // Client starts to upload failure report. 223 TRAIN_FAILURE_UPLOAD_STARTED = 38; 224 225 // An error occurred during upload. 226 // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. 227 TRAIN_FAILURE_UPLOAD_ERROR_IO = 39; 228 229 // Upload was interrupted. 230 // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. 231 TRAIN_FAILURE_UPLOAD_CLIENT_INTERRUPTED = 40; 232 233 // Upload was interrupted. 234 // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. 235 TRAIN_FAILURE_UPLOAD_SERVER_ABORTED = 41; 236 237 // Client uploaded failure report to the server 238 // Always preceded by TRAIN_FAILURE_UPLOAD_STARTED. 239 TRAIN_FAILURE_UPLOADED = 42; 240 241 // Client failed to initialize a component, but execution was not halted. 242 TRAIN_INITIALIZATION_ERROR_NONFATAL = 43; 243 244 // Client failed to initialize a component, and execution was halted. 245 TRAIN_INITIALIZATION_ERROR_FATAL = 44; 246 247 // Client receives http status = 403 UNAUTHORIZED when creating task assignment. 248 TRAIN_TASK_ASSIGNMENT_UNAUTHORIZED= 45; 249 250 // Client is authorized to create task assignment. 251 TRAIN_TASK_ASSIGNMENT_AUTH_SUCCEEDED = 46; 252 253 // Client receives http status = 403 UNAUTHORIZED when reporting result. 254 TRAIN_REPORT_RESULT_UNAUTHORIZED= 47; 255 256 // Client is authorized to report result. 257 TRAIN_INITIATE_REPORT_RESULT_AUTH_SUCCEEDED = 48; 258 259 // Enums related to key attestation phase. 260 TRAIN_KEY_ATTESTATION_NO_SUCH_ALGORITHM_EXCEPTION = 79; 261 TRAIN_KEY_ATTESTATION_NO_SUCH_PROVIDER_EXCEPTION = 80; 262 TRAIN_KEY_ATTESTATION_IO_EXCEPTION = 81; 263 TRAIN_KEY_ATTESTATION_KEYSTORE_EXCEPTION = 82; 264 TRAIN_KEY_ATTESTATION_CERTIFICATE_EXCEPTION = 83; 265 TRAIN_KEY_ATTESTATION_ERROR = 84; 266 // Client successfully generates an attestation record. 267 TRAIN_KEY_ATTESTATION_SUCCEEDED = 49; 268 269 // Client successfully finishes one round of training. 270 TRAIN_RUN_COMPLETE = 52; 271 272 // Log the fact that a trainging job was started. 273 TRAIN_RUN_STARTED = 53; 274 275 // If any throwable was caught during worker executing training logic. 276 TRAIN_RUN_FAILED_WITH_EXCEPTION = 54; 277 278 // Train failed during checkin at task assignment step. 279 TRAIN_RUN_FAILED_WITH_REJECTION = 55; 280 281 // Eligibility check failed during checkin. 282 TRAIN_RUN_FAILED_NOT_ELIGIBLE = 56; 283 284 // Model and plan download failed during checkin. 285 TRAIN_RUN_FAILED_DOWNLOAD_FAILED = 57; 286 287 // Actual ML computation failed. 288 TRAIN_RUN_FAILED_COMPUTATION_FAILED = 58; 289 290 // Report success to server failed. 291 TRAIN_RUN_FAILED_REPORT_FAILED = 59; 292 293 // Failed to fetch encryption keys. 294 TRAIN_RUN_FAILED_ENCRYPTION_KEY_FETCH_FAILED = 60; 295 296 // Additional conditions chaeck failed. 297 TRAIN_RUN_FAILED_CONDITIONS_FAILED = 61; 298 299 // Failed to fetch encryption keys due to timeout. 300 TRAIN_ENCRYPTION_KEY_FETCH_TIMEOUT_ERROR = 73; 301 302 // Fetch encryption keys started. 303 TRAIN_ENCRYPTION_KEY_FETCH_START = 74; 304 305 // Failed to fetch encryption keys due to empty fetch URI. 306 TRAIN_ENCRYPTION_KEY_FETCH_FAILED_EMPTY_URI = 75; 307 308 // Failed to fetch encryption keys due to http request creation failure. 309 TRAIN_ENCRYPTION_KEY_FETCH_REQUEST_CREATION_FAILED = 76; 310 311 // Failed to fetch encryption keys due response parsing failure. 312 TRAIN_ENCRYPTION_KEY_FETCH_INVALID_PAYLOAD = 77; 313 314 // Fetch encryption keys finished successfully. 315 TRAIN_ENCRYPTION_KEY_FETCH_SUCCESS = 78; 316} 317 318// Enum used to track federated computation trace events. 319// Next Tag: 2 320enum TraceEventKind { 321 // Undefined value. 322 TRACE_EVENT_KIND_UNSPECIFIED = 0; 323 324 // Trace for key fetch background job. 325 BACKGROUND_ENCRYPTION_KEY_FETCH = 1; 326}