feat: add cron task that runs the minimal training pipeline nightly #966
FirefoxCI (pull_request)
The task that creates all of the other tasks in the task graph
Details
View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster
Task Status
Started: 2025-01-06T17:34:19.650Z
Resolved: 2025-01-06T17:34:50.885Z
Task Execution Time: 31 seconds, 235 milliseconds
Task Status: completed
Reason Resolved: completed
RunId: 0
Artifacts
- public/actions.json
- public/docker-contexts/base.tar.gz
- public/docker-contexts/inference.tar.gz
- public/docker-contexts/test.tar.gz
- public/docker-contexts/toolchain-build.tar.gz
- public/docker-contexts/train.tar.gz
- public/fetch-content
- public/full-task-graph.json
- public/label-to-taskid.json
- public/logs/live_backing.log
- public/logs/live.log
- public/optimizations.log
- public/parameters.yml
- public/runnable-jobs.json
- public/run-task
- public/target-tasks.json
- public/task-graph.json
[taskcluster 2025-01-06 17:34:19.700Z] Task ID: QWERZQMSQjOGwm7bIzGvFQ
[taskcluster 2025-01-06 17:34:19.700Z] Worker ID: 4439837941875977520
[taskcluster 2025-01-06 17:34:19.700Z] Worker Group: us-west1-a
[taskcluster 2025-01-06 17:34:19.700Z] Worker Node Type: projects/887720501152/machineTypes/n2-standard-2
[taskcluster 2025-01-06 17:34:19.700Z] Worker Pool: translations-1/decision-gcp
[taskcluster 2025-01-06 17:34:19.700Z] Worker Version: 38.0.5
[taskcluster 2025-01-06 17:34:19.701Z] Public IP: 34.19.110.149
[taskcluster 2025-01-06 17:34:19.701Z] Hostname: translations-1-decision-gcp-tp-1i7laqyioxvkbzwex-g
[taskcluster 2025-01-06 17:34:19.701Z] using cache "translations-level-1-checkouts-sparse-v2" -> /builds/worker/checkouts
559df9a599c4 - Started downloading
3bb7dd3accd0 - Started downloading
b57ab501a8f4 - Started downloading
559df9a599c4 - Downloaded in 0.323 seconds
b57ab501a8f4 - Downloaded in 0.44 seconds
3bb7dd3accd0 - Downloaded in 0.746 seconds
fad8d951cdaf - Started downloading
fad8d951cdaf - Downloaded in 0 seconds
Digest: sha256:8c57e30214c85625856479812e63212dc2873b1ffcd97467a7c93508cbb3075a
Status: Downloaded newer image for mozillareleases/taskgraph@sha256:8c57e30214c85625856479812e63212dc2873b1ffcd97467a7c93508cbb3075a
[taskcluster 2025-01-06 17:34:31.613Z] === Task Starting ===
[setup 2025-01-06T17:34:32.561Z] run-task started in /
[setup 2025-01-06T17:34:32.561Z] Invoked by command: --translations-checkout=/builds/worker/checkouts/src -- bash -cx cd /builds/worker/checkouts/src && ln -s /builds/worker/artifacts artifacts && taskgraph decision --pushlog-id='0' --pushdate='0' --project='translations' --owner='[email protected]' --level='1' --repository-type=git --tasks-for='github-pull-request' --base-repository='https://github.com/mozilla/translations' --base-ref='main' --base-rev='16077f1c1e3a4a0b269f1e49da831391122a3b5f' --head-repository='https://github.com/bhearsum/firefox-translations-training' --head-ref='cron-pipeline' --head-rev='853ef4882f95a1f9985acf33e8b2bb16cbb752c7'
[setup 2025-01-06T17:34:32.561Z] Python version: 3.11.2
[vcs 2025-01-06T17:34:32.563Z] WARNING: vcs checkout path (/builds/worker/checkouts/src) not in cache or volume; performance will likely suffer
[setup 2025-01-06T17:34:32.563Z] running as worker:worker
[vcs 2025-01-06T17:34:32.563Z] executing ['git', 'config', '--global', '--add', 'safe.directory', '/builds/worker/checkouts/src']
[vcs 2025-01-06T17:34:32.566Z] executing ['git', 'clone', 'https://github.com/mozilla/translations', '/builds/worker/checkouts/src']
[vcs 2025-01-06T17:34:32.568Z] Cloning into '/builds/worker/checkouts/src'...
[vcs 2025-01-06T17:34:34.338Z] executing ['git', 'fetch', 'origin', 'main']
[vcs 2025-01-06T17:34:34.671Z] From https://github.com/mozilla/translations
[vcs 2025-01-06T17:34:34.671Z] * branch main -> FETCH_HEAD
[vcs 2025-01-06T17:34:34.677Z] executing ['git', 'checkout', 'main']
[vcs 2025-01-06T17:34:34.730Z] Already on 'main'
[vcs 2025-01-06T17:34:34.731Z] Your branch is up to date with 'origin/main'.
[vcs 2025-01-06T17:34:34.731Z] executing ['git', 'fetch', 'origin', '16077f1c1e3a4a0b269f1e49da831391122a3b5f']
[vcs 2025-01-06T17:34:35.082Z] From https://github.com/mozilla/translations
[vcs 2025-01-06T17:34:35.083Z] * branch 16077f1c1e3a4a0b269f1e49da831391122a3b5f -> FETCH_HEAD
[vcs 2025-01-06T17:34:35.088Z] executing ['git', 'fetch', '--no-tags', 'https://github.com/bhearsum/firefox-translations-training', 'cron-pipeline']
[vcs 2025-01-06T17:34:35.437Z] From https://github.com/bhearsum/firefox-translations-training
[vcs 2025-01-06T17:34:35.437Z] * branch cron-pipeline -> FETCH_HEAD
[vcs 2025-01-06T17:34:35.440Z] executing ['git', 'checkout', '-f', '-B', 'cron-pipeline', '853ef4882f95a1f9985acf33e8b2bb16cbb752c7']
[vcs 2025-01-06T17:34:35.544Z] Switched to a new branch 'cron-pipeline'
[vcs 2025-01-06T17:34:35.544Z] executing ['git', 'submodule', 'init']
[vcs 2025-01-06T17:34:35.564Z] Submodule '3rd_party/browsermt-marian-dev' (https://github.com/browsermt/marian-dev) registered for path '3rd_party/browsermt-marian-dev'
[vcs 2025-01-06T17:34:35.565Z] Submodule 'extract-lex' (https://github.com/marian-nmt/extract-lex) registered for path '3rd_party/extract-lex'
[vcs 2025-01-06T17:34:35.566Z] Submodule 'fast_align' (https://github.com/clab/fast_align) registered for path '3rd_party/fast_align'
[vcs 2025-01-06T17:34:35.568Z] Submodule '3rd_party/kenlm' (https://github.com/kpu/kenlm) registered for path '3rd_party/kenlm'
[vcs 2025-01-06T17:34:35.568Z] Submodule '3rd_party/marian-dev' (https://github.com/marian-nmt/marian-dev) registered for path '3rd_party/marian-dev'
[vcs 2025-01-06T17:34:35.569Z] Submodule '3rd_party/preprocess' (https://github.com/kpu/preprocess.git) registered for path '3rd_party/preprocess'
[vcs 2025-01-06T17:34:35.569Z] Submodule 'inference/3rd_party/browsermt-marian-dev' (https://github.com/browsermt/marian-dev) registered for path 'inference/3rd_party/browsermt-marian-dev'
[vcs 2025-01-06T17:34:35.570Z] Submodule 'inference/3rd_party/emsdk' (https://github.com/emscripten-core/emsdk.git) registered for path 'inference/3rd_party/emsdk'
[vcs 2025-01-06T17:34:35.570Z] Submodule 'inference/3rd_party/ssplit-cpp' (https://github.com/browsermt/ssplit-cpp) registered for path 'inference/3rd_party/ssplit-cpp'
[vcs 2025-01-06T17:34:35.571Z] executing ['git', 'submodule', 'update', '--force']
[vcs 2025-01-06T17:34:35.591Z] Cloning into '/builds/worker/checkouts/src/3rd_party/browsermt-marian-dev'...
[vcs 2025-01-06T17:34:37.745Z] Cloning into '/builds/worker/checkouts/src/3rd_party/extract-lex'...
[vcs 2025-01-06T17:34:38.142Z] Cloning into '/builds/worker/checkouts/src/3rd_party/fast_align'...
[vcs 2025-01-06T17:34:38.527Z] Cloning into '/builds/worker/checkouts/src/3rd_party/kenlm'...
[vcs 2025-01-06T17:34:39.618Z] Cloning into '/builds/worker/checkouts/src/3rd_party/marian-dev'...
[vcs 2025-01-06T17:34:42.140Z] Cloning into '/builds/worker/checkouts/src/3rd_party/preprocess'...
[vcs 2025-01-06T17:34:42.922Z] Cloning into '/builds/worker/checkouts/src/inference/3rd_party/browsermt-marian-dev'...
[vcs 2025-01-06T17:34:45.068Z] Cloning into '/builds/worker/checkouts/src/inference/3rd_party/emsdk'...
[vcs 2025-01-06T17:34:46.043Z] Cloning into '/builds/worker/checkouts/src/inference/3rd_party/ssplit-cpp'...
[vcs 2025-01-06T17:34:46.504Z] Submodule path '3rd_party/browsermt-marian-dev': checked out '11c6ae7c46be21ef96ed10c60f28022fa968939f'
[vcs 2025-01-06T17:34:46.510Z] Submodule path '3rd_party/extract-lex': checked out '42fa605b53f32eaf6c6e0b5677255c21c91b3d49'
[vcs 2025-01-06T17:34:46.517Z] Submodule path '3rd_party/fast_align': checked out 'cab1e9aac8d3bb02ff5ae58218d8d225a039fa11'
[vcs 2025-01-06T17:34:46.537Z] Submodule path '3rd_party/kenlm': checked out 'bbf4fc511266c5d4515047055d7bdec659a6e158'
[vcs 2025-01-06T17:34:46.637Z] Submodule path '3rd_party/marian-dev': checked out 'e8a1a2530fb84cbff7383302ebca393e5875c441'
[vcs 2025-01-06T17:34:46.650Z] Submodule path '3rd_party/preprocess': checked out '64307314b4d5a9a0bd529b5c1036b0710d995eec'
[vcs 2025-01-06T17:34:46.712Z] Submodule path 'inference/3rd_party/browsermt-marian-dev': checked out '2781d735d4a10dca876d61be587afdab2726293c'
[vcs 2025-01-06T17:34:46.724Z] Submodule path 'inference/3rd_party/emsdk': checked out '2346baa7bb44a4a0571cc75f1986ab9aaa35aa03'
[vcs 2025-01-06T17:34:46.732Z] Submodule path 'inference/3rd_party/ssplit-cpp': checked out 'a311f9865ade34db1e8e080e6cc146f55dafb067'
[vcs 2025-01-06T17:34:46.733Z] cleaning git checkout...
[vcs 2025-01-06T17:34:46.733Z] executing ['git', 'clean', '-nxdff']
[vcs 2025-01-06T17:34:46.737Z] removing []
[vcs 2025-01-06T17:34:46.737Z] successfully cleaned git checkout!
[vcs 2025-01-06T17:34:46.739Z] TinderboxPrint:<a href='https://github.com/bhearsum/firefox-translations-training/commit/853ef4882f95a1f9985acf33e8b2bb16cbb752c7' title='Built from firefox-translations-training commit 853ef4882f95a1f9985acf33e8b2bb16cbb752c7'>853ef4882f95a1f9985acf33e8b2bb16cbb752c7</a>
[task 2025-01-06T17:34:46.739Z] executing ['bash', '-cx', "cd /builds/worker/checkouts/src && ln -s /builds/worker/artifacts artifacts && taskgraph decision --pushlog-id='0' --pushdate='0' --project='translations' --owner='[email protected]' --level='1' --repository-type=git --tasks-for='github-pull-request' --base-repository='https://github.com/mozilla/translations' --base-ref='main' --base-rev='16077f1c1e3a4a0b269f1e49da831391122a3b5f' --head-repository='https://github.com/bhearsum/firefox-translations-training' --head-ref='cron-pipeline' --head-rev='853ef4882f95a1f9985acf33e8b2bb16cbb752c7' \n"]
[task 2025-01-06T17:34:46.741Z] + cd /builds/worker/checkouts/src
[task 2025-01-06T17:34:46.741Z] + ln -s /builds/worker/artifacts artifacts
[task 2025-01-06T17:34:46.742Z] + taskgraph decision --pushlog-id=0 --pushdate=0 --project=translations [email protected] --level=1 --repository-type=git --tasks-for=github-pull-request --base-repository=https://github.com/mozilla/translations --base-ref=main --base-rev=16077f1c1e3a4a0b269f1e49da831391122a3b5f --head-repository=https://github.com/bhearsum/firefox-translations-training --head-ref=cron-pipeline --head-rev=853ef4882f95a1f9985acf33e8b2bb16cbb752c7
[task 2025-01-06T17:34:46.982Z] 2025-01-06 17:34:46,982 - INFO - Loading graph configuration.
[task 2025-01-06T17:34:47.004Z] 2025-01-06 17:34:47,004 - WARNING - using default project parameters; add translations to PER_PROJECT_PARAMETERS in /usr/local/lib/python3.11/dist-packages/taskgraph/decision.py to customize behavior for this project
[task 2025-01-06T17:34:47.012Z] 2025-01-06 17:34:47,012 - INFO - Using Parameters(id=28b5680061ca) (from defaults)
[task 2025-01-06T17:34:47.014Z] 2025-01-06 17:34:47,014 - INFO - writing artifact file `parameters.yml`
[task 2025-01-06T17:34:47.021Z] 2025-01-06 17:34:47,021 - INFO - writing artifact file `actions.json`
[task 2025-01-06T17:34:47.024Z] 2025-01-06 17:34:47,024 - INFO - Loading kinds
[task 2025-01-06T17:34:47.054Z] 2025-01-06 17:34:47,054 - INFO - Generating full task set
[task 2025-01-06T17:34:47.082Z] 2025-01-06 17:34:47,082 - INFO - Generated 12 tasks for kind dataset
[task 2025-01-06T17:34:47.083Z] 2025-01-06 17:34:47,083 - INFO - Writing docker-contexts/base.tar.gz for docker image base
[task 2025-01-06T17:34:47.101Z] 2025-01-06 17:34:47,101 - INFO - Writing docker-contexts/inference.tar.gz for docker image inference
[task 2025-01-06T17:34:47.102Z] 2025-01-06 17:34:47,102 - INFO - Writing docker-contexts/test.tar.gz for docker image test
[task 2025-01-06T17:34:47.103Z] 2025-01-06 17:34:47,103 - INFO - Writing docker-contexts/train.tar.gz for docker image train
[task 2025-01-06T17:34:47.103Z] 2025-01-06 17:34:47,103 - INFO - Writing docker-contexts/toolchain-build.tar.gz for docker image toolchain-build
[task 2025-01-06T17:34:47.122Z] 2025-01-06 17:34:47,122 - INFO - Generated 5 tasks for kind docker-image
[task 2025-01-06T17:34:47.130Z] 2025-01-06 17:34:47,130 - INFO - Generated 9 tasks for kind fetch
[task 2025-01-06T17:34:47.211Z] 2025-01-06 17:34:47,210 - INFO - Generated 10 tasks for kind toolchain
[task 2025-01-06T17:34:47.215Z] 2025-01-06 17:34:47,215 - INFO - Generated 4 tasks for kind analyze-corpus
[task 2025-01-06T17:34:47.220Z] 2025-01-06 17:34:47,220 - INFO - Generated 4 tasks for kind analyze-mono
[task 2025-01-06T17:34:47.225Z] 2025-01-06 17:34:47,225 - INFO - Generated 4 tasks for kind clean-corpus
[task 2025-01-06T17:34:47.227Z] 2025-01-06 17:34:47,227 - INFO - Generated 1 tasks for kind bicleaner-model
[task 2025-01-06T17:34:47.232Z] 2025-01-06 17:34:47,232 - INFO - Generated 4 tasks for kind bicleaner
[task 2025-01-06T17:34:47.237Z] 2025-01-06 17:34:47,237 - INFO - Generated 4 tasks for kind clean-mono
[task 2025-01-06T17:34:47.241Z] 2025-01-06 17:34:47,241 - INFO - Generated 1 tasks for kind merge-corpus
[task 2025-01-06T17:34:47.245Z] 2025-01-06 17:34:47,245 - INFO - Generated 2 tasks for kind merge-mono
[task 2025-01-06T17:34:47.247Z] 2025-01-06 17:34:47,247 - INFO - Generated 1 tasks for kind train-vocab
[task 2025-01-06T17:34:47.249Z] 2025-01-06 17:34:47,249 - INFO - Generated 1 tasks for kind split-corpus
[task 2025-01-06T17:34:47.252Z] 2025-01-06 17:34:47,252 - INFO - Generated 1 tasks for kind merge-devset
[task 2025-01-06T17:34:47.256Z] 2025-01-06 17:34:47,256 - INFO - Generated 4 tasks for kind inference
[task 2025-01-06T17:34:47.260Z] 2025-01-06 17:34:47,260 - INFO - Generated 1 tasks for kind train-backwards
[task 2025-01-06T17:34:47.262Z] 2025-01-06 17:34:47,262 - INFO - Generated 1 tasks for kind split-mono-src
[task 2025-01-06T17:34:47.264Z] 2025-01-06 17:34:47,264 - INFO - Generated 1 tasks for kind split-mono-trg
[task 2025-01-06T17:34:47.269Z] 2025-01-06 17:34:47,268 - INFO - Generated 7 tasks for kind tests
[task 2025-01-06T17:34:47.273Z] 2025-01-06 17:34:47,273 - INFO - Generated 2 tasks for kind translate-mono-trg
[task 2025-01-06T17:34:47.276Z] 2025-01-06 17:34:47,276 - INFO - Generated 1 tasks for kind collect-mono-trg
[task 2025-01-06T17:34:47.279Z] 2025-01-06 17:34:47,278 - INFO - Generated 1 tasks for kind alignments-original
[task 2025-01-06T17:34:47.281Z] 2025-01-06 17:34:47,281 - INFO - Generated 1 tasks for kind alignments-backtranslated
[task 2025-01-06T17:34:47.284Z] 2025-01-06 17:34:47,284 - INFO - Generated 1 tasks for kind train-teacher
[task 2025-01-06T17:34:47.287Z] 2025-01-06 17:34:47,287 - INFO - Generated 1 tasks for kind evaluate-teacher-ensemble
[task 2025-01-06T17:34:47.291Z] 2025-01-06 17:34:47,291 - INFO - Generated 2 tasks for kind translate-corpus
[task 2025-01-06T17:34:47.294Z] 2025-01-06 17:34:47,294 - INFO - Generated 2 tasks for kind extract-best
[task 2025-01-06T17:34:47.296Z] 2025-01-06 17:34:47,296 - INFO - Generated 1 tasks for kind collect-corpus
[task 2025-01-06T17:34:47.300Z] 2025-01-06 17:34:47,300 - INFO - Generated 2 tasks for kind translate-mono-src
[task 2025-01-06T17:34:47.302Z] 2025-01-06 17:34:47,302 - INFO - Generated 1 tasks for kind collect-mono-src
[task 2025-01-06T17:34:47.305Z] 2025-01-06 17:34:47,305 - INFO - Generated 1 tasks for kind merge-translated
[task 2025-01-06T17:34:47.307Z] 2025-01-06 17:34:47,307 - INFO - Generated 1 tasks for kind score
[task 2025-01-06T17:34:47.309Z] 2025-01-06 17:34:47,309 - INFO - Generated 1 tasks for kind cefilter
[task 2025-01-06T17:34:47.311Z] 2025-01-06 17:34:47,311 - INFO - Generated 1 tasks for kind shortlist
[task 2025-01-06T17:34:47.314Z] 2025-01-06 17:34:47,314 - INFO - Generated 1 tasks for kind alignments-student
[task 2025-01-06T17:34:47.316Z] 2025-01-06 17:34:47,316 - INFO - Generated 1 tasks for kind train-student
[task 2025-01-06T17:34:47.319Z] 2025-01-06 17:34:47,319 - INFO - Generated 1 tasks for kind finetune-student
[task 2025-01-06T17:34:47.321Z] 2025-01-06 17:34:47,321 - INFO - Generated 1 tasks for kind quantize
[task 2025-01-06T17:34:47.324Z] 2025-01-06 17:34:47,323 - INFO - Generated 1 tasks for kind export
[task 2025-01-06T17:34:47.329Z] 2025-01-06 17:34:47,329 - INFO - Generated 4 tasks for kind evaluate
[task 2025-01-06T17:34:47.332Z] 2025-01-06 17:34:47,332 - INFO - Generated 1 tasks for kind evaluate-quantized
[task 2025-01-06T17:34:47.333Z] 2025-01-06 17:34:47,333 - INFO - Generated 1 tasks for kind all-pipeline
[task 2025-01-06T17:34:47.334Z] 2025-01-06 17:34:47,334 - INFO - Generated 1 tasks for kind all-pr-pipeline
[task 2025-01-06T17:34:47.335Z] 2025-01-06 17:34:47,335 - INFO - Generating full task graph
[task 2025-01-06T17:34:47.335Z] 2025-01-06 17:34:47,335 - INFO - Full task graph contains 108 tasks and 301 dependencies
[task 2025-01-06T17:34:47.340Z] 2025-01-06 17:34:47,340 - INFO - writing artifact file `full-task-graph.json`
[task 2025-01-06T17:34:47.361Z] 2025-01-06 17:34:47,361 - INFO - writing artifact file `runnable-jobs.json`
[task 2025-01-06T17:34:47.362Z] 2025-01-06 17:34:47,362 - INFO - Generating target task set
[task 2025-01-06T17:34:47.363Z] 2025-01-06 17:34:47,363 - INFO - Filter filter_target_tasks pruned 86 tasks (22 remain)
[task 2025-01-06T17:34:47.363Z] 2025-01-06 17:34:47,363 - INFO - writing artifact file `target-tasks.json`
[task 2025-01-06T17:34:47.363Z] 2025-01-06 17:34:47,363 - INFO - Generating target task graph
[task 2025-01-06T17:34:47.363Z] 2025-01-06 17:34:47,363 - INFO - Adding 5 tasks with `always_target` attribute
[task 2025-01-06T17:34:47.364Z] 2025-01-06 17:34:47,364 - INFO - Generating optimized task graph
[task 2025-01-06T17:34:47.369Z] 2025-01-06 17:34:47,369 - INFO - Removed 4 tasks by skip-unless-changed (skip-unless-changed) during optimization.
[task 2025-01-06T17:34:47.980Z] 2025-01-06 17:34:47,980 - INFO - Replaced 94 tasks by index-search (index-search) during optimization.
[task 2025-01-06T17:34:47.982Z] 2025-01-06 17:34:47,982 - INFO - writing artifact file `task-graph.json`
[task 2025-01-06T17:34:47.983Z] 2025-01-06 17:34:47,983 - INFO - writing artifact file `label-to-taskid.json`
[task 2025-01-06T17:34:47.985Z] 2025-01-06 17:34:47,985 - INFO - Creating task with taskId QRyp-Fq6T1G2w2sVE0wR2Q for tests-test
[task 2025-01-06T17:34:47.987Z] 2025-01-06 17:34:47,986 - INFO - Creating task with taskId WpAHGCX6SSKMfex93WaUYA for tests-lint-eslint
[task 2025-01-06T17:34:47.989Z] 2025-01-06 17:34:47,989 - INFO - Creating task with taskId TkS1J94pRTOEqvYex_sK8A for tests-lint-black
[task 2025-01-06T17:34:47.991Z] 2025-01-06 17:34:47,991 - INFO - Creating task with taskId PFKFifw6ThuHGqPcbe5ZHg for all-pr-pipeline-ru-en-1
[task 2025-01-06T17:34:47.997Z] 2025-01-06 17:34:47,997 - INFO - Creating task with taskId WoK1JlZ_Ss-cXbeT5CtKsQ for tests-lint-pyright
[task 2025-01-06T17:34:47.999Z] 2025-01-06 17:34:47,998 - INFO - Creating task with taskId ROQGAkLzR_GiEtQ9dsWsQw for tests-taskgraph-definition
[task 2025-01-06T17:34:48.002Z] 2025-01-06 17:34:48,001 - INFO - Creating task with taskId Knf_1AOMQ_ex88xlLlf_kA for tests-lint-ruff
[task 2025-01-06T17:34:48.005Z] 2025-01-06 17:34:48,005 - INFO - Creating task with taskId QmwFTidbRPOWOolUmGZppg for tests-taskgraph-diff
[taskcluster 2025-01-06 17:34:48.470Z] === Task Finished ===
[taskcluster 2025-01-06 17:34:50.529Z] Successful task run with exit code: 0 completed in 30.83 seconds