argus-alm 0.15.9__tar.gz → 0.15.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. argus_alm-0.15.11/.github/workflows/call_jira_sync.yml +42 -0
  2. argus_alm-0.15.11/.github/workflows/close_issue_for_scylla_employee.yml +62 -0
  3. {argus_alm-0.15.9 → argus_alm-0.15.11}/.github/workflows/test.yml +1 -1
  4. {argus_alm-0.15.9 → argus_alm-0.15.11}/PKG-INFO +7 -2
  5. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/_version.py +3 -3
  6. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/base.py +25 -2
  7. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/driver_matrix_tests/client.py +4 -2
  8. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/generic/client.py +4 -2
  9. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/sct/client.py +24 -3
  10. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/sirenada/client.py +4 -2
  11. argus_alm-0.15.11/argusAI/README.md +149 -0
  12. argus_alm-0.15.11/argusAI/event_similarity_processor_v2.py +237 -0
  13. {argus_alm-0.15.9 → argus_alm-0.15.11}/argusAI/utils/event_message_sanitizer.py +2 -0
  14. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_alm.egg-info/PKG-INFO +7 -2
  15. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_alm.egg-info/SOURCES.txt +13 -4
  16. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_alm.egg-info/requires.txt +7 -1
  17. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_backend.py +19 -1
  18. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_web.example.yaml +14 -0
  19. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/alpha-config/scylla.yaml +1 -0
  20. argus_alm-0.15.11/dev-db/docker-compose.yaml +42 -0
  21. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/export_data.py +20 -2
  22. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/import_data.py +34 -1
  23. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/api_usage.md +8 -0
  24. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/dev-setup.md +4 -5
  25. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/generic_results.md +3 -0
  26. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/UserManager.svelte +5 -0
  27. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Github/GithubIssue.svelte +34 -25
  28. argus_alm-0.15.9/frontend/Github/GithubIssues.svelte → argus_alm-0.15.11/frontend/Github/Issues.svelte +192 -50
  29. argus_alm-0.15.9/frontend/Github/GithubIssuesCopyModal.svelte → argus_alm-0.15.11/frontend/Github/IssuesCopyModal.svelte +21 -15
  30. argus_alm-0.15.11/frontend/Jira/JiraIssue.svelte +368 -0
  31. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/Login.svelte +18 -1
  32. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/ReleaseDashboard.svelte +2 -2
  33. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/IssueTab.svelte +3 -3
  34. argus_alm-0.15.11/frontend/TestRun/SCT/SctEvent.svelte +390 -0
  35. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCT/SctEvents.svelte +5 -3
  36. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCT/SctNemesis.svelte +5 -3
  37. argus_alm-0.15.11/frontend/TestRun/SCT/SctSetup.svelte +64 -0
  38. argus_alm-0.15.11/frontend/TestRun/SCT/SctSimilarEvents.svelte +289 -0
  39. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/TestRun.svelte +28 -1
  40. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/PytestResultRow.svelte +1 -1
  41. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/SummaryWidget/RunIssues.svelte +3 -3
  42. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGithubIssues.svelte +2 -2
  43. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/argus.css +39 -0
  44. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/login.js +1 -0
  45. {argus_alm-0.15.9 → argus_alm-0.15.11}/pyproject.toml +8 -2
  46. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/pytest_argus_reporter.py +5 -1
  47. argus_alm-0.15.11/scripts/migration/migration_2026-01-20-1.py +29 -0
  48. argus_alm-0.15.11/scripts/migration/migration_2026-01-20.py +106 -0
  49. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/auth/login.html.j2 +1 -0
  50. argus_alm-0.15.11/templates/auth/user_switch.html.j2 +39 -0
  51. argus_alm-0.15.11/templates/create_user.html.j2 +61 -0
  52. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/css/styles.css +17 -0
  53. argus_alm-0.15.11/templates/email/partials/generic_results.html.j2 +46 -0
  54. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/partials/nav_bar.html.j2 +10 -1
  55. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/profile.html.j2 +23 -4
  56. argus_alm-0.15.11/uv.lock +3043 -0
  57. argus_alm-0.15.9/argusAI/README.md +0 -5
  58. argus_alm-0.15.9/argusAI/pyproject.toml +0 -11
  59. argus_alm-0.15.9/argusAI/uv.lock +0 -1636
  60. argus_alm-0.15.9/dev-db/docker-compose.yaml +0 -19
  61. argus_alm-0.15.9/frontend/TestRun/SCT/SctEvent.svelte +0 -209
  62. argus_alm-0.15.9/uv.lock +0 -1340
  63. {argus_alm-0.15.9 → argus_alm-0.15.11}/.dockerignore +0 -0
  64. {argus_alm-0.15.9 → argus_alm-0.15.11}/.envrc +0 -0
  65. {argus_alm-0.15.9 → argus_alm-0.15.11}/.eslintrc.js +0 -0
  66. {argus_alm-0.15.9 → argus_alm-0.15.11}/.github/workflows/.gitkeep +0 -0
  67. {argus_alm-0.15.9 → argus_alm-0.15.11}/.github/workflows/lint.yml +0 -0
  68. {argus_alm-0.15.9 → argus_alm-0.15.11}/.github/workflows/release.yml +0 -0
  69. {argus_alm-0.15.9 → argus_alm-0.15.11}/.gitignore +0 -0
  70. {argus_alm-0.15.9 → argus_alm-0.15.11}/.pre-commit-config.yaml +0 -0
  71. {argus_alm-0.15.9 → argus_alm-0.15.11}/.prettierrc.js +0 -0
  72. {argus_alm-0.15.9 → argus_alm-0.15.11}/AGENTS.md +0 -0
  73. {argus_alm-0.15.9 → argus_alm-0.15.11}/Dockerfile +0 -0
  74. {argus_alm-0.15.9 → argus_alm-0.15.11}/LICENSE +0 -0
  75. {argus_alm-0.15.9 → argus_alm-0.15.11}/MANIFEST.in +0 -0
  76. {argus_alm-0.15.9 → argus_alm-0.15.11}/README.md +0 -0
  77. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/__init__.py +0 -0
  78. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/__init__.py +0 -0
  79. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/driver_matrix_tests/cli.py +0 -0
  80. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/generic/cli.py +0 -0
  81. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/generic_result.py +0 -0
  82. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/client/sct/types.py +0 -0
  83. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/common/__init__.py +0 -0
  84. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/common/email.py +0 -0
  85. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/common/enums.py +0 -0
  86. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/common/sct_types.py +0 -0
  87. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus/common/sirenada_types.py +0 -0
  88. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus.yaml +0 -0
  89. {argus_alm-0.15.9 → argus_alm-0.15.11}/argusAI/deployment/argusai_event_similarity_processor.service +0 -0
  90. {argus_alm-0.15.9 → argus_alm-0.15.11}/argusAI/event_similarity_processor.py +0 -0
  91. {argus_alm-0.15.9 → argus_alm-0.15.11}/argusAI/logs/.gitignore +0 -0
  92. {argus_alm-0.15.9 → argus_alm-0.15.11}/argusAI/utils/__init__.py +0 -0
  93. {argus_alm-0.15.9 → argus_alm-0.15.11}/argusAI/utils/scylla_connection.py +0 -0
  94. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_alm.egg-info/dependency_links.txt +0 -0
  95. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_alm.egg-info/entry_points.txt +0 -0
  96. {argus_alm-0.15.9 → argus_alm-0.15.11}/argus_alm.egg-info/top_level.txt +0 -0
  97. {argus_alm-0.15.9 → argus_alm-0.15.11}/commitlint.config.js +0 -0
  98. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/.gitignore +0 -0
  99. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/alpha-config/cassandra-rackdc.properties +0 -0
  100. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/alpha-config/machine_image_configured +0 -0
  101. {argus_alm-0.15.9 → argus_alm-0.15.11}/dev-db/alpha-data/.gitignore +0 -0
  102. {argus_alm-0.15.9 → argus_alm-0.15.11}/docker/config/nginx-docker.conf +0 -0
  103. {argus_alm-0.15.9 → argus_alm-0.15.11}/docker/config/supervisord.conf +0 -0
  104. {argus_alm-0.15.9 → argus_alm-0.15.11}/docker-entrypoint.sh +0 -0
  105. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/argus_status_page.md +0 -0
  106. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/argus_status_page_diagram.jpg +0 -0
  107. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/config/argus.nginx.conf +0 -0
  108. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/config/argus.service +0 -0
  109. {argus_alm-0.15.9 → argus_alm-0.15.11}/docs/pypi-guide.md +0 -0
  110. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/AdminPanel.svelte +0 -0
  111. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/AdminPanelWelcome.svelte +0 -0
  112. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/BatchTestMover.svelte +0 -0
  113. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/GroupCreator.svelte +0 -0
  114. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ReleaseCreator.svelte +0 -0
  115. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ReleaseDeletionConfirmationPopup.svelte +0 -0
  116. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ReleaseEditor.svelte +0 -0
  117. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ReleaseManager.svelte +0 -0
  118. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ReleaseManagerGroup.svelte +0 -0
  119. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ReleaseManagerTest.svelte +0 -0
  120. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/TestCreator.svelte +0 -0
  121. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ViewListItem.svelte +0 -0
  122. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ViewSelectItem.svelte +0 -0
  123. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ViewWidget.svelte +0 -0
  124. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/AdminPanel/ViewsManager.svelte +0 -0
  125. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Alert.js +0 -0
  126. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Alerts/AlertMessage.svelte +0 -0
  127. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Alerts/AlertWidget.svelte +0 -0
  128. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/ApiUtils.js +0 -0
  129. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/ArgusNotification.ts +0 -0
  130. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/AssigneeSelector.svelte +0 -0
  131. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/AssigneeUtils.js +0 -0
  132. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/DateUtils.js +0 -0
  133. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/DriverMatrixTypes.ts +0 -0
  134. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/IssueDestinations.js +0 -0
  135. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/JenkinsSettingsHelp.js +0 -0
  136. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/ModalWindow.svelte +0 -0
  137. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/PluginDispatch.js +0 -0
  138. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/PluginNames.js +0 -0
  139. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/RunUtils.js +0 -0
  140. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/SelectUtils.js +0 -0
  141. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/StateManagement.js +0 -0
  142. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/TestStatus.js +0 -0
  143. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/TextUtils.js +0 -0
  144. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/UserTypes.ts +0 -0
  145. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/UserUtils.js +0 -0
  146. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Common/ViewTypes.js +0 -0
  147. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Debug/FlashDebugComponent.svelte +0 -0
  148. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Discussion/Comment.svelte +0 -0
  149. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Discussion/CommentEditor.svelte +0 -0
  150. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Discussion/MarkedMentionExtension.js +0 -0
  151. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Discussion/MentionSelector.svelte +0 -0
  152. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Discussion/UserProfile.svelte +0 -0
  153. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/JobsList.svelte +0 -0
  154. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/Notification.svelte +0 -0
  155. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/NotificationCommentWrapper.svelte +0 -0
  156. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/NotificationCounter.svelte +0 -0
  157. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/NotificationSender.svelte +0 -0
  158. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/NotificationTestRunWrapper.svelte +0 -0
  159. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/NotificationsReader.svelte +0 -0
  160. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/PlannedJob.svelte +0 -0
  161. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/PlannedJobs.svelte +0 -0
  162. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/ProfileJob.svelte +0 -0
  163. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/ProfileJobs.svelte +0 -0
  164. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/ProfileJobsTab.svelte +0 -0
  165. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/ProfileSchedules.svelte +0 -0
  166. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/User.svelte +0 -0
  167. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/UserSelection.svelte +0 -0
  168. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Profile/ViewUserResolver.svelte +0 -0
  169. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/AssigneeFilter.svelte +0 -0
  170. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/FlatViewHelper.svelte +0 -0
  171. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/GroupedViewHelper.svelte +0 -0
  172. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/ReleaseActivity.svelte +0 -0
  173. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/ReleaseGithubIssues.svelte +0 -0
  174. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/TestDashboard.svelte +0 -0
  175. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/TestDashboardFlatView.svelte +0 -0
  176. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/TestDashboardGroup.svelte +0 -0
  177. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/TestDashboardTest.svelte +0 -0
  178. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/TestPopoutSelector.svelte +0 -0
  179. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleaseDashboard/TestWithIssuesCard.svelte +0 -0
  180. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/CommentTableRow.svelte +0 -0
  181. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/DutyPlanner.svelte +0 -0
  182. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/EntityReplacer.svelte +0 -0
  183. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlan.svelte +0 -0
  184. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlanCopyForm.svelte +0 -0
  185. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlanCreator.svelte +0 -0
  186. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlanEditor.svelte +0 -0
  187. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlanTable.svelte +0 -0
  188. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlanner.svelte +0 -0
  189. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleasePlannerGridView.svelte +0 -0
  190. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ReleaseScheduler.svelte +0 -0
  191. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/Schedule.svelte +0 -0
  192. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/ScheduleTable.svelte +0 -0
  193. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/ReleasePlanner/SearchBar.svelte +0 -0
  194. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stats/ChartStats.svelte +0 -0
  195. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stats/NumberStats.svelte +0 -0
  196. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stats/ProgressBarStats.svelte +0 -0
  197. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stats/ReleaseStats.svelte +0 -0
  198. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stats/StatsFetcher.svelte +0 -0
  199. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stores/AlertStore.js +0 -0
  200. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stores/AssigneeSubscriber.js +0 -0
  201. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stores/SingleTestRunSubscriber.js +0 -0
  202. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stores/TestRunsSubscriber.js +0 -0
  203. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stores/UserlistSubscriber.js +0 -0
  204. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Stores/WorkspaceStore.js +0 -0
  205. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamCreateForm.svelte +0 -0
  206. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamDetail.svelte +0 -0
  207. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamList.svelte +0 -0
  208. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamManager.svelte +0 -0
  209. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamMember.svelte +0 -0
  210. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamShort.svelte +0 -0
  211. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Teams/TeamUtils.ts +0 -0
  212. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ActivityTab.svelte +0 -0
  213. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ArtifactRow.svelte +0 -0
  214. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ArtifactTab.svelte +0 -0
  215. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Components/Cell.svelte +0 -0
  216. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Components/Filters.svelte +0 -0
  217. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Components/GraphFilters.svelte +0 -0
  218. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Components/ResultTable.svelte +0 -0
  219. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Components/ScreenshotModal.svelte +0 -0
  220. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/DriverMatrixBreakdown.svelte +0 -0
  221. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/DriverMatrixRunInfo.svelte +0 -0
  222. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/DriverMatrixTestCollection.svelte +0 -0
  223. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/DriverMatrixTestRun.svelte +0 -0
  224. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/DriverMatrixTestSuites.svelte +0 -0
  225. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/EventsTab.svelte +0 -0
  226. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Generic/GenericTestRun.svelte +0 -0
  227. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Generic/GenericTestRunInfo.svelte +0 -0
  228. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Generic/Subtest.js +0 -0
  229. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/HeartbeatIndicator.svelte +0 -0
  230. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/IssueTemplate.svelte +0 -0
  231. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/Build.js +0 -0
  232. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/BuildConfirmationDialog.svelte +0 -0
  233. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/BuildStartPlaceholder.svelte +0 -0
  234. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/BuildSuccessPlaceholder.svelte +0 -0
  235. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/CheckParam.svelte +0 -0
  236. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/CloneCreatePlaceholder.svelte +0 -0
  237. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/CloneSuccess.svelte +0 -0
  238. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/CloneTargetSelector.svelte +0 -0
  239. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/DummyCheckParam.svelte +0 -0
  240. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/DummySelectParam.svelte +0 -0
  241. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/JenkinsBuildModal.svelte +0 -0
  242. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/JenkinsCloneModal.svelte +0 -0
  243. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/LoadTargetsPlaceholder.svelte +0 -0
  244. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/ModalError.svelte +0 -0
  245. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/ParamFetchPlaceholder.svelte +0 -0
  246. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/ParameterEditor.svelte +0 -0
  247. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/SCTParameterWizard.svelte +0 -0
  248. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/SelectParam.svelte +0 -0
  249. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/StringParam.svelte +0 -0
  250. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/TextParam.svelte +0 -0
  251. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Jenkins/WizardUnavailable.svelte +0 -0
  252. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/NemesisData.svelte +0 -0
  253. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/NemesisReason.svelte +0 -0
  254. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/NemesisTable.svelte +0 -0
  255. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/PackagesInfo.svelte +0 -0
  256. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Pytest/DtestTab.svelte +0 -0
  257. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Pytest/PytestItem.svelte +0 -0
  258. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Pytest/PytestRun.svelte +0 -0
  259. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Pytest/PytestTab.svelte +0 -0
  260. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Pytest/index.js +0 -0
  261. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Pytest/types.ts +0 -0
  262. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/RawEvent.svelte +0 -0
  263. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ResourcesInfo.svelte +0 -0
  264. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ResultsGraph.svelte +0 -0
  265. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ResultsGraphs.svelte +0 -0
  266. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/ResultsTab.svelte +0 -0
  267. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/RunAssigneeSelector.svelte +0 -0
  268. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/RunInvestigationStatusButton.svelte +0 -0
  269. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/RunStatusButton.svelte +0 -0
  270. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabBodyComponent.svelte +0 -0
  271. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCTSubTests/Gemini/GeminiTabComponent.svelte +0 -0
  272. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabBodyComponent.svelte +0 -0
  273. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCTSubTests/Performance/PerformanceTabComponent.svelte +0 -0
  274. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/SCTSubTests/Subtest.js +0 -0
  275. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Screenshots.svelte +0 -0
  276. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Sirenada/SirenadaIssueTemplate.svelte +0 -0
  277. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Sirenada/SirenadaRunInfo.svelte +0 -0
  278. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Sirenada/SirenadaTestBreakdown.svelte +0 -0
  279. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/Sirenada/SirenadaTestRun.svelte +0 -0
  280. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/StructuredEvent.svelte +0 -0
  281. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/TestRunComments.svelte +0 -0
  282. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/TestRunInfo.svelte +0 -0
  283. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/jUnitChart.svelte +0 -0
  284. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/TestRun/jUnitResults.svelte +0 -0
  285. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Utils/IntersectionObserver.svelte +0 -0
  286. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/ViewDashboard.svelte +0 -0
  287. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/ViewSelect.svelte +0 -0
  288. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/WidgetSettingTypes/CheckValue.svelte +0 -0
  289. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/WidgetSettingTypes/IntegerValue.svelte +0 -0
  290. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/WidgetSettingTypes/MultiSelectValue.svelte +0 -0
  291. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/WidgetSettingTypes/MultiStringValue.svelte +0 -0
  292. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/WidgetSettingTypes/StringValue.svelte +0 -0
  293. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/GraphsWidget/GraphsWidget.svelte +0 -0
  294. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/PytestCalendarSelector.svelte +0 -0
  295. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/PytestCollapseHelper.svelte +0 -0
  296. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/PytestFlatHelper.svelte +0 -0
  297. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/PytestOverviewWidget.svelte +0 -0
  298. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/PytestTableWidget.svelte +0 -0
  299. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/PytestWidget/ViewPytestOverview.svelte +0 -0
  300. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/SummaryWidget/SummaryWidget.svelte +0 -0
  301. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/AssigneeCell.svelte +0 -0
  302. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/Filters.svelte +0 -0
  303. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/Interfaces.ts +0 -0
  304. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/InvestigationStatusCell.svelte +0 -0
  305. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/IssuesCell.svelte +0 -0
  306. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/NemesisTable.svelte +0 -0
  307. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/PaginatedTable.svelte +0 -0
  308. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/StackTracePreview.svelte +0 -0
  309. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/StatusBadge.svelte +0 -0
  310. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/StatusCell.svelte +0 -0
  311. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats/TestRunTable.svelte +0 -0
  312. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewGraphedStats.svelte +0 -0
  313. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewHighlights/ActionItem.svelte +0 -0
  314. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewHighlights/Comment.svelte +0 -0
  315. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewHighlights/HighlightItem.svelte +0 -0
  316. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewHighlights/ViewHighlights.svelte +0 -0
  317. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewNemesisStats.svelte +0 -0
  318. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewReleaseStats.svelte +0 -0
  319. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewTestDashboard.svelte +0 -0
  320. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/Views/Widgets/ViewUnsupportedPlaceholder.svelte +0 -0
  321. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/AssigneeList.svelte +0 -0
  322. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/JobConfigureModal.svelte +0 -0
  323. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/RunGroup.svelte +0 -0
  324. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/RunRelease.svelte +0 -0
  325. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/Test.svelte +0 -0
  326. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/TestRunDispatcher.svelte +0 -0
  327. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/TestRuns.svelte +0 -0
  328. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/TestRunsMessage.svelte +0 -0
  329. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/TestRunsPanel.svelte +0 -0
  330. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/TestRunsSelector.svelte +0 -0
  331. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/UnknownTest.svelte +0 -0
  332. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/WorkArea/WorkArea.svelte +0 -0
  333. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/admin-panel.js +0 -0
  334. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/argus.js +0 -0
  335. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/duty-planner.js +0 -0
  336. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/flashDebug.js +0 -0
  337. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/font-awesome.css +0 -0
  338. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/font-awesome.js +0 -0
  339. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/fonts/NotoSans-Bold.ttf +0 -0
  340. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/fonts/NotoSans-BoldItalic.ttf +0 -0
  341. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/fonts/NotoSans-Italic.ttf +0 -0
  342. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/fonts/NotoSans-Regular.ttf +0 -0
  343. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/fonts/OFL.txt +0 -0
  344. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/fonts/noto.css +0 -0
  345. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/markdownOptions.js +0 -0
  346. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/notification-counter.js +0 -0
  347. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/plan.js +0 -0
  348. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/profile-jobs.js +0 -0
  349. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/profile-notifications.js +0 -0
  350. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/profile-schedules.js +0 -0
  351. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/release-dashboard.js +0 -0
  352. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/release-page.js +0 -0
  353. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/release-planner.js +0 -0
  354. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/release-scheduler.js +0 -0
  355. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/run-by-plugin.js +0 -0
  356. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/teams.js +0 -0
  357. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/test-run-details.js +0 -0
  358. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/test-runs-breakout.js +0 -0
  359. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/test-runs-standalone.js +0 -0
  360. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/view-dashboard.js +0 -0
  361. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/view-user-resolver.js +0 -0
  362. {argus_alm-0.15.9 → argus_alm-0.15.11}/frontend/work-area.js +0 -0
  363. {argus_alm-0.15.9 → argus_alm-0.15.11}/package.json +0 -0
  364. {argus_alm-0.15.9 → argus_alm-0.15.11}/profile/.gitkeep +0 -0
  365. {argus_alm-0.15.9 → argus_alm-0.15.11}/public/argus.png +0 -0
  366. {argus_alm-0.15.9 → argus_alm-0.15.11}/public/no-user-picture.png +0 -0
  367. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/.envrc +0 -0
  368. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/LICENSE +0 -0
  369. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/MANIFEST.in +0 -0
  370. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/README.md +0 -0
  371. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/noxfile.py +0 -0
  372. {argus_alm-0.15.9 → argus_alm-0.15.11}/pytest-argus-reporter/pyproject.toml +0 -0
  373. {argus_alm-0.15.9 → argus_alm-0.15.11}/rollup.config.js +0 -0
  374. {argus_alm-0.15.9 → argus_alm-0.15.11}/run_with_profiler.py +0 -0
  375. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/argus-status-page/index.html +0 -0
  376. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/argus-status-page/js/status.js +0 -0
  377. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/argus-status-page/static/app.css +0 -0
  378. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/argus-status-page/static/argus.png +0 -0
  379. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/argus-status-page/static/scylla.png +0 -0
  380. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/argus-status-page/status.json +0 -0
  381. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/migration/migration_2023-04-07.py +0 -0
  382. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/migration/migration_2024-04-14.py +0 -0
  383. {argus_alm-0.15.9 → argus_alm-0.15.11}/scripts/migration/migration_2025-07-18.py +0 -0
  384. {argus_alm-0.15.9 → argus_alm-0.15.11}/setup.cfg +0 -0
  385. {argus_alm-0.15.9 → argus_alm-0.15.11}/start_argus.sh +0 -0
  386. {argus_alm-0.15.9 → argus_alm-0.15.11}/storage/profile_pictures/.gitignore +0 -0
  387. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/admin/base.html.j2 +0 -0
  388. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/admin/index.html.j2 +0 -0
  389. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/auth/register.html.j2 +0 -0
  390. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/base.html.j2 +0 -0
  391. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/dashboard.html.j2 +0 -0
  392. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/duty_planner.html.j2 +0 -0
  393. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/base.html.j2 +0 -0
  394. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/cloud.html.j2 +0 -0
  395. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/custom_html.html.j2 +0 -0
  396. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/custom_table.html.j2 +0 -0
  397. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/events.html.j2 +0 -0
  398. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/header.html.j2 +0 -0
  399. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/logs.html.j2 +0 -0
  400. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/main.html.j2 +0 -0
  401. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/nemesis.html.j2 +0 -0
  402. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/packages.html.j2 +0 -0
  403. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/screenshots.html.j2 +0 -0
  404. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/email/partials/unsupported.html.j2 +0 -0
  405. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/error.html.j2 +0 -0
  406. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/flash_debug.html.j2 +0 -0
  407. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/groups.html.j2 +0 -0
  408. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/home.html.j2 +0 -0
  409. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/assigned.html.j2 +0 -0
  410. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/assigned_email.html.j2 +0 -0
  411. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/email_mention.html.j2 +0 -0
  412. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/mention.html.j2 +0 -0
  413. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/view_action_item_assigned.html.j2 +0 -0
  414. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/view_action_item_assigned_email.html.j2 +0 -0
  415. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/view_highlight_mention.html.j2 +0 -0
  416. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/notifications/view_highlight_mention_email.html.j2 +0 -0
  417. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/plan_dashboard.html.j2 +0 -0
  418. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/profile_jobs.html.j2 +0 -0
  419. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/profile_notifications.html.j2 +0 -0
  420. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/profile_schedules.html.j2 +0 -0
  421. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/release_dashboard.html.j2 +0 -0
  422. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/release_planner.html.j2 +0 -0
  423. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/release_schedule.html.j2 +0 -0
  424. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/releases.html.j2 +0 -0
  425. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/run_view_by_plugin.html.j2 +0 -0
  426. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/runs.html.j2 +0 -0
  427. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/standalone_test_with_runs.html.j2 +0 -0
  428. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/teams.html.j2 +0 -0
  429. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/test_run.html.j2 +0 -0
  430. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/test_runs.html.j2 +0 -0
  431. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/tests.html.j2 +0 -0
  432. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/view_dashboard.html.j2 +0 -0
  433. {argus_alm-0.15.9 → argus_alm-0.15.11}/templates/views.html.j2 +0 -0
  434. {argus_alm-0.15.9 → argus_alm-0.15.11}/tsconfig.json +0 -0
  435. {argus_alm-0.15.9 → argus_alm-0.15.11}/uwsgi.ini +0 -0
  436. {argus_alm-0.15.9 → argus_alm-0.15.11}/yarn.lock +0 -0
@@ -0,0 +1,42 @@
1
+ name: Sync Jira Based on PR Events
2
+
3
+ on:
4
+ pull_request_target:
5
+ types:
6
+ [opened, ready_for_review, review_requested, labeled, unlabeled, closed]
7
+
8
+ permissions:
9
+ contents: read
10
+ pull-requests: write
11
+ issues: write
12
+
13
+ jobs:
14
+ jira-sync-pr-opened:
15
+ if: github.event.action == 'opened'
16
+ uses: scylladb/github-automation/.github/workflows/main_jira_sync_pr_opened.yml@main
17
+ secrets:
18
+ caller_jira_auth: ${{ secrets.USER_AND_KEY_FOR_JIRA_AUTOMATION }}
19
+
20
+ jira-sync-in-review:
21
+ if: github.event.action == 'ready_for_review' || github.event.action == 'review_requested'
22
+ uses: scylladb/github-automation/.github/workflows/main_jira_sync_in_review.yml@main
23
+ secrets:
24
+ caller_jira_auth: ${{ secrets.USER_AND_KEY_FOR_JIRA_AUTOMATION }}
25
+
26
+ jira-sync-add-label:
27
+ if: github.event.action == 'labeled'
28
+ uses: scylladb/github-automation/.github/workflows/main_jira_sync_add_label.yml@main
29
+ secrets:
30
+ caller_jira_auth: ${{ secrets.USER_AND_KEY_FOR_JIRA_AUTOMATION }}
31
+
32
+ jira-status-remove-label:
33
+ if: github.event.action == 'unlabeled'
34
+ uses: scylladb/github-automation/.github/workflows/main_jira_sync_remove_label.yml@main
35
+ secrets:
36
+ caller_jira_auth: ${{ secrets.USER_AND_KEY_FOR_JIRA_AUTOMATION }}
37
+
38
+ jira-status-pr-closed:
39
+ if: github.event.action == 'closed'
40
+ uses: scylladb/github-automation/.github/workflows/main_jira_sync_pr_closed.yml@main
41
+ secrets:
42
+ caller_jira_auth: ${{ secrets.USER_AND_KEY_FOR_JIRA_AUTOMATION }}
@@ -0,0 +1,62 @@
1
+ name: Close issues created by Scylla employees
2
+
3
+ on:
4
+ issues:
5
+ types: [opened, reopened]
6
+
7
+ permissions:
8
+ issues: write
9
+
10
+ jobs:
11
+ comment-and-close:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - name: Comment and close if author email is scylladb.com
16
+ uses: actions/github-script@v7
17
+ with:
18
+ github-token: ${{ secrets.GITHUB_TOKEN }}
19
+ script: |
20
+ const issue = context.payload.issue;
21
+ const actor = context.actor;
22
+
23
+ // Get user data (only public email is available)
24
+ const { data: user } = await github.rest.users.getByUsername({
25
+ username: actor,
26
+ });
27
+
28
+ const email = user.email || "";
29
+ console.log(`Actor: ${actor}, public email: ${email || "<none>"}`);
30
+
31
+ // Only continue if email exists and ends with @scylladb.com
32
+ if (!email || !email.toLowerCase().endsWith("@scylladb.com")) {
33
+ console.log("User is not a scylladb.com email (or email not public); skipping.");
34
+ return;
35
+ }
36
+
37
+ const owner = context.repo.owner;
38
+ const repo = context.repo.repo;
39
+ const issue_number = issue.number;
40
+
41
+ const body = "Issues in this repository are closed automatically. Scylla employees should use Jira to manage issues.\nPlease move this issue to Jira https://scylladb.atlassian.net/jira/software/c/projects/ARGUS/list";
42
+
43
+ // Add the comment
44
+ await github.rest.issues.createComment({
45
+ owner,
46
+ repo,
47
+ issue_number,
48
+ body,
49
+ });
50
+
51
+ console.log(`Comment added to #${issue_number}`);
52
+
53
+ // Close the issue
54
+ await github.rest.issues.update({
55
+ owner,
56
+ repo,
57
+ issue_number,
58
+ state: "closed",
59
+ state_reason: "not_planned"
60
+ });
61
+
62
+ console.log(`Issue #${issue_number} closed.`);
@@ -29,7 +29,7 @@ jobs:
29
29
  python-version: '3.12'
30
30
 
31
31
  - name: Install project dependencies
32
- run: uv sync --extra web-backend --extra dev
32
+ run: uv sync --extra web-backend --extra dev --extra ai
33
33
 
34
34
  - name: Verify Docker installation
35
35
  run: docker --version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: argus-alm
3
- Version: 0.15.9
3
+ Version: 0.15.11
4
4
  Summary: Argus
5
5
  Author-email: Alexey Kartashov <alexey.kartashov@scylladb.com>, Łukasz Sójka <lukasz.sojka@scylladb.com>
6
6
  License-Expression: Apache-2.0
@@ -11,19 +11,22 @@ Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
12
12
  Requires-Dist: requests>=2.26.0
13
13
  Requires-Dist: click>=8.1.3
14
+ Requires-Dist: lz4>=4.4.4
14
15
  Provides-Extra: web-backend
15
16
  Requires-Dist: PyYAML~=6.0.0; extra == "web-backend"
16
- Requires-Dist: scylla-driver>=3.26.8; extra == "web-backend"
17
+ Requires-Dist: scylla-driver>=3.29.4; extra == "web-backend"
17
18
  Requires-Dist: Flask~=3.0.0; extra == "web-backend"
18
19
  Requires-Dist: Flask-WTF~=1.0.0; extra == "web-backend"
19
20
  Requires-Dist: Flask-Login~=0.5.0; extra == "web-backend"
20
21
  Requires-Dist: humanize~=3.13.1; extra == "web-backend"
22
+ Requires-Dist: PyJWT[crypto]>=2.10.0; extra == "web-backend"
21
23
  Requires-Dist: python-magic~=0.4.24; extra == "web-backend"
22
24
  Requires-Dist: uwsgi~=2.0.20; extra == "web-backend"
23
25
  Requires-Dist: python-jenkins>=1.7.0; extra == "web-backend"
24
26
  Requires-Dist: python-slugify~=6.1.1; extra == "web-backend"
25
27
  Requires-Dist: pygithub>=2.6.1; extra == "web-backend"
26
28
  Requires-Dist: boto3~=1.38.9; extra == "web-backend"
29
+ Requires-Dist: jira>=3.10.5; extra == "web-backend"
27
30
  Requires-Dist: prometheus-flask-exporter>=0.23.2; extra == "web-backend"
28
31
  Provides-Extra: docker-image
29
32
  Requires-Dist: supervisor~=4.2.4; extra == "docker-image"
@@ -42,6 +45,8 @@ Requires-Dist: nox~=2025.5.1; extra == "dev"
42
45
  Requires-Dist: pytest-xdist~=3.7.0; extra == "dev"
43
46
  Requires-Dist: pytest-subtests~=0.14.1; extra == "dev"
44
47
  Requires-Dist: boto3-stubs~=1.38.9; extra == "dev"
48
+ Provides-Extra: ai
49
+ Requires-Dist: chromadb>=1.0.15; extra == "ai"
45
50
  Dynamic: license-file
46
51
 
47
52
  # Argus
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.15.9'
32
- __version_tuple__ = version_tuple = (0, 15, 9)
31
+ __version__ = version = '0.15.11'
32
+ __version_tuple__ = version_tuple = (0, 15, 11)
33
33
 
34
- __commit_id__ = commit_id = 'g18aee71c2'
34
+ __commit_id__ = commit_id = 'g1da64281a'
@@ -5,6 +5,8 @@ from typing import Any, Type
5
5
  from uuid import UUID
6
6
 
7
7
  import requests
8
+ from requests.adapters import HTTPAdapter
9
+ from urllib3.util.retry import Retry
8
10
 
9
11
  from argus.common.enums import TestStatus
10
12
  from argus.client.generic_result import GenericResultTable
@@ -33,11 +35,30 @@ class ArgusClient:
33
35
  FETCH_RESULTS = "/testrun/$type/$id/fetch_results"
34
36
  FINALIZE = "/testrun/$type/$id/finalize"
35
37
 
36
- def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
38
+ def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
39
+ timeout: int = 60, max_retries: int = 3) -> None:
37
40
  self._auth_token = auth_token
38
41
  self._base_url = base_url
39
42
  self._api_ver = api_version
43
+ self._timeout = timeout
40
44
  self.session = requests.Session()
45
+
46
+ # Configure retry strategy
47
+ retry_strategy = Retry(
48
+ total=max_retries,
49
+ connect=max_retries,
50
+ read=max_retries,
51
+ status=0,
52
+ backoff_factor=1,
53
+ status_forcelist=(),
54
+ allowed_methods=["GET"],
55
+ )
56
+
57
+ # Mount adapter with retry strategy for both http and https
58
+ adapter = HTTPAdapter(max_retries=retry_strategy)
59
+ self.session.mount("http://", adapter)
60
+ self.session.mount("https://", adapter)
61
+
41
62
  if extra_headers:
42
63
  self.session.headers.update(extra_headers)
43
64
 
@@ -101,7 +122,8 @@ class ArgusClient:
101
122
  response = self.session.get(
102
123
  url=url,
103
124
  params=params,
104
- headers=self.request_headers
125
+ headers=self.request_headers,
126
+ timeout=self._timeout
105
127
  )
106
128
  LOGGER.debug("GET Response: %s %s", response.status_code, response.url)
107
129
 
@@ -124,6 +146,7 @@ class ArgusClient:
124
146
  params=params,
125
147
  json=body,
126
148
  headers=self.request_headers,
149
+ timeout=self._timeout
127
150
  )
128
151
  LOGGER.debug("POST Response: %s %s", response.status_code, response.url)
129
152
 
@@ -12,8 +12,10 @@ class ArgusDriverMatrixClient(ArgusClient):
12
12
  SUBMIT_DRIVER_FAILURE = "/driver_matrix/result/fail"
13
13
  SUBMIT_ENV = "/driver_matrix/env/submit"
14
14
 
15
- def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
16
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
15
+ def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
16
+ timeout: int = 60, max_retries: int = 3) -> None:
17
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
18
+ timeout=timeout, max_retries=max_retries)
17
19
  self.run_id = run_id
18
20
 
19
21
  def submit_driver_matrix_run(self, job_name: str, job_url: str) -> None:
@@ -12,8 +12,10 @@ class ArgusGenericClient(ArgusClient):
12
12
  class Routes(ArgusClient.Routes):
13
13
  TRIGGER_JOBS = "/planning/plan/trigger"
14
14
 
15
- def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
16
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
15
+ def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
16
+ timeout: int = 180, max_retries: int = 3) -> None:
17
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
18
+ timeout=timeout, max_retries=max_retries)
17
19
 
18
20
  def submit_generic_run(self, build_id: str, run_id: str, started_by: str, build_url: str, sub_type: str = None, scylla_version: str | None = None):
19
21
  request_body = {
@@ -28,10 +28,13 @@ class ArgusSCTClient(ArgusClient):
28
28
  SUBMIT_EVENTS = "/sct/$id/events/submit"
29
29
  SUBMIT_EVENT = "/sct/$id/event/submit"
30
30
  SUBMIT_JUNIT_REPORT = "/sct/$id/junit/submit"
31
+ SUBMIT_STRESS_CMD = "/sct/$id//stress_cmd/submit"
31
32
  SUBMIT_EMAIL = "/testrun/report/email"
32
33
 
33
- def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
34
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
34
+ def __init__(self, run_id: UUID, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
35
+ timeout: int = 60, max_retries: int = 3) -> None:
36
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
37
+ timeout=timeout, max_retries=max_retries)
35
38
  self.run_id = run_id
36
39
 
37
40
  def submit_sct_run(self, job_name: str, job_url: str, started_by: str, commit_id: str,
@@ -124,6 +127,22 @@ class ArgusSCTClient(ArgusClient):
124
127
  )
125
128
  self.check_response(response)
126
129
 
130
+ def add_stress_command(self, command: str, log_name: str, loader_name: str) -> None:
131
+ """
132
+ Submits stress command information to be viewed inside Argus.
133
+ """
134
+ response = self.post(
135
+ endpoint=self.Routes.SUBMIT_STRESS_CMD,
136
+ location_params={"id": str(self.run_id)},
137
+ body={
138
+ **self.generic_body,
139
+ "cmd": command,
140
+ "log_name": log_name,
141
+ "loader_name": loader_name,
142
+ }
143
+ )
144
+ self.check_response(response)
145
+
127
146
  def submit_screenshots(self, screenshot_links: list[str]) -> None:
128
147
  """
129
148
  Submits links to the screenshots from grafana, taken at the end of the test.
@@ -258,7 +277,8 @@ class ArgusSCTClient(ArgusClient):
258
277
  self.check_response(response)
259
278
 
260
279
  def submit_nemesis(self, name: str, class_name: str, start_time: int,
261
- target_name: str, target_ip: str, target_shards: int) -> None:
280
+ target_name: str, target_ip: str, target_shards: int,
281
+ description: str | None = None) -> None:
262
282
  """
263
283
  Submits a nemesis record. Should then be finalized by
264
284
  .finalize_nemesis method on nemesis completion.
@@ -275,6 +295,7 @@ class ArgusSCTClient(ArgusClient):
275
295
  "node_name": target_name,
276
296
  "node_ip": target_ip,
277
297
  "node_shards": target_shards,
298
+ "description": description,
278
299
  }
279
300
  }
280
301
  )
@@ -45,9 +45,11 @@ class ArgusSirenadaClient(ArgusClient):
45
45
  "skipped": "skipped"
46
46
  }
47
47
 
48
- def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None) -> None:
48
+ def __init__(self, auth_token: str, base_url: str, api_version="v1", extra_headers: dict | None = None,
49
+ timeout: int = 60, max_retries: int = 3) -> None:
49
50
  self.results_path: Path | None = None
50
- super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers)
51
+ super().__init__(auth_token, base_url, api_version, extra_headers=extra_headers,
52
+ timeout=timeout, max_retries=max_retries)
51
53
 
52
54
  def _verify_required_files_exist(self, results_path: Path):
53
55
  assert (results_path / self._junit_xml_filename).exists(), "Missing jUnit XML results file!"
@@ -0,0 +1,149 @@
1
+ # Event Similarity Processor V2
2
+
3
+ ## Overview
4
+
5
+ This directory contains the Event Similarity Processor V2 — the new system that generates and stores embeddings for SCT events. It supersedes the legacy `event_similarity_processor.py` that worked with the deprecated `sct_run` table, but for now both systems are allowed to run in parallel (see "Co‑existence with V1").
6
+
7
+ ## Architecture
8
+
9
+ The processor follows a clean, decoupled flow:
10
+
11
+ 1. Event creation → SCT events are submitted via `SCTService.submit_event()`
12
+ 2. Queue → ERROR and CRITICAL events are added to `sct_unprocessed_events`
13
+ 3. Processing loop → `event_similarity_processor_v2.py` continuously reads from the queue
14
+ 4. Embedding generation → Message is sanitized, then embedded via the BGE‑Small‑EN model
15
+ 5. Storage → Embeddings are written into severity‑specific tables
16
+ 6. Cleanup → Processed events are removed from the queue
17
+
18
+ ## Database Tables
19
+
20
+ ### sct_unprocessed_events
21
+ Tracks events that need embedding generation:
22
+ - `run_id` (UUID, partition key)
23
+ - `severity` (text, clustering key)
24
+ - `ts` (timestamp, clustering key)
25
+
26
+ ### sct_error_event_embedding
27
+ Stores ERROR event embeddings (separate table for performance):
28
+ - `run_id` (UUID, partition key)
29
+ - `ts` (timestamp, clustering key)
30
+ - `embedding` (list<float>)
31
+
32
+ ### sct_critical_event_embedding
33
+ Stores CRITICAL event embeddings (separate table for performance):
34
+ - `run_id` (UUID, partition key)
35
+ - `ts` (timestamp, clustering key)
36
+ - `embedding` (list<float>)
37
+
38
+ Note: Using separate tables for ERROR and CRITICAL events keeps similarity searches scoped to a single severity class and improves query performance by avoiding mixed‑severity comparisons.
39
+
40
+ ## Running the Processor
41
+
42
+ ### Standalone
43
+ ```bash
44
+ cd argusAI
45
+ PYTHONPATH=.. uv run event_similarity_processor_v2.py
46
+ ```
47
+
48
+ ### As a Service
49
+ The processor runs in an infinite loop and every ~1s:
50
+ - Reads up to 100 unprocessed events per batch
51
+ - Routes embeddings to the table matching the event severity
52
+ - Handles errors gracefully (logs and continues)
53
+ - Can be stopped with Ctrl+C
54
+
55
+ ## Key Features
56
+
57
+ ### Severity‑specific storage
58
+ - ERROR → `sct_error_event_embedding`
59
+ - CRITICAL → `sct_critical_event_embedding`
60
+ - Faster similarity searches within the same severity
61
+
62
+ ### Message sanitization
63
+ Uses `MessageSanitizer` from `argusAI/utils/event_message_sanitizer.py` to:
64
+ - Remove IPs, URLs, file paths
65
+ - Normalize timestamps and memory addresses
66
+ - Clean up stack traces and backtraces
67
+ - Remove redundant/noisy details
68
+
69
+ ### Embedding model
70
+ `BgeSmallEnEmbeddingModel` (BGE‑Small‑EN‑v1.5):
71
+ - 384‑dimensional embeddings
72
+ - Optimized for semantic similarity search
73
+ - Same model family used by the legacy processor for consistency
74
+
75
+ ### Error handling
76
+ - Event not found → logged and skipped
77
+ - Empty message → logged and skipped
78
+ - Sanitization failure → logged and removed from queue
79
+ - Embedding failure → logged and removed from queue
80
+ - Failures are removed from the queue to avoid infinite retries
81
+
82
+ ## Testing
83
+
84
+ ### Unit tests
85
+ ```bash
86
+ PYTHONPATH=. uv run pytest argusAI
87
+ ```
88
+
89
+ Covers initialization, single/batch processing, error handling, and shutdown behavior.
90
+
91
+ ### Integration tests
92
+ ```bash
93
+ uv run pytest argus/backend/tests/sct_events/test_event_embedding_integration.py -v
94
+ ```
95
+
96
+ Covers the end‑to‑end flow from event creation to storage, proper routing to severity tables, verifying that non‑ERROR/CRITICAL events don’t create queue entries, multi‑event processing, and error recovery.
97
+
98
+ ## Monitoring & Metrics
99
+
100
+ Logging:
101
+ - INFO: processing cycles, batch counts, startup/shutdown, table routing
102
+ - DEBUG: per‑event processing, chosen table names
103
+ - WARNING: missing events, empty messages
104
+ - ERROR: processing/database failures
105
+
106
+ Metrics:
107
+ - `processed_count`: total successfully processed events
108
+ - `error_count`: total errors encountered
109
+
110
+ ## Differences from V1
111
+
112
+ Improvements in V2:
113
+ 1. Cleaner architecture: no Vector DB dependency for processing
114
+ 2. Better error handling: failures don’t block processing
115
+ 3. Simpler flow: queue → process → store
116
+ 4. Severity‑specific tables for similarity performance
117
+ 5. Comprehensive unit and integration tests
118
+
119
+ What’s not included in V2:
120
+ - Similarity search (removed from the processor itself)
121
+ - ChromaDB collections (not required for embedding storage)
122
+ - Historical event backfill (processes only new events)
123
+
124
+ ## Performance Benefits
125
+
126
+ By separating ERROR and CRITICAL embeddings:
127
+ - Faster similarity searches (smaller, severity‑scoped sets)
128
+ - Better data locality
129
+ - Reduced query complexity (no severity filters inside similarity search)
130
+ - Improved scalability (per‑table tuning)
131
+
132
+ ## Configuration
133
+
134
+ No dedicated config file is required for the processor itself. It uses the standard Argus configuration for database connectivity (e.g., ScyllaDB settings from your environment or YAML config such as `argus.yaml`/`argus.local.yaml`, depending on your deployment). The embedding model is auto‑downloaded to `~/.cache/chroma/onnx_models/`.
135
+
136
+ ## Co‑existence with V1 (temporary)
137
+
138
+ - For now, both V1 (`event_similarity_processor.py`) and V2 (`event_similarity_processor_v2.py`) may run in parallel.
139
+ - There is no data migration at this time; V1 will be disabled once the team fully moves to V2.
140
+ - If you still need to run V1 locally for comparison or fallback:
141
+ ```bash
142
+ cd argusAI
143
+ PYTHONPATH=.. uv run event_similarity_processor.py
144
+ ```
145
+
146
+ ## Notes
147
+
148
+ - Avoid mixing severities in similarity queries; use the dedicated tables for the best performance.
149
+ - If you encounter repeated failures for the same event, verify the event content after sanitization and check connectivity to the database and model files.