{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":295612457,"defaultBranch":"main","name":"turing","ownerLogin":"caraml-dev","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-09-15T04:17:21.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/106294966?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717758911.0","currentOid":""},"activityList":{"items":[{"before":"cbebbd65c009e6feabde04d14116a7a46c4d25ff","after":"91e22116cad1eb3b70ec100be94d683c8fa0b092","ref":"refs/heads/main","pushedAt":"2024-06-07T11:14:44.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"Move ensembler deletion logic to ensembler tojson method (#382)","shortMessageHtmlLink":"Move ensembler deletion logic to ensembler tojson method (#382)"}},{"before":"0d6f5780491390f68c407ab2529cd83d905858eb","after":"cbebbd65c009e6feabde04d14116a7a46c4d25ff","ref":"refs/heads/main","pushedAt":"2024-06-03T02:16:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"feat(api,ui,sdk): Make CPU limits configurable (#381)\n\n* Update swagger docs\r\n\r\n* Update sdk autogenerated openapi classes\r\n\r\n* Refactor knativeServiceConfig and make it an attribute of the service builder\r\n\r\n* Add cpu limit to resource requests and refactor knative service struct\r\n\r\n* Simplify diff reporting steps in unit test helper function\r\n\r\n* Fix k8s service unit test\r\n\r\n* Refactor how cpu and memory limits are set for fluentd stateful set\r\n\r\n* Simplify if else-block in cpu limit helper function\r\n\r\n* Update openapi specs\r\n\r\n* Update python unit tests\r\n\r\n* Add cpu limit form group component\r\n\r\n* Refactor cpu limit as nullable field\r\n\r\n* Add default values for cpu limit in all router components\r\n\r\n* Fix tooltip description\r\n\r\n* Rename cpu limit section\r\n\r\n* Update docs\r\n\r\n* Replace env var append function with merge with replace function\r\n\r\n* Add codecov config file that adds a threshold to allow random code coverage decreases\r\n\r\n* Replace outdated comment with more detailed on describing the flow of setting resource requirement values\r\n\r\n* Simplify if/else conditions in getCPULimit","shortMessageHtmlLink":"feat(api,ui,sdk): Make CPU limits configurable (#381)"}},{"before":"c96619d894db27c99bdf738d61237b3241121e93","after":"0d6f5780491390f68c407ab2529cd83d905858eb","ref":"refs/heads/main","pushedAt":"2024-05-20T08:30:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"fix(api,ui): Fix autoscaling target parsing (#380)\n\n* Allow setting of autoscaling targets on the ui without constraints on number of decimal places\r\n\r\n* Add parsing of autoscaling targets to int for cpu and rps\r\n\r\n* Update min and step size for autoscaling target field\r\n\r\n* Update unit tests and error messages","shortMessageHtmlLink":"fix(api,ui): Fix autoscaling target parsing (#380)"}},{"before":"9b21e1b9567932b9119fe15e1c7c81f4828ad434","after":null,"ref":"refs/tags/v1.18.0","pushedAt":"2024-05-08T06:36:53.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"}},{"before":"9b21e1b9567932b9119fe15e1c7c81f4828ad434","after":"c96619d894db27c99bdf738d61237b3241121e93","ref":"refs/heads/main","pushedAt":"2024-05-08T06:36:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Refactor JobState to string (#379)","shortMessageHtmlLink":"Refactor JobState to string (#379)"}},{"before":null,"after":"b0b5fdf080096c77050ee55c4834f6fe209c849f","ref":"refs/heads/fix-image-building-api","pushedAt":"2024-05-08T05:54:06.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Refactor JobState to string","shortMessageHtmlLink":"Refactor JobState to string"}},{"before":"b4bc5199d708290ab05a2ad4c31f0a41e63f8186","after":"9b21e1b9567932b9119fe15e1c7c81f4828ad434","ref":"refs/heads/main","pushedAt":"2024-05-07T09:20:28.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Ensembler Image Building API (#376)\n\n* [wip] list images and build image api\r\n\r\n* Fix existing api-test\r\n\r\n* Update open api spec\r\n\r\n* Generate SDK client\r\n\r\n* Fix lint\r\n\r\n* Update specs/ensembler-images.yaml\r\n\r\n* Implement image building API in SDK\r\n\r\n* Pin pytest version\r\n\r\n* Revert turing/version.py\r\n\r\n* Update api test\r\n\r\n* Fix lint api\r\n\r\n* Fix lint api","shortMessageHtmlLink":"Ensembler Image Building API (#376)"}},{"before":"1c7092d4345acbbdbb40d79d21e59f8d0f72f083","after":"de804149afa2149d93ec3b0bb919399251ad578d","ref":"refs/heads/image-building-api","pushedAt":"2024-05-07T09:03:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Fix lint api","shortMessageHtmlLink":"Fix lint api"}},{"before":"1200d80ad1d9283aaf0fd3f989b5e80b52b8550d","after":"1c7092d4345acbbdbb40d79d21e59f8d0f72f083","ref":"refs/heads/image-building-api","pushedAt":"2024-05-07T08:11:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Fix lint api","shortMessageHtmlLink":"Fix lint api"}},{"before":"d43eedc63c7bbe21793a74f6dff3d1cfe1c42ab9","after":"1200d80ad1d9283aaf0fd3f989b5e80b52b8550d","ref":"refs/heads/image-building-api","pushedAt":"2024-05-07T07:48:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Update api test","shortMessageHtmlLink":"Update api test"}},{"before":"d9d5959eb6aa5ac95e460d2d79cb739b16a2088b","after":"d43eedc63c7bbe21793a74f6dff3d1cfe1c42ab9","ref":"refs/heads/image-building-api","pushedAt":"2024-05-07T06:04:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Revert turing/version.py","shortMessageHtmlLink":"Revert turing/version.py"}},{"before":"bab3be2b55b6ddc79ab8a4bada0372aee859e1b0","after":"d9d5959eb6aa5ac95e460d2d79cb739b16a2088b","ref":"refs/heads/image-building-api","pushedAt":"2024-05-07T06:01:42.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Merge branch 'main' into image-building-api","shortMessageHtmlLink":"Merge branch 'main' into image-building-api"}},{"before":"2b9c56ef43ef1bb1f41568871fcf69f201d51bff","after":"b4bc5199d708290ab05a2ad4c31f0a41e63f8186","ref":"refs/heads/main","pushedAt":"2024-05-07T03:29:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"fix(sdk): Remove exp engine passkey when retrieving routers from the API server (#377)\n\n* Add steps to remove exp engine passkey when retrieving routers from the API server\r\n\r\n* Fix unit tests\r\n\r\n* Pin pytest versions\r\n\r\n* Add additional existence check before removing passkeys\r\n\r\n* Add comment to describe rationale behind setting experiment engine passkey value to none","shortMessageHtmlLink":"fix(sdk): Remove exp engine passkey when retrieving routers from the …"}},{"before":"84339fa1c440ee923c0137eea073a1068479a58f","after":"2b9c56ef43ef1bb1f41568871fcf69f201d51bff","ref":"refs/heads/main","pushedAt":"2024-05-07T02:56:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"Add new autoscaling target processing for concurrency (#378)","shortMessageHtmlLink":"Add new autoscaling target processing for concurrency (#378)"}},{"before":"47662f9d7563a4ee1028269f5d49ccd211b6a1fa","after":"bab3be2b55b6ddc79ab8a4bada0372aee859e1b0","ref":"refs/heads/image-building-api","pushedAt":"2024-05-06T06:55:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Pin pytest version","shortMessageHtmlLink":"Pin pytest version"}},{"before":"3924d1db9136f16d5ab97d88cdd9e2ee60062711","after":"47662f9d7563a4ee1028269f5d49ccd211b6a1fa","ref":"refs/heads/image-building-api","pushedAt":"2024-05-06T05:26:26.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Implement image building API in SDK","shortMessageHtmlLink":"Implement image building API in SDK"}},{"before":"e4a53fbca2e70266d0b61d0bd1e89c0b2148d0d4","after":"3924d1db9136f16d5ab97d88cdd9e2ee60062711","ref":"refs/heads/image-building-api","pushedAt":"2024-05-03T04:30:32.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Update specs/ensembler-images.yaml","shortMessageHtmlLink":"Update specs/ensembler-images.yaml"}},{"before":"77b4301e4f7127851d85534685e53310798b006a","after":"e4a53fbca2e70266d0b61d0bd1e89c0b2148d0d4","ref":"refs/heads/image-building-api","pushedAt":"2024-05-03T02:59:54.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Fix lint","shortMessageHtmlLink":"Fix lint"}},{"before":"5df7ad28409317747c1b5d7945f85ed1bd7daa34","after":"77b4301e4f7127851d85534685e53310798b006a","ref":"refs/heads/image-building-api","pushedAt":"2024-05-03T02:37:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"Fix existing api-test","shortMessageHtmlLink":"Fix existing api-test"}},{"before":null,"after":"5df7ad28409317747c1b5d7945f85ed1bd7daa34","ref":"refs/heads/image-building-api","pushedAt":"2024-04-29T15:23:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ariefrahmansyah","name":"Arief Rahmansyah","path":"/ariefrahmansyah","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8122852?s=80&v=4"},"commit":{"message":"[wip] list images and build image api","shortMessageHtmlLink":"[wip] list images and build image api"}},{"before":"30ebd144f415cda173431ae1c3ec3f559326eaf3","after":"84339fa1c440ee923c0137eea073a1068479a58f","ref":"refs/heads/main","pushedAt":"2024-04-24T07:11:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"leonlnj","name":null,"path":"/leonlnj","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/30390872?s=80&v=4"},"commit":{"message":"feat: support array in experiment engine json (#375)\n\n* update json parser for request\r\n\r\n* add object value\r\n\r\n* update test to allow object\r\n\r\n* update default handling to unknown type\r\n\r\n* add test for multiple header\r\n\r\n* add test for object type","shortMessageHtmlLink":"feat: support array in experiment engine json (#375)"}},{"before":"2aa0d13726ddd01e36a0d4ed7d17127730b752ae","after":"30ebd144f415cda173431ae1c3ec3f559326eaf3","ref":"refs/heads/main","pushedAt":"2024-04-15T03:24:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"chore(api): Remove authz middleware and update Turing API server, router, plugin dependencies (#371)\n\n* Remove unused authz middleware\r\n\r\n* Remove authz related configs\r\n\r\n* Bump up version dependencies\r\n\r\n* Update go version in github workflow\r\n\r\n* Add step to install go 1.22\r\n\r\n* Update knative pkg\r\n\r\n* Update containerregistry package\r\n\r\n* Update go mod file to use branched merlin package version\r\n\r\n* Update turing api dockerfile to use newer version of go\r\n\r\n* Update golanci-lint version\r\n\r\n* Move jsonError helper function from removed authz file to openapi validation file\r\n\r\n* Specify go-hclog version\r\n\r\n* Rename unused function arguments in experiment engines\r\n\r\n* Fix lint comments in turing router\r\n\r\n* Rollback zap version\r\n\r\n* Update zap-to-hclog in experiment, router, and api\r\n\r\n* Refactor merlin's environments api\r\n\r\n* Update go version for router and experiment engine\r\n\r\n* Add steps to install go 1.22 for experiment engine and router\r\n\r\n* Update zap and mlp in experiment engines and router\r\n\r\n* Patch new EnvironmentsGet method\r\n\r\n* Remove steps to verify the same google auth client is created by merlin and mlp\r\n\r\n* Add custom compare function to allow nested unexported fields\r\n\r\n* Refactor e2e tests to make them compatible with previously used libraries\r\n\r\n* Clean up refactoring of mlp service\r\n\r\n* Bump up ginkgo versions\r\n\r\n* Fix e2e test where return value of a function is no longer a slice of values but a slice of pointers\r\n\r\n* Add gcflags to gotest\r\n\r\n* Fix bug in unit tests where mutex locks were copied\r\n\r\n* Remove dot imports\r\n\r\n* Fix lint comments by renaming unused arguments and nonstandard variable or function names\r\n\r\n* Add indirect function in router cleanup helper function\r\n\r\n* Parameterise version of Go installed\r\n\r\n* Refactor ApplyPodDisruptionBudget signature by removing namespace from arguments","shortMessageHtmlLink":"chore(api): Remove authz middleware and update Turing API server, rou…"}},{"before":"75156930c7828d3ba48975c5c7b7eb03073894db","after":"2aa0d13726ddd01e36a0d4ed7d17127730b752ae","ref":"refs/heads/main","pushedAt":"2024-04-05T03:56:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"Fix incorrect tag name used to check for the existence of built docker images (#374)","shortMessageHtmlLink":"Fix incorrect tag name used to check for the existence of built docke…"}},{"before":"40df8e9bb65849f396fc394c8f60f845571f4e59","after":"75156930c7828d3ba48975c5c7b7eb03073894db","ref":"refs/heads/main","pushedAt":"2024-04-03T04:25:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"feat(api): Replace fluentd deployment with statefulset (#370)\n\n* Replace fluentd deployment with statefulset\r\n\r\n* Remove redundant pvc volume and refactor volume mount from fluentd pod spec\r\n\r\n* Refactor fluentd deletion steps to remove its stateful set\r\n\r\n* Add pod disruption budgets to fluentd stateful set\r\n\r\n* Shorten lines that are too long\r\n\r\n* Halve fluentd cpu and mem requests\r\n\r\n* Fix docstring typo\r\n\r\n* Configure fluentd flush interval seconds to make it dependent on the number of replicas\r\n\r\n* Refactor pvc deletion helper function to make it more generic\r\n\r\n* Make pdb key dependent on the component type to be deployed\r\n\r\n* Fix long line lint error\r\n\r\n* Fix unit tests after changes to pdb keys","shortMessageHtmlLink":"feat(api): Replace fluentd deployment with statefulset (#370)"}},{"before":"9fc8000ab4af84e12e6c78c0ec9991d1daee1242","after":"40df8e9bb65849f396fc394c8f60f845571f4e59","ref":"refs/heads/main","pushedAt":"2024-04-01T12:58:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"shydefoo","name":null,"path":"/shydefoo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20089568?s=80&v=4"},"commit":{"message":"feat: Include mlp project labels in created resources labels (#373)\n\n* Update labeller\r\n\r\n* Add Labels field to BuildLabel references\r\n\r\n* Fix test expected value\r\n\r\n* Update invalid label test case","shortMessageHtmlLink":"feat: Include mlp project labels in created resources labels (#373)"}},{"before":"9fc8000ab4af84e12e6c78c0ec9991d1daee1242","after":null,"ref":"refs/tags/v.1.17.3","pushedAt":"2024-03-19T04:43:26.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mbruner","name":"Maksym Bruner","path":"/mbruner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2732935?s=80&v=4"}},{"before":"80ea310569db214aad6d3b39380e18a6bafd2c6c","after":"9fc8000ab4af84e12e6c78c0ec9991d1daee1242","ref":"refs/heads/main","pushedAt":"2024-03-19T04:40:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mbruner","name":"Maksym Bruner","path":"/mbruner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2732935?s=80&v=4"},"commit":{"message":"fix(image-builder): use google keychain for Artifact Registry domains (#372)\n\n* fix(image-builder): use google keychain for Artifact Registry domains\r\n\r\n* fix(image-builder): format code","shortMessageHtmlLink":"fix(image-builder): use google keychain for Artifact Registry domains ("}},{"before":"9f6fbf974e5ef2bc28fa5c5584daac63d2a40b2e","after":"5a22cb7ba5eae91655785be4beac34595eef78ee","ref":"refs/heads/add-support-of-artifact-registry","pushedAt":"2024-03-19T04:22:27.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mbruner","name":"Maksym Bruner","path":"/mbruner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2732935?s=80&v=4"},"commit":{"message":"fix(image-builder): format code","shortMessageHtmlLink":"fix(image-builder): format code"}},{"before":null,"after":"9f6fbf974e5ef2bc28fa5c5584daac63d2a40b2e","ref":"refs/heads/add-support-of-artifact-registry","pushedAt":"2024-03-19T03:28:52.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mbruner","name":"Maksym Bruner","path":"/mbruner","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/2732935?s=80&v=4"},"commit":{"message":"fix(image-builder): use google keychain for Artifact Registry domains","shortMessageHtmlLink":"fix(image-builder): use google keychain for Artifact Registry domains"}},{"before":"b4ff1319e7b98151f2a89ee90bf6f6685db63910","after":"80ea310569db214aad6d3b39380e18a6bafd2c6c","ref":"refs/heads/main","pushedAt":"2024-03-04T08:28:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"deadlycoconuts","name":"Ewe Zi Yi","path":"/deadlycoconuts","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/36802364?s=80&v=4"},"commit":{"message":"Remove ticks and display min max labels in EuiDualRange slider (#369)","shortMessageHtmlLink":"Remove ticks and display min max labels in EuiDualRange slider (#369)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXyNHPgA","startCursor":null,"endCursor":null}},"title":"Activity · caraml-dev/turing"}