stackvitals 0.1.2__tar.gz → 0.1.3__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 (1374) hide show
  1. {stackvitals-0.1.2 → stackvitals-0.1.3}/CHANGELOG.md +12 -0
  2. stackvitals-0.1.3/CODE_OF_CONDUCT.md +113 -0
  3. {stackvitals-0.1.2 → stackvitals-0.1.3}/CONTRIBUTING.md +17 -3
  4. {stackvitals-0.1.2 → stackvitals-0.1.3}/PKG-INFO +7 -2
  5. {stackvitals-0.1.2 → stackvitals-0.1.3}/README.md +1 -1
  6. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/registry.json +3 -3
  7. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/summary.py +8 -6
  8. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/accuracy.md +21 -22
  9. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/app.md +2 -3
  10. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/architecture.md +8 -5
  11. stackvitals-0.1.3/docs/assets/architecture-detailed-dark.png +0 -0
  12. stackvitals-0.1.3/docs/assets/architecture-detailed-light.png +0 -0
  13. stackvitals-0.1.3/docs/assets/architecture-overview-dark.png +0 -0
  14. stackvitals-0.1.3/docs/assets/architecture-overview-light.png +0 -0
  15. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/connectors.md +3 -4
  16. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/coverage.md +2 -1
  17. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/dora-guide.md +4 -2
  18. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/faq.md +1 -1
  19. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/guides/maintainer.md +1 -1
  20. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/guides/manager.md +2 -2
  21. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/guides/platform.md +3 -3
  22. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/install.md +22 -1
  23. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/limitations.md +5 -5
  24. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/methods.md +2 -2
  25. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/modules.md +25 -4
  26. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/privacy.md +1 -1
  27. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/quickstart.md +14 -5
  28. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/release-checklist.md +29 -17
  29. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/rules.md +2 -2
  30. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/scaling.md +1 -1
  31. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/settings.md +14 -14
  32. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/threat-model.md +3 -2
  33. {stackvitals-0.1.2 → stackvitals-0.1.3}/llms.txt +2 -2
  34. {stackvitals-0.1.2 → stackvitals-0.1.3}/pyproject.toml +8 -1
  35. {stackvitals-0.1.2 → stackvitals-0.1.3}/scripts/sync_crawler.py +2 -0
  36. {stackvitals-0.1.2 → stackvitals-0.1.3}/server.json +2 -2
  37. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-ci/SKILL.md +1 -1
  38. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-community/SKILL.md +1 -1
  39. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-contribute/SKILL.md +1 -1
  40. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-delivery/SKILL.md +1 -1
  41. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-deps/SKILL.md +1 -1
  42. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-flow/SKILL.md +1 -1
  43. {stackvitals-0.1.2 → stackvitals-0.1.3}/skills/stackvitals-portal/SKILL.md +1 -1
  44. stackvitals-0.1.3/src/mergescout/__init__.py +1 -0
  45. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/__init__.py +1 -1
  46. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/dataflow.py +1 -1
  47. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/installdoc.py +28 -5
  48. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/schema.py +20 -4
  49. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/editors/vscode/package.json +1 -1
  50. stackvitals-0.1.2/src/stackvitals/web/app/chunks/chunk-GPVLJRZD.js → stackvitals-0.1.3/src/stackvitals/web/app/chunks/chunk-5TSTECYX.js +1 -1
  51. stackvitals-0.1.2/src/stackvitals/web/app/chunks/chunk-PABICGBL.js → stackvitals-0.1.3/src/stackvitals/web/app/chunks/chunk-7W2HH2SR.js +1 -1
  52. stackvitals-0.1.2/src/stackvitals/web/app/chunks/chunk-GQYFN4PE.js → stackvitals-0.1.3/src/stackvitals/web/app/chunks/chunk-AEVB6UDN.js +6 -6
  53. stackvitals-0.1.2/src/stackvitals/web/app/chunks/chunk-JWBRT5E4.js → stackvitals-0.1.3/src/stackvitals/web/app/chunks/chunk-UWMBZCCA.js +1 -1
  54. stackvitals-0.1.2/src/stackvitals/web/app/chunks/chunk-OFWDU5XX.js → stackvitals-0.1.3/src/stackvitals/web/app/chunks/chunk-W6N6P4C7.js +1 -1
  55. stackvitals-0.1.2/src/stackvitals/web/app/chunks/more-5EXFWDGM.js → stackvitals-0.1.3/src/stackvitals/web/app/chunks/more-EEGUDTVE.js +1 -1
  56. stackvitals-0.1.3/src/stackvitals/web/app/demo/settings.json +1 -0
  57. stackvitals-0.1.3/src/stackvitals/web/app/help/accuracy.json +1 -0
  58. stackvitals-0.1.3/src/stackvitals/web/app/help/connectors.json +1 -0
  59. stackvitals-0.1.3/src/stackvitals/web/app/help/getting-started.json +1 -0
  60. stackvitals-0.1.3/src/stackvitals/web/app/help/index.json +1 -0
  61. stackvitals-0.1.3/src/stackvitals/web/app/help/modules.json +1 -0
  62. stackvitals-0.1.3/src/stackvitals/web/app/help/privacy-and-security.json +1 -0
  63. stackvitals-0.1.3/src/stackvitals/web/app/help/reference.json +1 -0
  64. stackvitals-0.1.3/src/stackvitals/web/app/main.css +1 -0
  65. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/main.js +1 -1
  66. stackvitals-0.1.3/src/stackvitals/web/app/pages/about.js +1 -0
  67. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/ci.js +1 -1
  68. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/community.js +1 -1
  69. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/deps.js +1 -1
  70. stackvitals-0.1.3/src/stackvitals/web/app/pages/help.js +6 -0
  71. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/portal.js +1 -1
  72. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/setup.js +2 -2
  73. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/welcome-sheet.js +1 -1
  74. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/welcome.js +1 -1
  75. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/site/index.html +5 -2
  76. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/site/site.css +1 -1
  77. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_docs.py +2 -0
  78. {stackvitals-0.1.2 → stackvitals-0.1.3}/uv.lock +1 -1
  79. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/README.md +2 -1
  80. stackvitals-0.1.3/web/demo/settings.json +1 -0
  81. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/app/App.tsx +3 -3
  82. stackvitals-0.1.2/web/src/app/LogoPicker.tsx → stackvitals-0.1.3/web/src/app/Brand.tsx +1 -1
  83. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/workflow.ts +1 -1
  84. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/about.tsx +2 -2
  85. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/community.tsx +1 -1
  86. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/help/commands.tsx +3 -2
  87. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/setup.tsx +1 -1
  88. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/sheet.css +1 -3
  89. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/shell.css +0 -10
  90. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/workflow.test.ts +2 -2
  91. stackvitals-0.1.2/docs/assets/architecture-detailed-dark.png +0 -0
  92. stackvitals-0.1.2/docs/assets/architecture-detailed-light.png +0 -0
  93. stackvitals-0.1.2/docs/assets/architecture-overview-dark.png +0 -0
  94. stackvitals-0.1.2/docs/assets/architecture-overview-light.png +0 -0
  95. stackvitals-0.1.2/src/mergescout/__init__.py +0 -1
  96. stackvitals-0.1.2/src/stackvitals/web/app/demo/settings.json +0 -1
  97. stackvitals-0.1.2/src/stackvitals/web/app/help/accuracy.json +0 -1
  98. stackvitals-0.1.2/src/stackvitals/web/app/help/connectors.json +0 -1
  99. stackvitals-0.1.2/src/stackvitals/web/app/help/getting-started.json +0 -1
  100. stackvitals-0.1.2/src/stackvitals/web/app/help/index.json +0 -1
  101. stackvitals-0.1.2/src/stackvitals/web/app/help/modules.json +0 -1
  102. stackvitals-0.1.2/src/stackvitals/web/app/help/privacy-and-security.json +0 -1
  103. stackvitals-0.1.2/src/stackvitals/web/app/help/reference.json +0 -1
  104. stackvitals-0.1.2/src/stackvitals/web/app/main.css +0 -1
  105. stackvitals-0.1.2/src/stackvitals/web/app/pages/about.js +0 -1
  106. stackvitals-0.1.2/src/stackvitals/web/app/pages/help.js +0 -6
  107. stackvitals-0.1.2/web/demo/settings.json +0 -1
  108. {stackvitals-0.1.2 → stackvitals-0.1.3}/.env.example +0 -0
  109. {stackvitals-0.1.2 → stackvitals-0.1.3}/.gitattributes +0 -0
  110. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/ISSUE_TEMPLATE/benchmark.yml +0 -0
  111. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/build-constraints.txt +0 -0
  112. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/workflows/daily.yml +0 -0
  113. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/workflows/mcp-registry.yml +0 -0
  114. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/workflows/prospective.yml +0 -0
  115. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/workflows/release.yml +0 -0
  116. {stackvitals-0.1.2 → stackvitals-0.1.3}/.github/workflows/tests.yml +0 -0
  117. {stackvitals-0.1.2 → stackvitals-0.1.3}/.gitignore +0 -0
  118. {stackvitals-0.1.2 → stackvitals-0.1.3}/GOVERNANCE.md +0 -0
  119. {stackvitals-0.1.2 → stackvitals-0.1.3}/LICENSE +0 -0
  120. {stackvitals-0.1.2 → stackvitals-0.1.3}/NOTICE +0 -0
  121. {stackvitals-0.1.2 → stackvitals-0.1.3}/SECURITY.md +0 -0
  122. {stackvitals-0.1.2 → stackvitals-0.1.3}/action.yml +0 -0
  123. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/LICENSE-DATA.md +0 -0
  124. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/adjudicate.py +0 -0
  125. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/adjudicator-crosscheck.json +0 -0
  126. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/adoption/README.md +0 -0
  127. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/adoption/manifest.json +0 -0
  128. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/adoption/preregistration.md +0 -0
  129. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/adoption/study.py +0 -0
  130. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/README.md +0 -0
  131. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/prepare.py +0 -0
  132. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/prepare2.py +0 -0
  133. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/prompts.md +0 -0
  134. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/results.json +0 -0
  135. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/results2.json +0 -0
  136. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/score.py +0 -0
  137. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/score2.py +0 -0
  138. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/triage-results.json +0 -0
  139. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/agents/triage_check.py +0 -0
  140. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/README.md +0 -0
  141. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/adjudication-detection.csv +0 -0
  142. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/adoption-results.json +0 -0
  143. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/adoption.py +0 -0
  144. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/agreement-gemini-detection.json +0 -0
  145. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/codebook-detection.md +0 -0
  146. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/detection-labels.csv +0 -0
  147. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/detection-results.json +0 -0
  148. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/detection.py +0 -0
  149. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/labels-gemini-detection.csv +0 -0
  150. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/preregistration.md +0 -0
  151. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/replicate-results.json +0 -0
  152. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/ai/replicate.py +0 -0
  153. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/audit-results.json +0 -0
  154. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/audit.py +0 -0
  155. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/README.md +0 -0
  156. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/adjudication-main.csv +0 -0
  157. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/adjudication-validation.csv +0 -0
  158. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/affiliation-results.json +0 -0
  159. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/affiliation.py +0 -0
  160. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/agreement-gemini-main-v2.json +0 -0
  161. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/agreement-gemini-main.json +0 -0
  162. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/agreement-gemini-validation-v2.json +0 -0
  163. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/agreement-gemini-validation.json +0 -0
  164. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/channels-results.json +0 -0
  165. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/channels.py +0 -0
  166. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/codebook.md +0 -0
  167. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-gemini-main-v2.csv +0 -0
  168. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-gemini-main.csv +0 -0
  169. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-gemini-validation-v2.csv +0 -0
  170. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-gemini-validation.csv +0 -0
  171. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-main.csv +0 -0
  172. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-results.json +0 -0
  173. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/labels-validation.csv +0 -0
  174. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/responses-results.json +0 -0
  175. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/responses-validation-results.json +0 -0
  176. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/responses.py +0 -0
  177. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/score_labels.py +0 -0
  178. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/triage-results.json +0 -0
  179. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/community/triage.py +0 -0
  180. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/contribute/README.md +0 -0
  181. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/contribute/frozen-manifest.json +0 -0
  182. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/contribute/frozen.json.gz +0 -0
  183. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/contribute/preregistration.md +0 -0
  184. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/contribute/prospective.py +0 -0
  185. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/crosscheck.py +0 -0
  186. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/README.md +0 -0
  187. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/baseline-after-results.json +0 -0
  188. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/baseline-results.json +0 -0
  189. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/baseline.py +0 -0
  190. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/coverage-results.json +0 -0
  191. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/coverage.py +0 -0
  192. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/exploits-results.json +0 -0
  193. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/exploits.py +0 -0
  194. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/incidents-results.json +0 -0
  195. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/incidents.py +0 -0
  196. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/lookalike-results.json +0 -0
  197. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/lookalike.py +0 -0
  198. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/release-signs-results.json +0 -0
  199. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/deps/release_signs.py +0 -0
  200. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/README.md +0 -0
  201. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/head-to-head-results.json +0 -0
  202. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/pick.py +0 -0
  203. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/preregistration.md +0 -0
  204. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/repos.json +0 -0
  205. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/run.py +0 -0
  206. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/devlake/score.py +0 -0
  207. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/README.md +0 -0
  208. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/adjudication-incidents.csv +0 -0
  209. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/adjudication-sources-more.csv +0 -0
  210. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/adjudication-sources.csv +0 -0
  211. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/agreement-gemini-sources-more.json +0 -0
  212. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/agreement-gemini-sources.json +0 -0
  213. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/codebook.md +0 -0
  214. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/devlake-configured-more-results.json +0 -0
  215. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/devlake-configured-results.json +0 -0
  216. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/devlake_configured.py +0 -0
  217. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/environments-results.json +0 -0
  218. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/environments.py +0 -0
  219. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/incidents-codebook.md +0 -0
  220. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/incidents-labels.csv +0 -0
  221. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/incidents-results.json +0 -0
  222. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/incidents.py +0 -0
  223. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/labels-gemini-incidents.csv +0 -0
  224. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/labels-gemini-sources-more.csv +0 -0
  225. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/labels-gemini-sources.csv +0 -0
  226. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/linkage-more-results.json +0 -0
  227. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/linkage-results.json +0 -0
  228. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/linkage.py +0 -0
  229. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/sources-labels.csv +0 -0
  230. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/sources-more-labels.csv +0 -0
  231. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/sources-more-results.json +0 -0
  232. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/sources-results.json +0 -0
  233. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/sources.py +0 -0
  234. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/spread-results.json +0 -0
  235. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/dora/spread.py +0 -0
  236. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/fair.py +0 -0
  237. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/README.md +0 -0
  238. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/api_use.py +0 -0
  239. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/branch_growth.py +0 -0
  240. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/catalog.py +0 -0
  241. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/reports.py +0 -0
  242. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/scorecard.json +0 -0
  243. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/features/scorecard.py +0 -0
  244. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/finalise.py +0 -0
  245. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/README.md +0 -0
  246. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/adjudication-flaky.csv +0 -0
  247. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/adjudication-fresh.csv +0 -0
  248. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/adjudication-heldout.csv +0 -0
  249. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/adjudication-masking.csv +0 -0
  250. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/agreement-gemini-flaky-v2.json +0 -0
  251. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/agreement-gemini-flaky.json +0 -0
  252. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/agreement-gemini-fresh.json +0 -0
  253. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/agreement-gemini-heldout.json +0 -0
  254. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/agreement-gemini-masking.json +0 -0
  255. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/already-results.json +0 -0
  256. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/already.py +0 -0
  257. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/began-results.json +0 -0
  258. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/began.py +0 -0
  259. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/card.json +0 -0
  260. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/codebook.md +0 -0
  261. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/heldout-labels.csv +0 -0
  262. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/heldout-results.json +0 -0
  263. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/heldout.py +0 -0
  264. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/items.csv +0 -0
  265. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/kinds-results.json +0 -0
  266. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/kinds.py +0 -0
  267. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/labels-gemini-flaky-v2.csv +0 -0
  268. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/labels-gemini-flaky.csv +0 -0
  269. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/labels-gemini-fresh.csv +0 -0
  270. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/labels-gemini-heldout.csv +0 -0
  271. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/labels-gemini-masking.csv +0 -0
  272. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/masking-labels.csv +0 -0
  273. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/masking-results.json +0 -0
  274. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/masking.py +0 -0
  275. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/maybe-results.json +0 -0
  276. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/maybe.py +0 -0
  277. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/natural-results.json +0 -0
  278. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/natural.py +0 -0
  279. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/outside-fresh-results.json +0 -0
  280. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/outside-results.json +0 -0
  281. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/outside.py +0 -0
  282. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/outside_fresh.py +0 -0
  283. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/pr-details-results.json +0 -0
  284. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/pr_details.py +0 -0
  285. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/safe-check-results.json +0 -0
  286. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/safe-rule-results.json +0 -0
  287. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/safe_check.py +0 -0
  288. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/safe_rule.py +0 -0
  289. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/sample.py +0 -0
  290. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/score.py +0 -0
  291. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/views.py +0 -0
  292. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/flaky/wide.py +0 -0
  293. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/README.md +0 -0
  294. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/collect_reports.py +0 -0
  295. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/find_report_repos.py +0 -0
  296. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/replay-results.json +0 -0
  297. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/replay_tia.py +0 -0
  298. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/search.json +0 -0
  299. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/impact/totals.json +0 -0
  300. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/label-sensitivity.json +0 -0
  301. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/labeller.py +0 -0
  302. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/middleware/README.md +0 -0
  303. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/middleware/preregistration.md +0 -0
  304. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/middleware/results.json +0 -0
  305. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/middleware/run.sh +0 -0
  306. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/middleware/score.py +0 -0
  307. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/panel-results.json +0 -0
  308. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/panel.py +0 -0
  309. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/platform/README.md +0 -0
  310. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/platform/busy-results.json +0 -0
  311. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/platform/busy.py +0 -0
  312. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/portal/README.md +0 -0
  313. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/portal/scale-results.json +0 -0
  314. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/portal/scale.py +0 -0
  315. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/portal/speed-after.json +0 -0
  316. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/portal/speed-before.json +0 -0
  317. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/portal/speed.py +0 -0
  318. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/README.md +0 -0
  319. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/adjudication-replay.csv +0 -0
  320. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/agreement-gemini-replay.json +0 -0
  321. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/labels-gemini-replay.csv +0 -0
  322. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/replay-labels.csv +0 -0
  323. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/replay-results.json +0 -0
  324. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/replay/replay.py +0 -0
  325. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/reproduce.py +0 -0
  326. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/scorecard/README.md +0 -0
  327. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/scorecard/results-before.json +0 -0
  328. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/scorecard/results.json +0 -0
  329. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/scorecard/run.py +0 -0
  330. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/sensitivity.py +0 -0
  331. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/team/README.md +0 -0
  332. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/team/prospective-frozen.json.gz +0 -0
  333. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/team/prospective-manifest.json +0 -0
  334. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/team/prospective.py +0 -0
  335. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/team/reviewers-results.json +0 -0
  336. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/team/reviewers.py +0 -0
  337. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/README.md +0 -0
  338. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/nulls-2week-before-results.json +0 -0
  339. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/nulls-2week-results.json +0 -0
  340. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/nulls-before-results.json +0 -0
  341. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/nulls-results.json +0 -0
  342. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/nulls.py +0 -0
  343. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/shrinkage-groups-results.json +0 -0
  344. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/shrinkage-results.json +0 -0
  345. {stackvitals-0.1.2 → stackvitals-0.1.3}/bench/accuracy/uncertainty/shrinkage.py +0 -0
  346. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/README.md +0 -0
  347. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/gitignore +0 -0
  348. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/workflows/bench.yml +0 -0
  349. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/workflows/check.yml +0 -0
  350. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/workflows/crawl.yml +0 -0
  351. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/workflows/discover.yml +0 -0
  352. {stackvitals-0.1.2 → stackvitals-0.1.3}/deploy/crawler/workflows/keepalive.yml +0 -0
  353. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/divider-dark.png +0 -0
  354. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/divider-light.png +0 -0
  355. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/lockup-dark.png +0 -0
  356. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/lockup-light.png +0 -0
  357. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/stackvitals-video.avif +0 -0
  358. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/stackvitals-video.gif +0 -0
  359. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/assets/stackvitals-video.mp4 +0 -0
  360. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/chaoss.md +0 -0
  361. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/enterprise.md +0 -0
  362. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/roadmap.md +0 -0
  363. {stackvitals-0.1.2 → stackvitals-0.1.3}/docs/triage.md +0 -0
  364. {stackvitals-0.1.2 → stackvitals-0.1.3}/scripts/prelaunch.py +0 -0
  365. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/archive/__init__.py +0 -0
  366. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/archive/__main__.py +0 -0
  367. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/archive/convert.py +0 -0
  368. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/archive/events.py +0 -0
  369. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/archive/manifest.py +0 -0
  370. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/archive/stream.py +0 -0
  371. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/__init__.py +0 -0
  372. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/__main__.py +0 -0
  373. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/ci.py +0 -0
  374. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/deploys.py +0 -0
  375. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/matched.py +0 -0
  376. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/prior.py +0 -0
  377. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/report.py +0 -0
  378. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/shared.py +0 -0
  379. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/bench/stars.py +0 -0
  380. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/cli.py +0 -0
  381. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/config.py +0 -0
  382. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/__init__.py +0 -0
  383. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/__main__.py +0 -0
  384. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/chain.py +0 -0
  385. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/fetch.py +0 -0
  386. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/outcomes.py +0 -0
  387. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/queries.py +0 -0
  388. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/runner.py +0 -0
  389. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/seed.py +0 -0
  390. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/state.py +0 -0
  391. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/crawl/writer.py +0 -0
  392. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/discover/__init__.py +0 -0
  393. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/discover/__main__.py +0 -0
  394. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/discover/sweep.py +0 -0
  395. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/github/__init__.py +0 -0
  396. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/github/graphql.py +0 -0
  397. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/github/identities.py +0 -0
  398. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/github/releases.py +0 -0
  399. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/labels.py +0 -0
  400. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/mcp_server.py +0 -0
  401. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/__init__.py +0 -0
  402. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/__main__.py +0 -0
  403. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/api_cost.py +0 -0
  404. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/count_repos.py +0 -0
  405. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/jsonl.py +0 -0
  406. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/report.py +0 -0
  407. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/measure/sample.py +0 -0
  408. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/owners.py +0 -0
  409. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/setup_check.py +0 -0
  410. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/__init__.py +0 -0
  411. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/__main__.py +0 -0
  412. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/bump_ledger.py +0 -0
  413. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/bumps.py +0 -0
  414. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/check.py +0 -0
  415. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/community_bench.py +0 -0
  416. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/delivery_bench.py +0 -0
  417. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/deps_map.py +0 -0
  418. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/deps_trends.py +0 -0
  419. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/evidence.py +0 -0
  420. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/exploits.py +0 -0
  421. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/flow_bench.py +0 -0
  422. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/identity.py +0 -0
  423. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/issues.py +0 -0
  424. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/labels.py +0 -0
  425. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/osv.py +0 -0
  426. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/owners_watch.py +0 -0
  427. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/repo_stats.py +0 -0
  428. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/rules.py +0 -0
  429. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/silver.py +0 -0
  430. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/top_packages.py +0 -0
  431. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/triage.py +0 -0
  432. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/triage_math.py +0 -0
  433. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/signals/walls.py +0 -0
  434. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/snapshot/__init__.py +0 -0
  435. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/snapshot/__main__.py +0 -0
  436. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/snapshot/build.py +0 -0
  437. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/snapshot/publish.py +0 -0
  438. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/snapshot/schema.py +0 -0
  439. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/snapshot/score.py +0 -0
  440. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/store/__init__.py +0 -0
  441. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/store/__main__.py +0 -0
  442. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/store/sync.py +0 -0
  443. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/timeutil.py +0 -0
  444. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/__init__.py +0 -0
  445. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/action_pack.py +0 -0
  446. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/live.py +0 -0
  447. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/queries.py +0 -0
  448. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/refs.py +0 -0
  449. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/store.py +0 -0
  450. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/mergescout/tool/tracking.py +0 -0
  451. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/__main__.py +0 -0
  452. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/__init__.py +0 -0
  453. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/action.py +0 -0
  454. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/analyze.py +0 -0
  455. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/api.py +0 -0
  456. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/automation.py +0 -0
  457. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/bench.py +0 -0
  458. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/burnin.py +0 -0
  459. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/cli.py +0 -0
  460. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/collect.py +0 -0
  461. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/cost.py +0 -0
  462. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/coverage.py +0 -0
  463. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/feedback.py +0 -0
  464. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/fingerprint.py +0 -0
  465. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/gitlab.py +0 -0
  466. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/gitlab_action.py +0 -0
  467. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/impact.py +0 -0
  468. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/investigate.py +0 -0
  469. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/kinds.py +0 -0
  470. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/monitors.py +0 -0
  471. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/owners.py +0 -0
  472. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/quarantine_runtime.py +0 -0
  473. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/report.py +0 -0
  474. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/retry.py +0 -0
  475. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/selfheal.py +0 -0
  476. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/shards.py +0 -0
  477. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/share.py +0 -0
  478. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/store.py +0 -0
  479. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/testreports.py +0 -0
  480. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/tickets.py +0 -0
  481. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/track_record.json +0 -0
  482. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/triage.py +0 -0
  483. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/triggers.py +0 -0
  484. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/upload.py +0 -0
  485. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/ci/validate.py +0 -0
  486. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/cli.py +0 -0
  487. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/codeowners.py +0 -0
  488. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/__init__.py +0 -0
  489. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/action.py +0 -0
  490. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/affiliation.py +0 -0
  491. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/analyze.py +0 -0
  492. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/build.py +0 -0
  493. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/chaoss.py +0 -0
  494. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/cli.py +0 -0
  495. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/collect.py +0 -0
  496. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/context.py +0 -0
  497. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/community/report.py +0 -0
  498. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/__init__.py +0 -0
  499. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/ai_spend.py +0 -0
  500. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/base.py +0 -0
  501. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/check.py +0 -0
  502. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/copilot.py +0 -0
  503. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/discord.py +0 -0
  504. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/discourse.py +0 -0
  505. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/incident_io.py +0 -0
  506. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/jira.py +0 -0
  507. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/linear.py +0 -0
  508. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/pagerduty.py +0 -0
  509. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/slack.py +0 -0
  510. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/sonar.py +0 -0
  511. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/store.py +0 -0
  512. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/tracker.py +0 -0
  513. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/connectors/writeback.py +0 -0
  514. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/contribute/__init__.py +0 -0
  515. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/contribute/brief.py +0 -0
  516. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/contribute/cli.py +0 -0
  517. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/__init__.py +0 -0
  518. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/actors.py +0 -0
  519. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/agent_ledger.py +0 -0
  520. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/agreements.py +0 -0
  521. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/ai_outcomes.py +0 -0
  522. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/alerts.py +0 -0
  523. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/appdata.py +0 -0
  524. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/bucket.py +0 -0
  525. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/bugs.py +0 -0
  526. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/calendar.py +0 -0
  527. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/capex.py +0 -0
  528. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/change_risk.py +0 -0
  529. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/changes.py +0 -0
  530. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/chat.py +0 -0
  531. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/config.py +0 -0
  532. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/decisions.py +0 -0
  533. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/delivery.py +0 -0
  534. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/delivery_peers.py +0 -0
  535. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/delivery_report.py +0 -0
  536. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/deliverycli.py +0 -0
  537. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/devlake_dora.sql +0 -0
  538. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/digest.py +0 -0
  539. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/explaincli.py +0 -0
  540. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/explore.py +0 -0
  541. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/export.py +0 -0
  542. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/exportcli.py +0 -0
  543. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/findings.py +0 -0
  544. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/health.py +0 -0
  545. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/identity.py +0 -0
  546. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/initcli.py +0 -0
  547. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/insights.py +0 -0
  548. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/insightscli.py +0 -0
  549. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/investment.py +0 -0
  550. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/joins.py +0 -0
  551. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/llmsdoc.py +0 -0
  552. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/merge_queue.py +0 -0
  553. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/metrics.py +0 -0
  554. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/model.py +0 -0
  555. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/projectcli.py +0 -0
  556. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/propose.py +0 -0
  557. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/pulse.py +0 -0
  558. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/recorded.py +0 -0
  559. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/releases.py +0 -0
  560. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/requests.py +0 -0
  561. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/resync.py +0 -0
  562. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/services.py +0 -0
  563. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/settings.py +0 -0
  564. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/sqlcli.py +0 -0
  565. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/stats.py +0 -0
  566. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/store.py +0 -0
  567. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/summary.py +0 -0
  568. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/time.py +0 -0
  569. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/tomledit.py +0 -0
  570. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/uicli.py +0 -0
  571. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/webapp.py +0 -0
  572. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/what_changed.py +0 -0
  573. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/core/workspace.py +0 -0
  574. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/__init__.py +0 -0
  575. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/action.py +0 -0
  576. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/actions_vulns.py +0 -0
  577. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/cli.py +0 -0
  578. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/dossier.py +0 -0
  579. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/evidence.py +0 -0
  580. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/fixplan.py +0 -0
  581. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/guarddog.py +0 -0
  582. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/hygiene.py +0 -0
  583. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/imports.py +0 -0
  584. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/lockfiles.py +0 -0
  585. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/lookalike.py +0 -0
  586. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/reach.py +0 -0
  587. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/release.py +0 -0
  588. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/runtimes.py +0 -0
  589. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/supply.py +0 -0
  590. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/deps/vulns.py +0 -0
  591. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/editors/__init__.py +0 -0
  592. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/editors/vscode/extension.js +0 -0
  593. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/editors/vscode/marks.js +0 -0
  594. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/__init__.py +0 -0
  595. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/action.py +0 -0
  596. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/analyze.py +0 -0
  597. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/automate.py +0 -0
  598. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/build.py +0 -0
  599. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/cli.py +0 -0
  600. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/code_hosts.py +0 -0
  601. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/collect.py +0 -0
  602. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/gitlab_mr.py +0 -0
  603. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/knowledge.py +0 -0
  604. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/peers.py +0 -0
  605. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/preflight.py +0 -0
  606. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/report.py +0 -0
  607. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/rules.py +0 -0
  608. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/store.py +0 -0
  609. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/survival.py +0 -0
  610. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/flow/triage.py +0 -0
  611. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/mcp_server.py +0 -0
  612. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/__init__.py +0 -0
  613. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/action.py +0 -0
  614. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/batch.py +0 -0
  615. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/campaigns.py +0 -0
  616. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/catalog.py +0 -0
  617. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/checks.py +0 -0
  618. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/cli.py +0 -0
  619. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/descriptor.py +0 -0
  620. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/export.py +0 -0
  621. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/github.py +0 -0
  622. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/golden.py +0 -0
  623. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/history.py +0 -0
  624. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/inventory.py +0 -0
  625. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/owners.py +0 -0
  626. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/pages.py +0 -0
  627. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/rollup.py +0 -0
  628. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/portal/scorecard.py +0 -0
  629. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/security/__init__.py +0 -0
  630. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/security/probes.py +0 -0
  631. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/security/repo_checks.py +0 -0
  632. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/security/workflows.py +0 -0
  633. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/shell.py +0 -0
  634. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/site.py +0 -0
  635. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/LICENSES.md +0 -0
  636. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/boot.js +0 -0
  637. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/brand/cube-128.png +0 -0
  638. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/brand/cube-256.png +0 -0
  639. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/brand/cube-64.png +0 -0
  640. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/AddRepo-KRPZXWCY.js +0 -0
  641. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/SetupRunning-XWFQAKRZ.js +0 -0
  642. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/accuracy-data-OQTDXI7Y.js +0 -0
  643. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/agents-data-BAL6QAOF.js +0 -0
  644. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-24LFKFZ6.js +0 -0
  645. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-3IXWEOIJ.js +0 -0
  646. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-3ROQFHPV.js +0 -0
  647. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-45PGAQRO.js +0 -0
  648. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-4H53OYLG.js +0 -0
  649. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-4LUI7O5P.js +0 -0
  650. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-4SQPQ5TB.js +0 -0
  651. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-4WKQTWUC.js +0 -0
  652. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-576YHDEK.js +0 -0
  653. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-6RLVD2DT.js +0 -0
  654. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-763NH7PP.js +0 -0
  655. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-76WAVKUG.js +0 -0
  656. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-7II2BD5F.js +0 -0
  657. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-ASYNLVOP.js +0 -0
  658. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-CTKDYZMG.js +0 -0
  659. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-CVB26NMC.js +0 -0
  660. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-DLORG2IY.js +0 -0
  661. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-FBGIG7YF.js +0 -0
  662. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-G7NGB5UX.js +0 -0
  663. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-GT4EAKAO.js +0 -0
  664. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-IYMBFPCV.js +0 -0
  665. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-LAAGCPU3.js +0 -0
  666. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-P5TXDD45.js +0 -0
  667. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-RPXHAG6F.js +0 -0
  668. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-S2ZBMEVA.js +0 -0
  669. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-S654BBEP.js +0 -0
  670. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-SACCDA46.js +0 -0
  671. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-T7QVTNXF.js +0 -0
  672. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-TCPSLBAB.js +0 -0
  673. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-TO4VVRZ7.js +0 -0
  674. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-VQ5YXO54.js +0 -0
  675. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-VWKSMFWJ.js +0 -0
  676. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/chunk-YTANGYYH.js +0 -0
  677. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/connect-KONYWYTT.js +0 -0
  678. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/connections-data-2DYS4UVW.js +0 -0
  679. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/more-PC6FVS3P.js +0 -0
  680. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/more-RCIVCUDE.js +0 -0
  681. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/more-ZKKRY6NO.css +0 -0
  682. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/sealbox-35YL4EUH.js +0 -0
  683. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/session-DYYTOE2K.js +0 -0
  684. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/settingsApply-2HRJEZYM.js +0 -0
  685. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/settingsReview-GX2FZQ4M.js +0 -0
  686. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/chunks/uPlot.esm-OIWT3AHJ.js +0 -0
  687. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/ci/impact.json +0 -0
  688. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/ci/quarantine.json +0 -0
  689. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/ci/tickets.json +0 -0
  690. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/alerts.json +0 -0
  691. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/app.json +0 -0
  692. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/community.json +0 -0
  693. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/connectors.json +0 -0
  694. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/data.json +0 -0
  695. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/decisions.json +0 -0
  696. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/delivery.json +0 -0
  697. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/deps.json +0 -0
  698. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/flow.json +0 -0
  699. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/health.json +0 -0
  700. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/insights.json +0 -0
  701. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/pulse.json +0 -0
  702. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/security.json +0 -0
  703. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/summary/ci_jobs.jsonl +0 -0
  704. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/summary/devlake_project_pr_metrics.jsonl +0 -0
  705. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/summary/devlake_pull_requests.jsonl +0 -0
  706. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/summary/manifest.json +0 -0
  707. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/summary/prs.jsonl +0 -0
  708. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/summary/tests.jsonl +0 -0
  709. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/supply.json +0 -0
  710. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/mobile/vulns.json +0 -0
  711. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/alerts.json +0 -0
  712. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/app.json +0 -0
  713. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/community.json +0 -0
  714. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/connectors.json +0 -0
  715. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/data.json +0 -0
  716. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/decisions.json +0 -0
  717. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/delivery.json +0 -0
  718. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/deps.json +0 -0
  719. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/flow.json +0 -0
  720. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/health.json +0 -0
  721. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/insights.json +0 -0
  722. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/pulse.json +0 -0
  723. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/security.json +0 -0
  724. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/summary/ci_jobs.jsonl +0 -0
  725. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/summary/devlake_project_pr_metrics.jsonl +0 -0
  726. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/summary/devlake_pull_requests.jsonl +0 -0
  727. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/summary/manifest.json +0 -0
  728. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/summary/prs.jsonl +0 -0
  729. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/summary/tests.jsonl +0 -0
  730. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/supply.json +0 -0
  731. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/payments-api/vulns.json +0 -0
  732. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/portal.json +0 -0
  733. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/alerts.json +0 -0
  734. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/app.json +0 -0
  735. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/community.json +0 -0
  736. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/connectors.json +0 -0
  737. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/data.json +0 -0
  738. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/decisions.json +0 -0
  739. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/delivery.json +0 -0
  740. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/deps.json +0 -0
  741. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/flow.json +0 -0
  742. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/health.json +0 -0
  743. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/insights.json +0 -0
  744. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/pulse.json +0 -0
  745. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/security.json +0 -0
  746. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/summary/ci_jobs.jsonl +0 -0
  747. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/summary/devlake_project_pr_metrics.jsonl +0 -0
  748. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/summary/devlake_pull_requests.jsonl +0 -0
  749. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/summary/manifest.json +0 -0
  750. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/summary/prs.jsonl +0 -0
  751. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/summary/tests.jsonl +0 -0
  752. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/supply.json +0 -0
  753. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/demo/web-app/vulns.json +0 -0
  754. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/fonts/plex-mono-400.woff2 +0 -0
  755. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/fonts/plex-sans-400.woff2 +0 -0
  756. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/fonts/plex-sans-600.woff2 +0 -0
  757. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/fonts/plex-sans-condensed-700.woff2 +0 -0
  758. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/about.css +0 -0
  759. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/activity.css +0 -0
  760. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/activity.js +0 -0
  761. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/agents.css +0 -0
  762. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/agents.js +0 -0
  763. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/ci.css +0 -0
  764. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/community.css +0 -0
  765. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/connections.css +0 -0
  766. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/connections.js +0 -0
  767. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/delivery.css +0 -0
  768. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/delivery.js +0 -0
  769. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/deps.css +0 -0
  770. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/explore.css +0 -0
  771. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/explore.js +0 -0
  772. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/health.css +0 -0
  773. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/health.js +0 -0
  774. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/help.css +0 -0
  775. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/insights.css +0 -0
  776. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/insights.js +0 -0
  777. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/investment.css +0 -0
  778. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/investment.js +0 -0
  779. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/overview.css +0 -0
  780. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/overview.js +0 -0
  781. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/portal.css +0 -0
  782. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/prs.css +0 -0
  783. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/prs.js +0 -0
  784. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/settings.css +0 -0
  785. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/settings.js +0 -0
  786. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/setup.css +0 -0
  787. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/standing.css +0 -0
  788. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/pages/standing.js +0 -0
  789. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/app/settings-workflow.json +0 -0
  790. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/index.html +0 -0
  791. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/site/integrations.html +0 -0
  792. {stackvitals-0.1.2 → stackvitals-0.1.3}/src/stackvitals/web/site/setup.html +0 -0
  793. {stackvitals-0.1.2 → stackvitals-0.1.3}/templates/gitlab/stackvitals.yml +0 -0
  794. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/ci_fake.py +0 -0
  795. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/conftest.py +0 -0
  796. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/fixtures/issue_page.json +0 -0
  797. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/fixtures/osv-scan.json +0 -0
  798. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/fixtures/pr_page.json +0 -0
  799. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/fixtures/repo_meta.json +0 -0
  800. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_actions_vulns.py +0 -0
  801. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_adjudicate.py +0 -0
  802. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_adoption_study.py +0 -0
  803. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_agent_leaderboard.py +0 -0
  804. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_agent_ledger.py +0 -0
  805. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_agreement_nudges.py +0 -0
  806. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ai_markers.py +0 -0
  807. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ai_matched.py +0 -0
  808. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ai_outcomes.py +0 -0
  809. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ai_spend.py +0 -0
  810. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_api_cost.py +0 -0
  811. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_app_review.py +0 -0
  812. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_archive_cli.py +0 -0
  813. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_bench.py +0 -0
  814. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_files.py +0 -0
  815. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_guarddog.py +0 -0
  816. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_mcp_messages.py +0 -0
  817. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_requests.py +0 -0
  818. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_sql.py +0 -0
  819. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_uicli.py +0 -0
  820. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_audit_workflows.py +0 -0
  821. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_base_images.py +0 -0
  822. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_began_after.py +0 -0
  823. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bench.py +0 -0
  824. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bench_by_repo.py +0 -0
  825. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bench_deploys.py +0 -0
  826. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bench_report_delivery.py +0 -0
  827. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bench_stars.py +0 -0
  828. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_branch_growth.py +0 -0
  829. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bucket.py +0 -0
  830. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_bug_backlog.py +0 -0
  831. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_capex.py +0 -0
  832. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_catalog_descriptor.py +0 -0
  833. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_change_risk.py +0 -0
  834. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_changes_14d.py +0 -0
  835. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_chat.py +0 -0
  836. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_action.py +0 -0
  837. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_action_pr.py +0 -0
  838. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_already_failing.py +0 -0
  839. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_analyze.py +0 -0
  840. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_analyze_tests.py +0 -0
  841. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_artifacts.py +0 -0
  842. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_automation.py +0 -0
  843. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_began.py +0 -0
  844. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_bench.py +0 -0
  845. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_bench_wiring.py +0 -0
  846. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_burnin.py +0 -0
  847. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_cli.py +0 -0
  848. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_collect.py +0 -0
  849. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_comment_shape.py +0 -0
  850. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_cost.py +0 -0
  851. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_decisions.py +0 -0
  852. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_depth.py +0 -0
  853. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_evidence.py +0 -0
  854. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_feedback.py +0 -0
  855. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_feedback_all.py +0 -0
  856. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_fingerprint.py +0 -0
  857. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_gitlab.py +0 -0
  858. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_groups.py +0 -0
  859. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_impact.py +0 -0
  860. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_issue_lifecycle.py +0 -0
  861. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_kinds.py +0 -0
  862. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_masking.py +0 -0
  863. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_maybe_flaky.py +0 -0
  864. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_mcp.py +0 -0
  865. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_monitors.py +0 -0
  866. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_outside.py +0 -0
  867. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_outside_ci_edit.py +0 -0
  868. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_pr_details.py +0 -0
  869. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_push_evidence.py +0 -0
  870. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_quarantine_mark.py +0 -0
  871. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_report.py +0 -0
  872. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_report_formats.py +0 -0
  873. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_retry.py +0 -0
  874. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_review_fixes.py +0 -0
  875. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_safe_rule.py +0 -0
  876. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_settings.py +0 -0
  877. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_surfaces_m3.py +0 -0
  878. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_test_verdict.py +0 -0
  879. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_testreports.py +0 -0
  880. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_triage.py +0 -0
  881. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_triggers_script.py +0 -0
  882. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_upload.py +0 -0
  883. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_verdict_check.py +0 -0
  884. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_ci_webhook_formats.py +0 -0
  885. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_code_hosts.py +0 -0
  886. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_code_survival.py +0 -0
  887. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_action.py +0 -0
  888. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_affiliation.py +0 -0
  889. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_analyze.py +0 -0
  890. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_bench.py +0 -0
  891. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_cli.py +0 -0
  892. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_collect.py +0 -0
  893. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_context.py +0 -0
  894. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_dependency.py +0 -0
  895. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_discussions.py +0 -0
  896. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_fetch.py +0 -0
  897. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_report.py +0 -0
  898. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_community_stated.py +0 -0
  899. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_config.py +0 -0
  900. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connector_checks.py +0 -0
  901. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connector_framework.py +0 -0
  902. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connector_review.py +0 -0
  903. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connectors.py +0 -0
  904. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connectors_chat.py +0 -0
  905. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connectors_discourse.py +0 -0
  906. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connectors_epics.py +0 -0
  907. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_connectors_writeback.py +0 -0
  908. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_contribute_brief.py +0 -0
  909. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_contribute_prospective.py +0 -0
  910. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_contribute_review.py +0 -0
  911. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_convert.py +0 -0
  912. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_actors.py +0 -0
  913. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_agreements.py +0 -0
  914. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_alerts.py +0 -0
  915. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_appdata.py +0 -0
  916. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_decisions.py +0 -0
  917. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_delivery.py +0 -0
  918. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_delivery_peers.py +0 -0
  919. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_delivery_surfaces.py +0 -0
  920. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_digest.py +0 -0
  921. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_digest_step.py +0 -0
  922. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_explore.py +0 -0
  923. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_export.py +0 -0
  924. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_findings.py +0 -0
  925. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_findings_ledger.py +0 -0
  926. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_insights.py +0 -0
  927. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_insights_surfaces.py +0 -0
  928. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_metrics.py +0 -0
  929. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_model.py +0 -0
  930. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_otel.py +0 -0
  931. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_propose.py +0 -0
  932. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_pulse.py +0 -0
  933. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_recovery.py +0 -0
  934. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_request_wiring.py +0 -0
  935. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_requests.py +0 -0
  936. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_requests_wording.py +0 -0
  937. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_roles_wiring.py +0 -0
  938. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_runner.py +0 -0
  939. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_schema.py +0 -0
  940. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_services.py +0 -0
  941. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_settings.py +0 -0
  942. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_sql_org.py +0 -0
  943. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_stats.py +0 -0
  944. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_store.py +0 -0
  945. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_summary.py +0 -0
  946. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_summary_churn.py +0 -0
  947. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_tomledit.py +0 -0
  948. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_ui.py +0 -0
  949. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_webapp.py +0 -0
  950. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_webapp_version.py +0 -0
  951. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_core_workspace.py +0 -0
  952. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_cost_guard.py +0 -0
  953. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_count_repos.py +0 -0
  954. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_coverage.py +0 -0
  955. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_cli.py +0 -0
  956. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_fetch.py +0 -0
  957. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_outcomes.py +0 -0
  958. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_queries.py +0 -0
  959. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_runner.py +0 -0
  960. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_seed.py +0 -0
  961. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_state.py +0 -0
  962. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_crawl_writer.py +0 -0
  963. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_delivery_bench.py +0 -0
  964. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_delivery_deploy_check.py +0 -0
  965. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_delivery_rules_m2.py +0 -0
  966. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_bumps.py +0 -0
  967. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_crawl.py +0 -0
  968. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_exploits.py +0 -0
  969. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_fixed_versions.py +0 -0
  970. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_ledger.py +0 -0
  971. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_map.py +0 -0
  972. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_osv.py +0 -0
  973. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_owners.py +0 -0
  974. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_top.py +0 -0
  975. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_trend_quiet.py +0 -0
  976. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_trends.py +0 -0
  977. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dep_watch.py +0 -0
  978. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deploy_attempts.py +0 -0
  979. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deploy_ranges.py +0 -0
  980. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deployment_history.py +0 -0
  981. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deployment_list.py +0 -0
  982. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_action.py +0 -0
  983. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_cli.py +0 -0
  984. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_dossier.py +0 -0
  985. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_hygiene.py +0 -0
  986. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_imports.py +0 -0
  987. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_lookalike.py +0 -0
  988. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_paths.py +0 -0
  989. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_policy.py +0 -0
  990. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_reach.py +0 -0
  991. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_release.py +0 -0
  992. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_review_fixes.py +0 -0
  993. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_runtimes.py +0 -0
  994. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_deps_vulns.py +0 -0
  995. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_devlake_cicd.py +0 -0
  996. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dora_evidence.py +0 -0
  997. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dora_proof.py +0 -0
  998. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dora_rows.py +0 -0
  999. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_dora_weeks.py +0 -0
  1000. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_editor_marks.py +0 -0
  1001. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_enterprise_server.py +0 -0
  1002. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_events.py +0 -0
  1003. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_explain_cli.py +0 -0
  1004. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_fair.py +0 -0
  1005. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_fixplan.py +0 -0
  1006. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flake_code_kinds.py +0 -0
  1007. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flaky_natural.py +0 -0
  1008. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flaky_sample.py +0 -0
  1009. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flaky_score_fair.py +0 -0
  1010. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flaky_test_cost.py +0 -0
  1011. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flaky_tickets.py +0 -0
  1012. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_analyze.py +0 -0
  1013. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_automate.py +0 -0
  1014. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_bench_pipeline.py +0 -0
  1015. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_collect.py +0 -0
  1016. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_collect_delivery.py +0 -0
  1017. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_definitions.py +0 -0
  1018. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_m2.py +0 -0
  1019. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_peers.py +0 -0
  1020. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_preflight.py +0 -0
  1021. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_report.py +0 -0
  1022. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_round2.py +0 -0
  1023. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_round3.py +0 -0
  1024. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_triage.py +0 -0
  1025. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_windows.py +0 -0
  1026. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_flow_wiring.py +0 -0
  1027. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_fork_reports.py +0 -0
  1028. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_gitlab_action.py +0 -0
  1029. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_gitlab_delivery.py +0 -0
  1030. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_graphql.py +0 -0
  1031. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_health.py +0 -0
  1032. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_identities.py +0 -0
  1033. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_identity.py +0 -0
  1034. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_identity_everywhere.py +0 -0
  1035. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_identity_match.py +0 -0
  1036. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_init_cli.py +0 -0
  1037. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_insights_chains.py +0 -0
  1038. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_investment.py +0 -0
  1039. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_jira_fields.py +0 -0
  1040. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_knowledge_names.py +0 -0
  1041. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_labeller.py +0 -0
  1042. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_llms_txt.py +0 -0
  1043. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_local_run.py +0 -0
  1044. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_m1_small_fixes.py +0 -0
  1045. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_masking_card.py +0 -0
  1046. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_mcp_core.py +0 -0
  1047. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_mcp_provenance.py +0 -0
  1048. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_merge_queue.py +0 -0
  1049. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_mergescout_token.py +0 -0
  1050. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_modular_install.py +0 -0
  1051. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_nulls_power.py +0 -0
  1052. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_numbers_review.py +0 -0
  1053. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_odds_backtest.py +0 -0
  1054. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_outside_fresh.py +0 -0
  1055. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_owners.py +0 -0
  1056. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_pagers_copilot.py +0 -0
  1057. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_pages_deploy.py +0 -0
  1058. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_parsing_review.py +0 -0
  1059. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_peer_fit.py +0 -0
  1060. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_polish_m1.py +0 -0
  1061. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_polish_m2.py +0 -0
  1062. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_polish_review.py +0 -0
  1063. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_app_facts.py +0 -0
  1064. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_campaigns.py +0 -0
  1065. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_catalog.py +0 -0
  1066. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_checks.py +0 -0
  1067. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_export.py +0 -0
  1068. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_golden.py +0 -0
  1069. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_handcheck.py +0 -0
  1070. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_history.py +0 -0
  1071. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_html.py +0 -0
  1072. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_m1.py +0 -0
  1073. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_nudges.py +0 -0
  1074. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_reviews.py +0 -0
  1075. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_rollup.py +0 -0
  1076. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_portal_scorecard.py +0 -0
  1077. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_pr_exclusions.py +0 -0
  1078. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_pr_licences.py +0 -0
  1079. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_pr_rules.py +0 -0
  1080. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_prelaunch.py +0 -0
  1081. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_production_branches.py +0 -0
  1082. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_project_dora.py +0 -0
  1083. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_pulse_trend.py +0 -0
  1084. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_quarantine_expiry.py +0 -0
  1085. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_quarantine_runners.py +0 -0
  1086. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_quarantine_runtime.py +0 -0
  1087. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_recorded.py +0 -0
  1088. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_relay_and_polish.py +0 -0
  1089. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_release_quality.py +0 -0
  1090. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_releases.py +0 -0
  1091. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_releases_ratelimit.py +0 -0
  1092. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_report.py +0 -0
  1093. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_report_validate.py +0 -0
  1094. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_response_times.py +0 -0
  1095. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_result_quality.py +0 -0
  1096. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_resync.py +0 -0
  1097. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_review_fixes.py +0 -0
  1098. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_review_fixes_action.py +0 -0
  1099. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_review_fixes_p3.py +0 -0
  1100. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_review_fixes_requests.py +0 -0
  1101. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_review_m3.py +0 -0
  1102. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_sample.py +0 -0
  1103. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_schema_sections.py +0 -0
  1104. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_scorecard_agreement.py +0 -0
  1105. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_security_checks.py +0 -0
  1106. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_selfheal.py +0 -0
  1107. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_services.py +0 -0
  1108. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_setup_check.py +0 -0
  1109. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_setup_template.py +0 -0
  1110. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_shared_bench.py +0 -0
  1111. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_shell_app_link.py +0 -0
  1112. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_shrinkage_groups.py +0 -0
  1113. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_check.py +0 -0
  1114. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_cli.py +0 -0
  1115. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_identity.py +0 -0
  1116. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_issues.py +0 -0
  1117. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_labels.py +0 -0
  1118. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_repo_stats.py +0 -0
  1119. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_signals_walls.py +0 -0
  1120. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_site_build.py +0 -0
  1121. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_snapshot_build.py +0 -0
  1122. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_snapshot_publish.py +0 -0
  1123. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_sonar.py +0 -0
  1124. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_state_report.py +0 -0
  1125. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_store.py +0 -0
  1126. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_store_cli.py +0 -0
  1127. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_stream.py +0 -0
  1128. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_suite_packaging.py +0 -0
  1129. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_supply.py +0 -0
  1130. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_sweep.py +0 -0
  1131. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_team_dora.py +0 -0
  1132. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_test_variants.py +0 -0
  1133. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_action_pack.py +0 -0
  1134. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_live.py +0 -0
  1135. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_queries.py +0 -0
  1136. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_server.py +0 -0
  1137. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_speed.py +0 -0
  1138. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_store.py +0 -0
  1139. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tool_tracking.py +0 -0
  1140. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_tracker.py +0 -0
  1141. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_triage_math.py +0 -0
  1142. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_triage_pipeline.py +0 -0
  1143. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_uncertainty.py +0 -0
  1144. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_verdict_feedback.py +0 -0
  1145. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_verdict_strict.py +0 -0
  1146. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_vulns_dev_only.py +0 -0
  1147. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_vulns_ignores.py +0 -0
  1148. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_vulns_inputs.py +0 -0
  1149. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_web_build.py +0 -0
  1150. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_web_next_setup.py +0 -0
  1151. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_web_replay_parity.py +0 -0
  1152. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_what_changed.py +0 -0
  1153. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/local/test_work_calendar.py +0 -0
  1154. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/signals_data.py +0 -0
  1155. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_accuracy.py +0 -0
  1156. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_bench.py +0 -0
  1157. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_ci.py +0 -0
  1158. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_community.py +0 -0
  1159. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_connectors.py +0 -0
  1160. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_contribute.py +0 -0
  1161. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_core.py +0 -0
  1162. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_crawl.py +0 -0
  1163. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_decisions.py +0 -0
  1164. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_delivery.py +0 -0
  1165. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_deps.py +0 -0
  1166. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_discover.py +0 -0
  1167. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_github.py +0 -0
  1168. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_insights.py +0 -0
  1169. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_portal.py +0 -0
  1170. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_signals.py +0 -0
  1171. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_snapshot.py +0 -0
  1172. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_store.py +0 -0
  1173. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_surfaces.py +0 -0
  1174. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_team.py +0 -0
  1175. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_tool.py +0 -0
  1176. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/test_flow_web.py +0 -0
  1177. {stackvitals-0.1.2 → stackvitals-0.1.3}/tests/tool_data.py +0 -0
  1178. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/brand/cube-128.png +0 -0
  1179. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/brand/cube-256.png +0 -0
  1180. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/brand/cube-64.png +0 -0
  1181. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/build.mjs +0 -0
  1182. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/demo/extra-ci.mjs +0 -0
  1183. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/demo/extra-delivery.mjs +0 -0
  1184. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/demo/extra-deps.mjs +0 -0
  1185. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/demo/extra-people.mjs +0 -0
  1186. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/demo/extra-portal.mjs +0 -0
  1187. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/demo/source.mjs +0 -0
  1188. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/defaults.spec.ts +0 -0
  1189. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/fixtures.ts +0 -0
  1190. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/flows.spec.ts +0 -0
  1191. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/links.spec.ts +0 -0
  1192. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/playwright.config.ts +0 -0
  1193. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/serve.mjs +0 -0
  1194. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/sweep.spec.ts +0 -0
  1195. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/e2e/welcome.spec.ts +0 -0
  1196. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/index.html +0 -0
  1197. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/package-lock.json +0 -0
  1198. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/package.json +0 -0
  1199. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/scripts/docs.mjs +0 -0
  1200. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/app/AddRepo.tsx +0 -0
  1201. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/app/Profile.tsx +0 -0
  1202. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/app/jump.ts +0 -0
  1203. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/app/router.ts +0 -0
  1204. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/app/routes.ts +0 -0
  1205. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/boot.ts +0 -0
  1206. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/brand/Logo.tsx +0 -0
  1207. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/charts/BarChart.tsx +0 -0
  1208. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/charts/MetricHero.tsx +0 -0
  1209. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/charts/ScrubChart.tsx +0 -0
  1210. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/charts/Sparkline.tsx +0 -0
  1211. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/charts/metric.ts +0 -0
  1212. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/files.ts +0 -0
  1213. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/format.ts +0 -0
  1214. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/repos.ts +0 -0
  1215. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/requestIssue.ts +0 -0
  1216. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/source.ts +0 -0
  1217. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/store.ts +0 -0
  1218. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/theme.ts +0 -0
  1219. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/types.ts +0 -0
  1220. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/data/write.ts +0 -0
  1221. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/Decide.tsx +0 -0
  1222. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/Evidence.tsx +0 -0
  1223. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/Health.tsx +0 -0
  1224. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/SetupRunning.tsx +0 -0
  1225. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/agents-data.ts +0 -0
  1226. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/brand-logos.ts +0 -0
  1227. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/connect.css +0 -0
  1228. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/connect.tsx +0 -0
  1229. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/connectRepos.tsx +0 -0
  1230. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/connections-data.ts +0 -0
  1231. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/connstatus.ts +0 -0
  1232. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/helpLink.ts +0 -0
  1233. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/markdown.ts +0 -0
  1234. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/sealbox.ts +0 -0
  1235. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/sealedbox.d.ts +0 -0
  1236. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/secrets.ts +0 -0
  1237. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/settingsApply.ts +0 -0
  1238. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/settingsModel.ts +0 -0
  1239. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/settingsPending.ts +0 -0
  1240. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/settingsReplay.ts +0 -0
  1241. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/settingsReview.tsx +0 -0
  1242. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/settingsToml.ts +0 -0
  1243. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/text-css.d.ts +0 -0
  1244. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/features/vitals.ts +0 -0
  1245. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/caps.ts +0 -0
  1246. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/client.ts +0 -0
  1247. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/config.ts +0 -0
  1248. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/detect.ts +0 -0
  1249. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/diff.ts +0 -0
  1250. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/links.ts +0 -0
  1251. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/mine.ts +0 -0
  1252. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/names.ts +0 -0
  1253. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/oauth.ts +0 -0
  1254. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/open.ts +0 -0
  1255. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/session.ts +0 -0
  1256. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/setup.ts +0 -0
  1257. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/signout.ts +0 -0
  1258. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/token.ts +0 -0
  1259. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/github/watch.ts +0 -0
  1260. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/main.tsx +0 -0
  1261. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/about/parts.tsx +0 -0
  1262. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/about-accuracy.d.ts +0 -0
  1263. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/about.css +0 -0
  1264. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/accuracy-data.js +0 -0
  1265. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/activity.css +0 -0
  1266. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/activity.tsx +0 -0
  1267. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/agents/parts.tsx +0 -0
  1268. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/agents.css +0 -0
  1269. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/agents.tsx +0 -0
  1270. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/ci/more.tsx +0 -0
  1271. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/ci/parts.tsx +0 -0
  1272. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/ci/setup.tsx +0 -0
  1273. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/ci/workflowgen.ts +0 -0
  1274. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/ci.css +0 -0
  1275. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/ci.tsx +0 -0
  1276. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/community/command.ts +0 -0
  1277. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/community/report.tsx +0 -0
  1278. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/community.css +0 -0
  1279. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/connections.css +0 -0
  1280. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/connections.tsx +0 -0
  1281. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/delivery/blocks.css +0 -0
  1282. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/delivery/blocks.tsx +0 -0
  1283. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/delivery/more.tsx +0 -0
  1284. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/delivery/sources.tsx +0 -0
  1285. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/delivery.css +0 -0
  1286. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/delivery.tsx +0 -0
  1287. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps/blocks.css +0 -0
  1288. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps/blocks.tsx +0 -0
  1289. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps/lookup.ts +0 -0
  1290. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps/scanning.ts +0 -0
  1291. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps/security.tsx +0 -0
  1292. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps/tools.tsx +0 -0
  1293. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps.css +0 -0
  1294. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/deps.tsx +0 -0
  1295. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/explore/parts.tsx +0 -0
  1296. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/explore/query.ts +0 -0
  1297. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/explore.css +0 -0
  1298. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/explore.tsx +0 -0
  1299. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/health.css +0 -0
  1300. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/health.tsx +0 -0
  1301. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/help.css +0 -0
  1302. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/help.tsx +0 -0
  1303. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/insights/parts.tsx +0 -0
  1304. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/insights.css +0 -0
  1305. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/insights.tsx +0 -0
  1306. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/investment.css +0 -0
  1307. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/investment.tsx +0 -0
  1308. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/overview/parts.tsx +0 -0
  1309. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/overview.css +0 -0
  1310. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/overview.tsx +0 -0
  1311. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal/access.ts +0 -0
  1312. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal/panel.css +0 -0
  1313. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal/panel.tsx +0 -0
  1314. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal/parts.tsx +0 -0
  1315. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal/setup.ts +0 -0
  1316. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal/tools.tsx +0 -0
  1317. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal.css +0 -0
  1318. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/portal.tsx +0 -0
  1319. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/prs/more.tsx +0 -0
  1320. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/prs/parts.tsx +0 -0
  1321. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/prs/preflight.ts +0 -0
  1322. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/prs.css +0 -0
  1323. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/prs.tsx +0 -0
  1324. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/settings.css +0 -0
  1325. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/settings.tsx +0 -0
  1326. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/setup.css +0 -0
  1327. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/standing.css +0 -0
  1328. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/standing.tsx +0 -0
  1329. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/welcome-sheet.css +0 -0
  1330. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/welcome-sheet.tsx +0 -0
  1331. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/pages/welcome.tsx +0 -0
  1332. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/base.css +0 -0
  1333. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/charts.css +0 -0
  1334. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/components.css +0 -0
  1335. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/index.css +0 -0
  1336. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/styles/tokens.css +0 -0
  1337. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/Button.tsx +0 -0
  1338. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/Page.tsx +0 -0
  1339. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/Popover.tsx +0 -0
  1340. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/Portal.tsx +0 -0
  1341. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/Sheet.tsx +0 -0
  1342. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/Table.tsx +0 -0
  1343. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/bits.tsx +0 -0
  1344. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/controls.tsx +0 -0
  1345. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/icons.tsx +0 -0
  1346. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/motion.ts +0 -0
  1347. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/src/ui/prefill.tsx +0 -0
  1348. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/ciworkflow.test.ts +0 -0
  1349. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/client.test.ts +0 -0
  1350. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/connstatus.test.ts +0 -0
  1351. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/depstools.test.ts +0 -0
  1352. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/explorequery.test.ts +0 -0
  1353. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/fake.ts +0 -0
  1354. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/links.test.ts +0 -0
  1355. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/load.mjs +0 -0
  1356. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/markdown.test.ts +0 -0
  1357. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/portalsetup.test.ts +0 -0
  1358. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/preflight.test.ts +0 -0
  1359. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/run.mjs +0 -0
  1360. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/safety.test.ts +0 -0
  1361. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/secrets.test.ts +0 -0
  1362. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/settings.test.ts +0 -0
  1363. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/test/setup.test.ts +0 -0
  1364. {stackvitals-0.1.2 → stackvitals-0.1.3}/web/tsconfig.json +0 -0
  1365. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/README.md +0 -0
  1366. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/package.json +0 -0
  1367. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/relay/README.md +0 -0
  1368. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/relay/package.json +0 -0
  1369. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/relay/src/index.js +0 -0
  1370. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/relay/test/index.test.mjs +0 -0
  1371. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/relay/wrangler.toml +0 -0
  1372. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/src/index.js +0 -0
  1373. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/test/index.test.mjs +0 -0
  1374. {stackvitals-0.1.2 → stackvitals-0.1.3}/worker/wrangler.toml +0 -0
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.3 (2026-10-31)
4
+
5
+ - The app's About page and the project site say Apache 2.0 (they said MIT); the site shows the cube logo and the
6
+ one-command setup.
7
+ - The app's Setup page and Help give `stackvitals init owner/repo` as the terminal way to set a repo up.
8
+ - PyPI lists the project's links (home, docs, source, issues, changelog).
9
+ - Docs: the install page says how to get the command; guides, quickstart and modules lead with `stackvitals init`;
10
+ contradictions fixed (golden paths, GitLab, GitHub Enterprise Server, sign-in, private repos' CI runs, cycle-time
11
+ phases); the PR verdicts are a table; the settings page says which switches are on by default; the architecture
12
+ diagrams list every trigger and show Portal running from the org's repo; a release checklist with the real steps.
13
+ - A code of conduct (Contributor Covenant 2.1), with reports through the repository's private reporting form.
14
+
3
15
  ## 0.1.2 (2026-10-31)
4
16
 
5
17
  - `stackvitals init owner/repo` sets StackVitals up in one command: commits the workflow (or opens a pull request), follows
@@ -0,0 +1,113 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience
6
+ for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender
7
+ identity and expression, level of experience, education, socio-economic status, nationality, personal appearance,
8
+ race, caste, color, religion, or sexual identity and orientation.
9
+
10
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy
11
+ community.
12
+
13
+ ## Our Standards
14
+
15
+ Examples of behavior that contributes to a positive environment for our community include:
16
+
17
+ * Demonstrating empathy and kindness toward other people
18
+ * Being respectful of differing opinions, viewpoints, and experiences
19
+ * Giving and gracefully accepting constructive feedback
20
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
21
+ * Focusing on what is best not just for us as individuals, but for the overall community
22
+
23
+ Examples of unacceptable behavior include:
24
+
25
+ * The use of sexualized language or imagery, and sexual attention or advances of any kind
26
+ * Trolling, insulting or derogatory comments, and personal or political attacks
27
+ * Public or private harassment
28
+ * Publishing others' private information, such as a physical or email address, without their explicit permission
29
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
30
+
31
+ ## Enforcement Responsibilities
32
+
33
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take
34
+ appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening,
35
+ offensive, or harmful.
36
+
37
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits,
38
+ issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for
39
+ moderation decisions when appropriate.
40
+
41
+ ## Scope
42
+
43
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially
44
+ representing the community in public spaces. Examples of representing our community include using an official e-mail
45
+ address, posting via an official social media account, or acting as an appointed representative at an online or
46
+ offline event.
47
+
48
+ ## Enforcement
49
+
50
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders
51
+ responsible for enforcement privately, through GitHub's private reporting form for this repository: open the
52
+ **Security** tab of [stackvitals/stackvitals](https://github.com/stackvitals/stackvitals/security), choose **Report a
53
+ vulnerability**, and start the title with "Conduct:". Only the maintainers can read it. You can also use GitHub's
54
+ [Report content](https://docs.github.com/en/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam)
55
+ on any comment, issue or pull request. All complaints will be reviewed and investigated promptly and fairly.
56
+
57
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
58
+
59
+ ## Enforcement Guidelines
60
+
61
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they
62
+ deem in violation of this Code of Conduct:
63
+
64
+ ### 1. Correction
65
+
66
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the
67
+ community.
68
+
69
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the
70
+ violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
71
+
72
+ ### 2. Warning
73
+
74
+ **Community Impact**: A violation through a single incident or series of actions.
75
+
76
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved,
77
+ including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This
78
+ includes avoiding interactions in community spaces as well as external channels like social media. Violating these
79
+ terms may lead to a temporary or permanent ban.
80
+
81
+ ### 3. Temporary Ban
82
+
83
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
84
+
85
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a
86
+ specified period of time. No public or private interaction with the people involved, including unsolicited
87
+ interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to
88
+ a permanent ban.
89
+
90
+ ### 4. Permanent Ban
91
+
92
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate
93
+ behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
94
+
95
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
96
+
97
+ ## Attribution
98
+
99
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at
100
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
101
+
102
+ Community Impact Guidelines were inspired by
103
+ [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
104
+
105
+ For answers to common questions about this code of conduct, see the FAQ at
106
+ [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
107
+ [https://www.contributor-covenant.org/translations][translations].
108
+
109
+ [homepage]: https://www.contributor-covenant.org
110
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
111
+ [Mozilla CoC]: https://github.com/mozilla/diversity
112
+ [FAQ]: https://www.contributor-covenant.org/faq
113
+ [translations]: https://www.contributor-covenant.org/translations
@@ -1,7 +1,7 @@
1
1
  # Contributing
2
2
 
3
3
  Thanks for helping. StackVitals is small enough that one person can read any part of it in an afternoon; please
4
- keep it that way.
4
+ keep it that way. Everyone taking part follows the [Code of Conduct](CODE_OF_CONDUCT.md).
5
5
 
6
6
  ## Set up
7
7
 
@@ -15,9 +15,23 @@ uv run --extra dev pytest tests -q
15
15
 
16
16
  The tests need no token and no network. [docs/architecture.md](docs/architecture.md) explains how the parts fit.
17
17
 
18
+ **The web app** is TypeScript in `web/`, built into `src/stackvitals/web/app/`, and the built files are committed
19
+ (they ship in the package). After changing it:
20
+
21
+ ```
22
+ cd web
23
+ npm ci
24
+ npm run build
25
+ npm test
26
+ ```
27
+
28
+ Commit `web/` and the rebuilt `src/stackvitals/web/` together; a test fails when the build is out of date.
29
+ [web/README.md](web/README.md) explains its layout and the browser tests (`npm run e2e`).
30
+
18
31
  ## What a good change looks like
19
32
 
20
- - **A bug:** a failing test first, in the `tests/test_flow_<area>.py` file for that area, then the fix.
33
+ - **A bug:** a failing test first, then the fix. Task-sized tests go in `tests/local/`; a test that guards a real
34
+ bug or finding for a whole flow goes in the `tests/test_flow_<area>.py` file for that area.
21
35
  - **A new rule or a changed one** (anything that decides a verdict or a number people see): add or update its entry in
22
36
  [bench/accuracy/registry.json](bench/accuracy/registry.json) with what it was tuned on, what it was checked on and
23
37
  the bar, check it on public data the rule never saw, then run `python bench/accuracy/summary.py` to regenerate
@@ -34,7 +48,7 @@ The tests need no token and no network. [docs/architecture.md](docs/architecture
34
48
  - Code reads like the code around it. Comments are short, plain and say why, not what.
35
49
  - Copy people see is plain English: what happened, how many, since when, and what to do. No unexplained jargon, and
36
50
  never a number without its sample size.
37
- - Tests are few and test whole flows; each one says what real bug or finding it guards.
51
+ - Each test says what real bug or finding it guards; the `tests/test_flow_*.py` files stay few and test whole flows.
38
52
 
39
53
  ## Pull requests
40
54
 
@@ -1,7 +1,12 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: stackvitals
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: Free, open-source developer suite: CI health, team flow, dependencies, community, and MergeScout for contributors.
5
+ Project-URL: Homepage, https://github.com/stackvitals/stackvitals
6
+ Project-URL: Documentation, https://github.com/stackvitals/stackvitals/tree/main/docs
7
+ Project-URL: Repository, https://github.com/stackvitals/stackvitals
8
+ Project-URL: Issues, https://github.com/stackvitals/stackvitals/issues
9
+ Project-URL: Changelog, https://github.com/stackvitals/stackvitals/blob/main/CHANGELOG.md
5
10
  License-Expression: Apache-2.0
6
11
  License-File: LICENSE
7
12
  License-File: NOTICE
@@ -237,4 +242,4 @@ model families (Claude and Gemini); no person has audited the labels.
237
242
  - **Before you rely on it:** [what each rule does](docs/rules.md), [known limitations](docs/limitations.md),
238
243
  [what leaves your repo](docs/privacy.md), [threat model](docs/threat-model.md), [enterprise controls](docs/enterprise.md).
239
244
  - **More:** [FAQ](docs/faq.md), [how it works](docs/architecture.md), [roadmap](docs/roadmap.md),
240
- [contributing](CONTRIBUTING.md), [governance](GOVERNANCE.md), [security](SECURITY.md).
245
+ [contributing](CONTRIBUTING.md), [code of conduct](CODE_OF_CONDUCT.md), [governance](GOVERNANCE.md), [security](SECURITY.md).
@@ -195,4 +195,4 @@ model families (Claude and Gemini); no person has audited the labels.
195
195
  - **Before you rely on it:** [what each rule does](docs/rules.md), [known limitations](docs/limitations.md),
196
196
  [what leaves your repo](docs/privacy.md), [threat model](docs/threat-model.md), [enterprise controls](docs/enterprise.md).
197
197
  - **More:** [FAQ](docs/faq.md), [how it works](docs/architecture.md), [roadmap](docs/roadmap.md),
198
- [contributing](CONTRIBUTING.md), [governance](GOVERNANCE.md), [security](SECURITY.md).
198
+ [contributing](CONTRIBUTING.md), [code of conduct](CODE_OF_CONDUCT.md), [governance](GOVERNANCE.md), [security](SECURITY.md).
@@ -46,15 +46,15 @@
46
46
  },
47
47
  {
48
48
  "date": "2026-10-23",
49
- "from": "known flaky passes the verdict check",
49
+ "from": "a known flake passed the verdict check",
50
50
  "why": "13 of 81 held-out safe calls were the change's own failure; matching past flakes' errors didn't separate them",
51
51
  "effect": "known flaky still reads 'likely a flake, re-run it', but the verdict check passes only once CI is green"
52
52
  },
53
53
  {
54
54
  "date": "2026-10-23",
55
- "from": "known flaky: likely a flake, re-run it",
55
+ "from": "a known flake read 'likely a flake, re-run it'",
56
56
  "why": "in the agent head-to-head a smaller model trusted it on 2 failures the change caused",
57
- "effect": "now asks to check the error isn't from the change before re-running; those 2 were then answered right"
57
+ "effect": "it asks to check the error isn't from the change before re-running; those 2 were then answered right"
58
58
  },
59
59
  {
60
60
  "date": "2026-10-28",
@@ -312,8 +312,8 @@ def _doc(cs: list[dict], r: dict) -> str:
312
312
  f"- Each adjudicator mostly sided with its own family: Claude's {r['cross']['claude_adjudicator_sided_with_claude']} times, "
313
313
  f"Gemini's {r['cross']['gemini_adjudicator_sided_with_gemini']} times.",
314
314
  "- So each card shows its headline on each labeller's labels as well as the adjudicated ones.",
315
- "- A check by six models from three families (OpenAI gpt-5.4-mini and gpt-5-mini, Google gemini-3.8-flash and "
316
- "gemini-3.5-flash, Anthropic Claude Sonnet and Haiku), each answering alone the same plain-language questions on "
315
+ "- A second check: six models from three families (OpenAI gpt-5.4-mini and gpt-5-mini, Google gemini-3.8-flash and "
316
+ "gemini-3.5-flash, Anthropic Claude Sonnet and Haiku) each answered the same plain-language questions alone, on "
317
317
  f"{r['panel6']['items']} labelled items (the CI and reply items drawn first from those the first two labellers "
318
318
  "disagreed on). Where a majority formed, it matched the labels on CI causes "
319
319
  f"{panel('ci')}, the release behind a bug {panel('incident')}, how releases reach users {panel('deploy')}, "
@@ -325,10 +325,12 @@ def _doc(cs: list[dict], r: dict) -> str:
325
325
  "- No person has audited the labels yet.", "",
326
326
  "**How sure.** A rule is an *early observation* when its check rests on few cases; its numbers are a direction,",
327
327
  "not a settled rate: " + "; ".join(f"`{x['id']}` ({x['strength_why']})" for x in r["registry"]["rules"]
328
- if x.get("strength") == "early observation") + ". A rule whose bar *failed* is kept "
328
+ if x.get("strength") == "early observation") + ". A rule's *bar* is the accuracy it had to reach before it shipped; for the flaky-test rules it is that at most 5% "
329
+ "of the failures it calls flaky were really caused by the change (*masking*: a real failure hidden as a flake). "
330
+ "A rule whose bar *failed* is kept "
329
331
  "only where failing costs nothing it promised: " + "; ".join(f"`{x['id']}` ({x['strength_why']})" for x in r["registry"]["rules"]
330
- if x.get("strength") == "bar failed") + ". The rest are validated on",
331
- "held-out data ([rules.md](rules.md)).", "",
332
+ if x.get("strength") == "bar failed") + ". The rest are validated: checked against their bar, on held-out data where the rule has one ([rules.md](rules.md) "
333
+ "says which).", "",
332
334
  "**Reproduce a number.** `python bench/accuracy/reproduce.py list` names the command behind every result file;",
333
335
  "`reproduce.py check <card>` re-scores it and says whether the numbers match. Scoring reads the evidence each",
334
336
  "card was labelled from (the `.work` folders: CI histories, crawl records, logs), which is too large and holds",
@@ -343,7 +345,7 @@ def _doc(cs: list[dict], r: dict) -> str:
343
345
  "[registry.json](../bench/accuracy/registry.json).", ""]
344
346
  for rule in r["registry"]["rules"]:
345
347
  for v in rule.get("revisions") or []:
346
- out.append(f"- {v['date']}, `{rule['id']}`: was {v['from']}; {v['why']}; now {v['effect']}.")
348
+ out.append(f"- {v['date']}, `{rule['id']}`: before, {v['from']}; {v['why']}; after, {v['effect']}.")
347
349
  return "\n".join(out) + "\n"
348
350
 
349
351
 
@@ -13,12 +13,11 @@ page is built from those cards' result files by `bench/accuracy/summary.py`; the
13
13
  - That third reading was Claude's. Gemini, adjudicating a sample of the same disputes, agreed with it on 15 of 40.
14
14
  - Each adjudicator mostly sided with its own family: Claude's 33 times, Gemini's 23 times.
15
15
  - So each card shows its headline on each labeller's labels as well as the adjudicated ones.
16
- - A check by six models from three families (OpenAI gpt-5.4-mini and gpt-5-mini, Google gemini-3.8-flash and gemini-3.5-flash, Anthropic Claude Sonnet and Haiku), each answering alone the same plain-language questions on 120 labelled items (the CI and reply items drawn first from those the first two labellers disagreed on). Where a majority formed, it matched the labels on CI causes 21 of the 24 it decided (40 asked), the release behind a bug 11 of the 12 it decided (15 asked), how releases reach users 9 of the 14 it decided (15 asked), but issue replies only 11 of the 24 it decided (30 asked): it called most replies the labels call drive-bys or project answers helpful answers from other users, so the Community card's reply labels are the least settled. On the replay's disputed items it reached no majority on 11 of 20.
16
+ - A second check: six models from three families (OpenAI gpt-5.4-mini and gpt-5-mini, Google gemini-3.8-flash and gemini-3.5-flash, Anthropic Claude Sonnet and Haiku) each answered the same plain-language questions alone, on 120 labelled items (the CI and reply items drawn first from those the first two labellers disagreed on). Where a majority formed, it matched the labels on CI causes 21 of the 24 it decided (40 asked), the release behind a bug 11 of the 12 it decided (15 asked), how releases reach users 9 of the 14 it decided (15 asked), but issue replies only 11 of the 24 it decided (30 asked): it called most replies the labels call drive-bys or project answers helpful answers from other users, so the Community card's reply labels are the least settled. On the replay's disputed items it reached no majority on 11 of 20.
17
17
  - No person has audited the labels yet.
18
18
 
19
19
  **How sure.** A rule is an *early observation* when its check rests on few cases; its numbers are a direction,
20
- not a settled rate: `flaky.already_failing` (1 of 6 held-out matches with the same error); `flaky.maybe_flaky` (2 held-out matches in 150 failures); `flaky.pr_details` (24 matches in 4 repos, one repo gave most); `dora.incident_link` (15 reports named the release that broke). A rule whose bar *failed* is kept only where failing costs nothing it promised: `flaky.known_flaky` (too few calls to show 5%: the label says "likely", the advice says to check the error first, and the verdict check waits for a green re-run). The rest are validated on
21
- held-out data ([rules.md](rules.md)).
20
+ not a settled rate: `flaky.already_failing` (1 of 6 held-out matches with the same error); `flaky.maybe_flaky` (2 held-out matches in 150 failures); `flaky.pr_details` (24 matches in 4 repos, one repo gave most); `dora.incident_link` (15 reports named the release that broke). A rule's *bar* is the accuracy it had to reach before it shipped; for the flaky-test rules it is that at most 5% of the failures it calls flaky were really caused by the change (*masking*: a real failure hidden as a flake). A rule whose bar *failed* is kept only where failing costs nothing it promised: `flaky.known_flaky` (too few calls to show 5%: the label says "likely", the advice says to check the error first, and the verdict check waits for a green re-run). The rest are validated: checked against their bar, on held-out data where the rule has one ([rules.md](rules.md) says which).
22
21
 
23
22
  **Reproduce a number.** `python bench/accuracy/reproduce.py list` names the command behind every result file;
24
23
  `reproduce.py check <card>` re-scores it and says whether the numbers match. Scoring reads the evidence each
@@ -127,22 +126,22 @@ Weak spot: Questions beyond GitHub's 90-day log retention, where kept history ma
127
126
 
128
127
  Every rule a number rests on, with each revision and why, is in [registry.json](../bench/accuracy/registry.json).
129
128
 
130
- - 2026-10-22, `flaky.event`: was same-code flips in any workflow; all 3 flips that weren't real flakes, and 5 checks of the PR's own text, were pull-request runs of workflows that also run on PR edits or labels; now 9 of 108 events left out (3 wrong, 5 PR-text checks, 1 real timing flake); 99 of 99 kept are real.
131
- - 2026-10-23, `flaky.event`: was pull-request flips left out in PR-edit workflows; held out, all 17 flips in such workflows were real flakes; now reverted to the earlier rule.
132
- - 2026-10-22, `flaky.known_flaky`: was any earlier flake; 15 of 34 failures it called safe were caused by the change (44%); now 7 called safe (5 clearly labelled, 0 caused), all one job; the other 29 now cost a look.
133
- - 2026-10-23, `flaky.known_flaky`: was known flaky passes the verdict check; 13 of 81 held-out safe calls were the change's own failure; matching past flakes' errors didn't separate them; now known flaky still reads 'likely a flake, re-run it', but the verdict check passes only once CI is green.
134
- - 2026-10-23, `flaky.known_flaky`: was known flaky: likely a flake, re-run it; in the agent head-to-head a smaller model trusted it on 2 failures the change caused; now now asks to check the error isn't from the change before re-running; those 2 were then answered right.
135
- - 2026-10-28, `flaky.known_flaky`: was 3+ flakes in the window, one in the failing step (history alone); shown as "Known flaky"; held out, 13 of 81 such calls were the change's own failure; a flake's sign in the failing step's log and no changed file named separated them on the tuning data (0 of 31 caused when both held; 8 of 8 clear caused when a changed file was named); now fresh read: 4 of 44 calls kept, 0 caused (0-49%), so the 5% bar is unproven; shown as "Likely flaky" with its evidence, never "safe"; the rest read flaked before, or maybe yours (4 of 5 clear fresh cases caused).
136
- - 2026-10-22, `flaky.outside_failure`: was failure-section match including 'failed to download and build'; a dependency's own build failing matched; now taken out; 4 matches given up for safety.
137
- - 2026-10-22, `flaky.outside_failure`: was TEST_FAILED matching any 'FAILED:'; ninja's 'FAILED:' build lines hid an sccache outage; now test-runner forms only.
138
- - 2026-10-22, `flaky.already_failing`: was the same step alone; 4 of 22 such failures were caused by the change, with a different error in that step; now 12 matched, none caused.
139
- - 2026-10-23, `flaky.maybe_flaky`: was track record over all 24 signature matches; the product says maybe flaky only for never-flaked failures (a whole-release review); now the track record counts never-flaked matches: 1 of 6 (0 of 4 tuning, 1 of 2 held out).
140
- - 2026-10-23, `flaky.pr_details`: was error lines mentioning a title, label or description anywhere; a test assertion about chart labels matched; now the words must be about the PR.
141
- - 2026-10-23, `flaky.pr_details`: was only jobs whose steps read the PR (triggers.metadata_jobs); label checks gated by `if:` and checks reading the PR in a script were missed (2 matches of 24); now any job of a workflow run by PR edits, with the error guard.
142
- - 2026-10-23, `flaky.pr_details`: was "checkbox", "template" or "PR" alone; any failing step; a whole-release review: a template rendering error in a CI workflow run on labels matched; now those words need the PR's wording beside them, and a failing test rules it out; still 24 of 24 matched.
143
- - 2026-10-21, `dora.deploy_source`: was display name checked against the deny list; a file named deploy.yml titled 'Check and Publish' hit the deny word 'check'; now a file named only deploy, release or publish ships whatever its display name; 22 to 23 of 25.
144
- - 2026-10-22, `dora.fix_chain`: was every revert counted as a failed deployment; 11 of 18 undid a change that never shipped; now never-shipped reverts are no failed deployment.
145
- - 2026-10-23, `community.regular_responders`: was answers and first reviews only; triage acts mark people acting for the project; on the labelled comments the rule missed, they found 8 project answers among 11; now held out: 4 more project answers (47% to 57% weighted); on Claude's labels 45% to 53%, on Gemini's 32% to 38%.
146
- - 2026-10-22, `community.first_response_km`: was closed-unanswered items treated as still waiting; they stopped being at risk when they closed; now censored at closing.
147
- - 2026-10-24, `uncertainty.digest`: was weekly checks only; in a slowdown's second week the weekly check's baseline holds the first slow week, so 10x slowdowns were caught in 15% of scans; now on the same replay, second-week catches of 10x slowdowns 15% to 35%, first-week 31% to 25%, false alarms 7.4% to 7.5%; CUSUM charts tried and dropped (no gain).
148
- - 2026-10-23, `ai.detection`: was AI trailers in the last 5 commits, labels matched exactly, agent account or branch; 5 of 23 missed PRs named the tool in their description; label spellings and Jules task links missed in the tune half; now recall 75.0% to 78.8% weighted (63.9% to 66.3% held out); precision 185 of 187 to 191 of 194.
129
+ - 2026-10-22, `flaky.event`: before, same-code flips in any workflow; all 3 flips that weren't real flakes, and 5 checks of the PR's own text, were pull-request runs of workflows that also run on PR edits or labels; after, 9 of 108 events left out (3 wrong, 5 PR-text checks, 1 real timing flake); 99 of 99 kept are real.
130
+ - 2026-10-23, `flaky.event`: before, pull-request flips left out in PR-edit workflows; held out, all 17 flips in such workflows were real flakes; after, reverted to the earlier rule.
131
+ - 2026-10-22, `flaky.known_flaky`: before, any earlier flake; 15 of 34 failures it called safe were caused by the change (44%); after, 7 called safe (5 clearly labelled, 0 caused), all one job; the other 29 now cost a look.
132
+ - 2026-10-23, `flaky.known_flaky`: before, a known flake passed the verdict check; 13 of 81 held-out safe calls were the change's own failure; matching past flakes' errors didn't separate them; after, known flaky still reads 'likely a flake, re-run it', but the verdict check passes only once CI is green.
133
+ - 2026-10-23, `flaky.known_flaky`: before, a known flake read 'likely a flake, re-run it'; in the agent head-to-head a smaller model trusted it on 2 failures the change caused; after, it asks to check the error isn't from the change before re-running; those 2 were then answered right.
134
+ - 2026-10-28, `flaky.known_flaky`: before, 3+ flakes in the window, one in the failing step (history alone); shown as "Known flaky"; held out, 13 of 81 such calls were the change's own failure; a flake's sign in the failing step's log and no changed file named separated them on the tuning data (0 of 31 caused when both held; 8 of 8 clear caused when a changed file was named); after, fresh read: 4 of 44 calls kept, 0 caused (0-49%), so the 5% bar is unproven; shown as "Likely flaky" with its evidence, never "safe"; the rest read flaked before, or maybe yours (4 of 5 clear fresh cases caused).
135
+ - 2026-10-22, `flaky.outside_failure`: before, failure-section match including 'failed to download and build'; a dependency's own build failing matched; after, taken out; 4 matches given up for safety.
136
+ - 2026-10-22, `flaky.outside_failure`: before, TEST_FAILED matching any 'FAILED:'; ninja's 'FAILED:' build lines hid an sccache outage; after, test-runner forms only.
137
+ - 2026-10-22, `flaky.already_failing`: before, the same step alone; 4 of 22 such failures were caused by the change, with a different error in that step; after, 12 matched, none caused.
138
+ - 2026-10-23, `flaky.maybe_flaky`: before, track record over all 24 signature matches; the product says maybe flaky only for never-flaked failures (a whole-release review); after, the track record counts never-flaked matches: 1 of 6 (0 of 4 tuning, 1 of 2 held out).
139
+ - 2026-10-23, `flaky.pr_details`: before, error lines mentioning a title, label or description anywhere; a test assertion about chart labels matched; after, the words must be about the PR.
140
+ - 2026-10-23, `flaky.pr_details`: before, only jobs whose steps read the PR (triggers.metadata_jobs); label checks gated by `if:` and checks reading the PR in a script were missed (2 matches of 24); after, any job of a workflow run by PR edits, with the error guard.
141
+ - 2026-10-23, `flaky.pr_details`: before, "checkbox", "template" or "PR" alone; any failing step; a whole-release review: a template rendering error in a CI workflow run on labels matched; after, those words need the PR's wording beside them, and a failing test rules it out; still 24 of 24 matched.
142
+ - 2026-10-21, `dora.deploy_source`: before, display name checked against the deny list; a file named deploy.yml titled 'Check and Publish' hit the deny word 'check'; after, a file named only deploy, release or publish ships whatever its display name; 22 to 23 of 25.
143
+ - 2026-10-22, `dora.fix_chain`: before, every revert counted as a failed deployment; 11 of 18 undid a change that never shipped; after, never-shipped reverts are no failed deployment.
144
+ - 2026-10-23, `community.regular_responders`: before, answers and first reviews only; triage acts mark people acting for the project; on the labelled comments the rule missed, they found 8 project answers among 11; after, held out: 4 more project answers (47% to 57% weighted); on Claude's labels 45% to 53%, on Gemini's 32% to 38%.
145
+ - 2026-10-22, `community.first_response_km`: before, closed-unanswered items treated as still waiting; they stopped being at risk when they closed; after, censored at closing.
146
+ - 2026-10-24, `uncertainty.digest`: before, weekly checks only; in a slowdown's second week the weekly check's baseline holds the first slow week, so 10x slowdowns were caught in 15% of scans; after, on the same replay, second-week catches of 10x slowdowns 15% to 35%, first-week 31% to 25%, false alarms 7.4% to 7.5%; CUSUM charts tried and dropped (no gain).
147
+ - 2026-10-23, `ai.detection`: before, AI trailers in the last 5 commits, labels matched exactly, agent account or branch; 5 of 23 missed PRs named the tool in their description; label spellings and Jules task links missed in the tune half; after, recall 75.0% to 78.8% weighted (63.9% to 66.3% held out); precision 185 of 187 to 191 of 194.
@@ -17,12 +17,11 @@ explorer, which fetches DuckDB once) and has no tracking. The bundled libraries
17
17
  | `index.html?pages=https://owner.github.io/name/` | Another repo's Pages site |
18
18
  | `index.html?welcome` | The Welcome screen |
19
19
 
20
- Links from the earlier app still work: `#/home` opens Overview and `#/integrations` opens Connections.
21
20
 
22
21
  ## Layout
23
22
 
24
23
  The sidebar groups the pages: **Health** (Overview, Insights, CI Health, Pull Requests, Delivery, Community,
25
- Dependencies), **Organisation** (Investment, Portal, Explore), **Team** (Activity, Settings) and **Install** (Setup,
24
+ Dependencies), **Organisation** (Investment, Portal, Explore), **Team** (Activity, Data health, Settings) and **Install** (Setup,
26
25
  Connections, Agents, Help, About). A badge shows what waits on a page, for example flaky tests or newcomers waiting. A
27
26
  page for a module that isn't set up is dimmed. On a phone the sidebar becomes a tab bar (Overview, Insights, CI, PRs)
28
27
  with the rest under **More**.
@@ -58,7 +57,7 @@ Once GitHub is connected, setup takes a few clicks; connecting takes one token,
58
57
  **Setup** picks a repo, checks what it has and suggests a plan (modules ticked from what it finds) that you can change.
59
58
  **Set it up** then commits the workflow (a pull request when the branch is protected), starts the first run and shows it
60
59
  live, waits for the data branch and turns on Pages for public repos. Each step is saved, so a reload picks up where it
61
- stopped. Without a token you get the file ready to add on GitHub, the YAML to copy, or the CLI command, and the app
60
+ stopped. Without a token you get the file ready to add on GitHub, the YAML to copy, or the one CLI command (`stackvitals init owner/repo`), and the app
62
61
  checks for the first run at a pace that stays inside GitHub's limit for visitors.
63
62
 
64
63
  ## Pages
@@ -17,8 +17,10 @@ way back: settings and decisions made in the app.
17
17
  ### 1. What starts a run
18
18
 
19
19
  A run starts when any of these happens: a CI run finishes (`workflow_run`), the 3-hour schedule comes round, a deploy or
20
- incident is sent from another tool (`stackvitals record`), someone makes a request in the app (`workflow_dispatch`),
21
- someone comments `/stackvitals` on an issue or pull request, or the workflow or settings file changes (`push`). Each
20
+ incident is sent from another tool (`stackvitals record`, which sends a `repository_dispatch`), someone makes a request
21
+ in the app (an issue it opens, or `workflow_dispatch`), someone comments `/stackvitals` on an issue or pull request
22
+ (`issue_comment`), a pull request changes a lockfile (`pull_request`, for the dependency check), or the workflow or
23
+ settings file changes (`push`). Each
22
24
  start is the same job; what it reads depends on what started it.
23
25
 
24
26
  ### 2. Collect
@@ -33,9 +35,10 @@ Copilot usage, Slack, Teams and Discord ([connectors.md](connectors.md)).
33
35
 
34
36
  ### 3. Analyse
35
37
 
36
- Six modules read the same collected data in one pass: CI Health (flaky tests and the verdict on each failing pull
38
+ The modules read the same collected data in one pass: CI Health (flaky tests and the verdict on each failing pull
37
39
  request), Team Flow (who has to act next), Delivery and DORA (deploys, lead time and failures), Dependencies (vulnerable
38
- and risky packages), Community (newcomers and first answers) and Portal (owners and scorecards). Insights then puts
40
+ and risky packages), Community (newcomers and first answers) and Portal (owners and scorecards; it runs from the org's own portal repo
41
+ with its own workflow, not in each repo's run). Insights then puts
39
42
  every module's findings in one list, ranked by the hours at stake.
40
43
 
41
44
  Every verdict stands on two things: the **rules registry**, where each rule has an accuracy card measured on public repos
@@ -138,7 +141,7 @@ in `deploy/crawler/`. It publishes aggregates only. Your job reads them; it neve
138
141
  | `src/stackvitals/deps` | Dependency Steward |
139
142
  | `src/stackvitals/community` | Community health |
140
143
  | `src/stackvitals/portal` | Portal: catalog, owners, scorecards, campaigns, golden paths, the org view |
141
- | `src/stackvitals/connectors` | Jira, Linear, PagerDuty, incident.io, Copilot, Slack, Discord, Discourse |
144
+ | `src/stackvitals/connectors` | Jira, Linear, PagerDuty, incident.io, SonarQube, Copilot and AI-spend keys, Slack, Discord, Discourse (Teams and the other chat alerts are in `core/chat.py`) |
142
145
  | `src/stackvitals/web` | the app and the site |
143
146
  | `src/stackvitals/mcp_server.py` | the MCP server |
144
147
  | `src/mergescout` | Contribute (MergeScout) |
@@ -117,8 +117,8 @@ goes through a server of ours, and the keys are only used to read unless you tur
117
117
  shows it, an email). With `[identity] aliases` naming those people's GitHub logins, Delivery counts issues done
118
118
  per team, and Slack and Discord count a reply from an aliased team member as the team's, so nobody is listed twice.
119
119
  Without an alias, an assignee whose email name is a GitHub login of this repo (`bo@acme.com` for `bo`) counts as
120
- that login; one whose email or name only reads like a login (`kaushik.yadav@` or "Kaushik Yadav" for
121
- `kaushik-yadav`) is not counted, but the Issues view offers the alias line to paste. A public repo keeps no assignee.
120
+ that login; one whose email or name only reads like a login (`jane.doe@` or "Jane Doe" for
121
+ `jdoe`) is not counted, but the Issues view offers the alias line to paste. A public repo keeps no assignee.
122
122
  - Only connectors whose key is in the workflow count: remove a key, and its issues and incidents stop counting (what
123
123
  was pulled stays on the branch and counts again if the key comes back).
124
124
  - Like the rest of the history, connector day files are kept 400 days (Copilot reports two years) and count toward
@@ -331,7 +331,6 @@ request's pipeline failed it leaves one note (edited on later pipelines, and to
331
331
  which failures are known flakes or also fail on the default branch. If the push to `stackvitals-data` is refused (a
332
332
  protected branch, a push rule, or a token without `write_repository`), the job fails and says so. GitLab has no "after
333
333
  the pipeline" trigger, so the job reads its own pipeline while it runs; there is no verdict check to block a merge. It
334
- is tested against a stand-in GitLab API, not a live project yet. The include works once the `v0` tag is made at launch;
335
- until then use `main` in its URL and set the `STACKVITALS_REF` variable to `main`.
334
+ is tested against a stand-in GitLab API, not a live project yet.
336
335
 
337
336
  The merge request, deployment and incident records above come next, in the same job.
@@ -1,6 +1,7 @@
1
1
  # Coverage and peer groups
2
2
 
3
- When StackVitals compares your repo with "similar public repos", the peers come from the MergeScout crawler, which reads public GitHub repos daily on GitHub Actions. This page says what it reads, what it misses, and how each peer group is formed.
3
+ When StackVitals compares your repo with "similar public repos", the peers come from the project's crawler (built for MergeScout, the Contribute module, and now feeding every
4
+ benchmark), which reads public GitHub repos daily on GitHub Actions. This page says what it reads, what it misses, and how each peer group is formed.
4
5
 
5
6
  ## What the crawl reads
6
7
 
@@ -8,7 +8,8 @@ one can't tell you and how each is gamed, so a team can read them honestly.
8
8
 
9
9
  DORA groups its [five software delivery metrics](https://dora.dev/guides/dora-metrics/) in two: throughput (deployment
10
10
  frequency, change lead time, failed deployment recovery time) and instability (change fail rate, deployment rework
11
- rate). StackVitals counts the first four with Apache DevLake's definitions (an incident blames the last production
11
+ rate). StackVitals counts deployment frequency, change lead time, failed deployment recovery time and change fail rate with
12
+ Apache DevLake's definitions (an incident blames the last production
12
13
  deployment before it), and shows beside the change fail rate a second one where a revert blames the deployment that
13
14
  shipped what it undid; rework rate is the share of deployments that shipped an unplanned fix. The tiers (elite,
14
15
  high, medium, low) come from DevLake's 2023 table, which predates rework rate, so rework rate has no tier.
@@ -48,4 +49,5 @@ the delivery, and the number stops meaning anything (Goodhart's law).
48
49
  ## Further reading
49
50
 
50
51
  - DORA's own guidance on the metrics and their misuse: <https://dora.dev/guides/dora-metrics-four-keys/>
51
- - LinearB's definitions of the six cycle-time phases: <https://linearb.helpdocs.io/article/1s38stsugw-glossary-metrics>
52
+ - LinearB's definitions of the four cycle-time phases (coding, pickup, review, deploy; review is shown split into its
53
+ approve and merge times): <https://linearb.helpdocs.io/article/1s38stsugw-glossary-metrics>
@@ -67,7 +67,7 @@ command line takes the same two variables when you run it against your server.
67
67
 
68
68
  ## Is there a login, with roles for who sees what?
69
69
 
70
- Yes, and it is GitHub's own. The app signs in with GitHub and reads each repo's data branch with your access, so a
70
+ Yes, and it is GitHub's own. The app uses your GitHub token (or GitHub sign-in, where the site has a sign-in relay) and reads each repo's data branch with your access, so a
71
71
  person sees exactly the repos GitHub already lets them read, and an org's roles (members, outside collaborators, teams)
72
72
  apply unchanged; Portal's org view shows only the repos the viewer can open. Nothing is copied to a server of ours to
73
73
  guard, so there is no second user list to keep in step. What you don't get is a separate admin screen for roles: you
@@ -5,7 +5,7 @@ is free on public repos and needs only the built-in token.
5
5
 
6
6
  ## Set it up
7
7
 
8
- [Quickstart](../quickstart.md): one workflow file, then GitHub Pages from the `stackvitals-data` branch. Your
8
+ [Quickstart](../quickstart.md): `stackvitals init owner/repo` adds the workflow file, runs it once and turns on GitHub Pages from the `stackvitals-data` branch. Your
9
9
  dashboard is public like your repo. Your code stays in GitHub; the dependency check sends package names to deps.dev
10
10
  and the registries unless you set `[deps] outside_lookups = false` ([privacy](../privacy.md)).
11
11
 
@@ -8,13 +8,13 @@ You want to know where your team's time goes and whether changes help, without r
8
8
  90 days of CI and a year of pull requests on the first run, so you start with history, not an empty page.
9
9
  2. **Open Insights** in the app: one list of what to fix first across CI, reviews and delivery, ranked by hours at
10
10
  stake ([modules](../modules.md#insights-what-to-fix-first)). Start at the top.
11
- 3. **Read Delivery** for cycle time in LinearB's phases and DORA's five metrics. Before you share a DORA number,
11
+ 3. **Read Delivery** for cycle time in LinearB's phases (coding, pickup, review, deploy) and DORA's five metrics (the industry's standard delivery measures: how often you deploy, how long a change takes to ship, how often a change fails, and how fast you recover). Before you share a DORA number,
12
12
  read [the DORA guide](../dora-guide.md): what each number can't tell, how it gets gamed, and why it is never for
13
13
  individual reviews.
14
14
 
15
15
  ## Every week
16
16
 
17
- - The **weekly digest** (Monday, one comment on a pinned issue; add your chat under `[digest] channels`) says what
17
+ - The **weekly digest** (Monday, one comment on a pinned issue; to post it to chat too, set the `webhook` input, then `channels = ["issue", "webhook"]` under `[digest]`) says what
18
18
  changed. It reports a change only when it stands out from how much your repo's weeks usually swing, so false alarms
19
19
  are rare, but a quiet digest means nothing stood out, not that nothing moved: on small repos even large slowdowns
20
20
  can go unflagged ([modules](../modules.md#decide-on-github-hear-back-every-week)).
@@ -6,11 +6,11 @@ and a security review you can sign off.
6
6
  ## Roll it out
7
7
 
8
8
  1. **Portal first.** Create a private repo (for example `portal`) and save the workflow from
9
- `stackvitals portal init` in it (`stackvitals portal check my-org` first says what your token can read). With the built-in token it reads public repos; for private ones, an org
9
+ `stackvitals portal init` in it (`stackvitals portal check my-org` first says what your token can read (it uses your `gh auth login` or `GITHUB_TOKEN`)). With the built-in token it reads public repos; for private ones, an org
10
10
  owner creates a read-only org App (`stackvitals portal app-link my-org` opens GitHub's form filled in)
11
11
  ([modules](../modules.md#portal)).
12
- 2. **The suite per repo.** Each team adds the workflow ([quickstart](../quickstart.md)); `uvx stackvitals ci init
13
- OWNER/REPO` writes it with that repo's CI workflows named. Private repos set `pages: artifact` (each run that
12
+ 2. **The suite per repo.** Each team runs `stackvitals init OWNER/REPO` ([quickstart](../quickstart.md)), which
13
+ commits the workflow with that repo's CI workflows named and follows the first run. Private repos set `pages: artifact` (each run that
14
14
  changed the app uploads it as a download kept 7 days) or open the app with `stackvitals ui OWNER/REPO`.
15
15
  3. **Settings as code.** `.github/stackvitals.toml` per repo; every setting, its default and the permission it needs
16
16
  are in [settings.md](../settings.md).
@@ -1,6 +1,27 @@
1
1
  # Install
2
2
 
3
- StackVitals is a GitHub Action, `uses: stackvitals/stackvitals@v0`, run by one workflow file in your repo. The file below is exactly what `stackvitals ci init owner/repo` prints (that command also fills in your CI workflows' names) and what the app's Setup page commits for you. Save it as `.github/workflows/stackvitals.yml`; committing it starts the first run. No settings file is needed: a missing `.github/stackvitals.toml` means the defaults ([settings.md](settings.md)).
3
+ StackVitals has two parts: a GitHub Action, `uses: stackvitals/stackvitals@v0`, that runs in your repo, and the `stackvitals` command on your machine, which sets the Action up, opens a private repo's dashboard and runs the MCP server for AI agents. The Action needs nothing installed; the command is one `pip install`.
4
+
5
+ ## Get the command
6
+
7
+ ```sh
8
+ pip install stackvitals # Python 3.11 or newer
9
+ gh auth login # once; or set GITHUB_TOKEN
10
+ ```
11
+
12
+ Or run any command without installing, with [uv](https://docs.astral.sh/uv/): `uvx stackvitals init owner/repo`. Upgrade with `pip install -U stackvitals`. `stackvitals sql` needs the SQL extra: `pip install "stackvitals[sql]"`. The same package holds the CLI, `stackvitals ui` (a dashboard on your machine) and the MCP server (`stackvitals serve`).
13
+
14
+ ## Set up a repo
15
+
16
+ ```sh
17
+ stackvitals init owner/repo
18
+ ```
19
+
20
+ `init` commits the workflow file below (or opens a pull request when the branch is protected or a different `stackvitals.yml` is there), follows the first run and turns on GitHub Pages for a public repo. A private repo keeps Pages off, since a Pages site is public on most plans: open its dashboard with `stackvitals ui owner/repo`. The app's Setup page does the same without a terminal. More: [quickstart.md](quickstart.md).
21
+
22
+ `stackvitals/stackvitals@v0` follows the latest release; to pin an exact one, use its version tag (`stackvitals/stackvitals@vX.Y.Z`, listed under [releases](https://github.com/stackvitals/stackvitals/releases)).
23
+
24
+ The rest of this page is the reference for doing it by hand. The file below is exactly what `stackvitals ci init owner/repo` prints (that command also fills in your CI workflows' names) and what `init` and the app's Setup page commit for you. Save it as `.github/workflows/stackvitals.yml`; committing it starts the first run. No settings file is needed: a missing `.github/stackvitals.toml` means the defaults ([settings.md](settings.md)).
4
25
 
5
26
  ## Modules
6
27
 
@@ -133,8 +133,8 @@ verdict check, `issues: write` for flaky-test issues.
133
133
  a docs index, with GitHub's own sign-in and repository roles. It doesn't replace an internal developer portal with
134
134
  plugins, live service data from clouds or its own access control (Backstage, Port, Cortex, OpsLevel); it exports
135
135
  to Backstage instead.
136
- - Golden paths open a pull request in a repo the requester can already write to; they never create repos or run
137
- arbitrary scripts. Required checks post a check run; a branch rule must still name it.
136
+ - Golden paths open a pull request in a repo the requester can already write to, or create a repo from a template
137
+ when the org App may create repos; they never run arbitrary scripts. Required checks post a check run; a branch rule must still name it.
138
138
  - The built-in token reads public repos only; private repos need an org-owned read-only App. A public portal repo
139
139
  leaves private repos out.
140
140
  - The org view adds up and takes medians of what each repo published; repos that never ran a module are left out of
@@ -153,7 +153,7 @@ verdict check, `issues: write` for flaky-test issues.
153
153
  - **Copilot:** needs an org App with "Organization Copilot metrics: read"; the workflow token can't have it. Each day
154
154
  arrives two days late.
155
155
  - **Untested live:** comment commands' access check and uploads from other CI systems are covered by tests only.
156
- - **GitLab:** CI only (flaky jobs, pages, merge request notes; no verdict check); merge requests, deploys and incidents aren't read yet. The GitLab job is tested against a stand-in API, not a live project.
156
+ - **GitLab:** CI only (flaky jobs, pages, merge request notes; no verdict check); the GitLab job doesn't read merge requests, deploys or incidents yet (the command line reads merge requests and deployments: `stackvitals delivery group/project --gitlab`). The GitLab job is tested against a stand-in API, not a live project.
157
157
 
158
158
  ## The app
159
159
 
@@ -195,5 +195,5 @@ What happens when something goes wrong mid-run. Each line is held by a test in `
195
195
  | A JSON test report stopped early | Read and marked as cut short | `test_a_json_report_that_stopped_early_says_so` |
196
196
  | A pull request's own files try to fool or break the dependency check | Odd file names can't inject workflow commands, a renamed or off-registry package borrows no verdict, an unreadable lockfile is skipped | `test_the_pr_check_cannot_be_fooled_or_broken_by_the_prs_own_files` |
197
197
 
198
- **Not tested yet:** Bors and other merge bots outside GitHub's merge queue, monorepo task runners (Nx, Turborepo,
199
- Bazel) that skip unchanged tests, and GitHub Enterprise Server.
198
+ **Not tested yet:** Bors and other merge bots outside GitHub's merge queue, and monorepo task runners (Nx, Turborepo,
199
+ Bazel) that skip unchanged tests. GitHub Enterprise Server is tested against a stand-in server only, not a live one.
@@ -28,7 +28,7 @@ half, the upper end reads "or more". Under 10 items, the page says "too few".
28
28
 
29
29
  Fewer than 5 items on either side is not a test: it says "too few to tell" and doesn't count against the others.
30
30
 
31
- **Calibration.** Work arrives in batches, so events in a week are not independent. Each number is also tested for each
31
+ **Calibration.** In short: a repo whose numbers usually swing a lot needs a bigger change before it is called a change. Work arrives in batches, so events in a week are not independent. Each number is also tested for each
32
32
  of the repo's past 8 weeks, and the spread of those results (mean squared z, each capped at 16) widens this week's
33
33
  test. The spread is blended with a typical swing worth 4 weeks:
34
34
  - 1.5 for review times, set on half of 20 public repos and checked on the other half;
@@ -81,7 +81,7 @@ Each card's labelled sample is labelled twice, by two different model families,
81
81
  1. **Claude**, which made the first labels.
82
82
  2. **Gemini (Flash-Lite)**, from the same codebook and evidence.
83
83
 
84
- Disagreements are settled by a third reading with both answers and the evidence. Cards publish both labellers'
84
+ Disagreements are settled by a third reading (by Claude) with both answers and the evidence. Cards publish both labellers'
85
85
  agreement (share and Cohen's kappa) and every changed label. No person has audited the labels yet.
86
86
 
87
87
  Only links and labels are published, never log text.