mq-sentinel 0.3.0__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 (238) hide show
  1. mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/bug_report 2.md +37 -0
  2. mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
  3. mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/config 2.yml +8 -0
  4. mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/feature_request 2.md +25 -0
  6. mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/feature_request.md +25 -0
  7. mq_sentinel-0.3.0/.github/PULL_REQUEST_TEMPLATE 2.md +35 -0
  8. mq_sentinel-0.3.0/.github/PULL_REQUEST_TEMPLATE.md +35 -0
  9. mq_sentinel-0.3.0/.github/workflows/ci.yml +80 -0
  10. mq_sentinel-0.3.0/.github/workflows/pages.yml +33 -0
  11. mq_sentinel-0.3.0/.github/workflows/release.yml +95 -0
  12. mq_sentinel-0.3.0/.github/workflows/security.yml +30 -0
  13. mq_sentinel-0.3.0/.github/workflows/verify-kc-links.yml +23 -0
  14. mq_sentinel-0.3.0/.gitignore +30 -0
  15. mq_sentinel-0.3.0/.grok/config 2.toml +9 -0
  16. mq_sentinel-0.3.0/.grok/config.toml +9 -0
  17. mq_sentinel-0.3.0/CHANGELOG.md +54 -0
  18. mq_sentinel-0.3.0/CONTRIBUTING 2.md +115 -0
  19. mq_sentinel-0.3.0/CONTRIBUTING.md +115 -0
  20. mq_sentinel-0.3.0/DEVELOPMENT 2.md +140 -0
  21. mq_sentinel-0.3.0/DEVELOPMENT.md +140 -0
  22. mq_sentinel-0.3.0/IBM_MQ_Diagnostic_MCP_v1_Full_Flavors_Spec.docx +0 -0
  23. mq_sentinel-0.3.0/LICENSE +25 -0
  24. mq_sentinel-0.3.0/Makefile +131 -0
  25. mq_sentinel-0.3.0/PKG-INFO +360 -0
  26. mq_sentinel-0.3.0/README.md +319 -0
  27. mq_sentinel-0.3.0/SECURITY.md +40 -0
  28. mq_sentinel-0.3.0/VISION 2.md +94 -0
  29. mq_sentinel-0.3.0/VISION.md +94 -0
  30. mq_sentinel-0.3.0/demo/HOW-TO-RECORD.md +124 -0
  31. mq_sentinel-0.3.0/demo/README.md +189 -0
  32. mq_sentinel-0.3.0/demo/cached-output/diagnose_failed_channels.json +59 -0
  33. mq_sentinel-0.3.0/demo/record.sh +49 -0
  34. mq_sentinel-0.3.0/demo/run.sh +301 -0
  35. mq_sentinel-0.3.0/demo-sandbox/README.md +30 -0
  36. mq_sentinel-0.3.0/demo-sandbox/fixtures/.gitkeep +0 -0
  37. mq_sentinel-0.3.0/demo-sandbox/fixtures/dlq/SYSTEM.DEAD.LETTER.QUEUE.json +96 -0
  38. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CFSTATUS_ALL__ALL.json +8 -0
  39. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CHSTATUS_ALL__ALL.json +35 -0
  40. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CLUSQMGR_ALL__ALL.json +54 -0
  41. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CLUSQMGR_ALL__CLUSTER.json +8 -0
  42. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_GROUP.json +9 -0
  43. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_NATIVEHASTATUS.json +30 -0
  44. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_DEADQ.json +5 -0
  45. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_PLATFORM.json +5 -0
  46. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_QMNAME.json +5 -0
  47. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_REPOS_REPOSNL.json +5 -0
  48. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_VERSION.json +5 -0
  49. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMSTATUS.json +5 -0
  50. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMSTATUS_CHINIT.json +5 -0
  51. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMSTATUS_RECOVERYGROUP.json +5 -0
  52. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_USAGE_BUFFPOOL_ALL_.json +8 -0
  53. mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_USAGE_PSID_ALL_.json +9 -0
  54. mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/crm_mon_-1.txt +17 -0
  55. mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/drbdadm_status.txt +8 -0
  56. mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/dspmq_-o_standby.txt +1 -0
  57. mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/dspmq_-x.txt +2 -0
  58. mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/rdqmstatus.txt +13 -0
  59. mq_sentinel-0.3.0/deploy/Dockerfile +24 -0
  60. mq_sentinel-0.3.0/deploy/helm/Chart.yaml +19 -0
  61. mq_sentinel-0.3.0/deploy/helm/templates/_helpers 2.tpl +60 -0
  62. mq_sentinel-0.3.0/deploy/helm/templates/_helpers.tpl +60 -0
  63. mq_sentinel-0.3.0/deploy/helm/templates/deployment.yaml +84 -0
  64. mq_sentinel-0.3.0/deploy/helm/templates/hpa 2.yaml +32 -0
  65. mq_sentinel-0.3.0/deploy/helm/templates/hpa.yaml +32 -0
  66. mq_sentinel-0.3.0/deploy/helm/templates/ingress 2.yaml +41 -0
  67. mq_sentinel-0.3.0/deploy/helm/templates/ingress.yaml +41 -0
  68. mq_sentinel-0.3.0/deploy/helm/templates/serviceaccount 2.yaml +12 -0
  69. mq_sentinel-0.3.0/deploy/helm/templates/serviceaccount.yaml +12 -0
  70. mq_sentinel-0.3.0/deploy/helm/templates/servicemonitor 2.yaml +23 -0
  71. mq_sentinel-0.3.0/deploy/helm/templates/servicemonitor.yaml +23 -0
  72. mq_sentinel-0.3.0/deploy/helm/values-production 2.yaml +61 -0
  73. mq_sentinel-0.3.0/deploy/helm/values-production.yaml +61 -0
  74. mq_sentinel-0.3.0/deploy/helm/values.yaml +161 -0
  75. mq_sentinel-0.3.0/deploy/hosted-demo/README.md +83 -0
  76. mq_sentinel-0.3.0/deploy/hosted-demo/cloudflared.yml.example +14 -0
  77. mq_sentinel-0.3.0/deploy/hosted-demo/docker-compose.yml +39 -0
  78. mq_sentinel-0.3.0/docs/INSTALL.md +319 -0
  79. mq_sentinel-0.3.0/docs/LAUNCH.md +67 -0
  80. mq_sentinel-0.3.0/docs/ORG-READINESS 2.md +128 -0
  81. mq_sentinel-0.3.0/docs/ORG-READINESS-PLAN 2.md +174 -0
  82. mq_sentinel-0.3.0/docs/ORG-READINESS-PLAN.md +174 -0
  83. mq_sentinel-0.3.0/docs/ORG-READINESS.md +128 -0
  84. mq_sentinel-0.3.0/docs/POST-ORG-READINESS-OPTIONS 2.md +124 -0
  85. mq_sentinel-0.3.0/docs/POST-ORG-READINESS-OPTIONS.md +124 -0
  86. mq_sentinel-0.3.0/docs/PRODUCTION 2.md +180 -0
  87. mq_sentinel-0.3.0/docs/PRODUCTION.md +180 -0
  88. mq_sentinel-0.3.0/docs/SECURITY_POSTURE 2.md +67 -0
  89. mq_sentinel-0.3.0/docs/SECURITY_POSTURE.md +67 -0
  90. mq_sentinel-0.3.0/docs/architecture.md +50 -0
  91. mq_sentinel-0.3.0/docs/byom.md +211 -0
  92. mq_sentinel-0.3.0/docs/compliance/soc2-evidence-checklist 2.md +73 -0
  93. mq_sentinel-0.3.0/docs/compliance/soc2-evidence-checklist.md +73 -0
  94. mq_sentinel-0.3.0/docs/demo-script.md +173 -0
  95. mq_sentinel-0.3.0/docs/getting-started-platform-teams 2.md +106 -0
  96. mq_sentinel-0.3.0/docs/getting-started-platform-teams.md +106 -0
  97. mq_sentinel-0.3.0/docs/http-transport.md +106 -0
  98. mq_sentinel-0.3.0/docs/mcp-clients 2.md +184 -0
  99. mq_sentinel-0.3.0/docs/mcp-clients.md +184 -0
  100. mq_sentinel-0.3.0/docs/metrics 2.md +33 -0
  101. mq_sentinel-0.3.0/docs/metrics.md +33 -0
  102. mq_sentinel-0.3.0/docs/oidc-examples 2.md +147 -0
  103. mq_sentinel-0.3.0/docs/oidc-examples.md +147 -0
  104. mq_sentinel-0.3.0/docs/onboard-new-qm 2.md +94 -0
  105. mq_sentinel-0.3.0/docs/onboard-new-qm.md +94 -0
  106. mq_sentinel-0.3.0/docs/rbac-best-practices 2.md +66 -0
  107. mq_sentinel-0.3.0/docs/rbac-best-practices.md +66 -0
  108. mq_sentinel-0.3.0/docs/threat-model.md +53 -0
  109. mq_sentinel-0.3.0/docs/usage-with-ai 2.md +98 -0
  110. mq_sentinel-0.3.0/docs/usage-with-ai.md +98 -0
  111. mq_sentinel-0.3.0/examples/kind/README.md +55 -0
  112. mq_sentinel-0.3.0/examples/kind/install.sh +139 -0
  113. mq_sentinel-0.3.0/examples/kind/kind-config.yaml +18 -0
  114. mq_sentinel-0.3.0/examples/kind/values.yaml +30 -0
  115. mq_sentinel-0.3.0/examples/org/inventory-example 2.yaml +38 -0
  116. mq_sentinel-0.3.0/examples/org/inventory-example.yaml +38 -0
  117. mq_sentinel-0.3.0/marketing/community-ibm-post.md +213 -0
  118. mq_sentinel-0.3.0/marketing/day2-linkedin-post.md +168 -0
  119. mq_sentinel-0.3.0/marketing/launch-posts.md +325 -0
  120. mq_sentinel-0.3.0/marketing/portfolio-linkedin-post 2.md +50 -0
  121. mq_sentinel-0.3.0/marketing/portfolio-linkedin-post.md +50 -0
  122. mq_sentinel-0.3.0/marketing/portfolio-summary 2.md +23 -0
  123. mq_sentinel-0.3.0/marketing/portfolio-summary.md +23 -0
  124. mq_sentinel-0.3.0/marketing/portfolio-x-thread 2.md +58 -0
  125. mq_sentinel-0.3.0/marketing/portfolio-x-thread.md +58 -0
  126. mq_sentinel-0.3.0/marketing/screencast-script.md +126 -0
  127. mq_sentinel-0.3.0/marketing/social-demo-recording-guide 2.md +162 -0
  128. mq_sentinel-0.3.0/marketing/social-demo-recording-guide.md +162 -0
  129. mq_sentinel-0.3.0/marketing/social-demo-transcript 2.md +115 -0
  130. mq_sentinel-0.3.0/marketing/social-demo-transcript.md +115 -0
  131. mq_sentinel-0.3.0/marketing/social-recording-flow 2.sh +214 -0
  132. mq_sentinel-0.3.0/marketing/social-recording-flow.sh +214 -0
  133. mq_sentinel-0.3.0/observability/grafana-dashboard 2.json +90 -0
  134. mq_sentinel-0.3.0/observability/grafana-dashboard.json +90 -0
  135. mq_sentinel-0.3.0/observability/prometheus-alerts 2.yaml +38 -0
  136. mq_sentinel-0.3.0/observability/prometheus-alerts.yaml +38 -0
  137. mq_sentinel-0.3.0/packaging/deb/postinst +44 -0
  138. mq_sentinel-0.3.0/packaging/deb/prerm +12 -0
  139. mq_sentinel-0.3.0/packaging/homebrew/README.md +90 -0
  140. mq_sentinel-0.3.0/packaging/homebrew/mq-sentinel.rb +61 -0
  141. mq_sentinel-0.3.0/packaging/mcp/mcp-manifest.json +67 -0
  142. mq_sentinel-0.3.0/packaging/mcp/registry-entry.md +91 -0
  143. mq_sentinel-0.3.0/packaging/rpm/mq-sentinel.spec +141 -0
  144. mq_sentinel-0.3.0/packaging/systemd/mq-sentinel.env +26 -0
  145. mq_sentinel-0.3.0/packaging/systemd/mq-sentinel.service +41 -0
  146. mq_sentinel-0.3.0/pyproject.toml +107 -0
  147. mq_sentinel-0.3.0/scripts/install.sh +140 -0
  148. mq_sentinel-0.3.0/scripts/uninstall.sh +35 -0
  149. mq_sentinel-0.3.0/scripts/verify_kc_links.py +112 -0
  150. mq_sentinel-0.3.0/server 2.json +45 -0
  151. mq_sentinel-0.3.0/server.json +45 -0
  152. mq_sentinel-0.3.0/smithery.yaml +101 -0
  153. mq_sentinel-0.3.0/src/mq_sentinel/__init__.py +4 -0
  154. mq_sentinel-0.3.0/src/mq_sentinel/audit/__init__.py +5 -0
  155. mq_sentinel-0.3.0/src/mq_sentinel/audit/logger.py +102 -0
  156. mq_sentinel-0.3.0/src/mq_sentinel/auth/__init__.py +21 -0
  157. mq_sentinel-0.3.0/src/mq_sentinel/auth/oidc.py +181 -0
  158. mq_sentinel-0.3.0/src/mq_sentinel/auth/rbac.py +46 -0
  159. mq_sentinel-0.3.0/src/mq_sentinel/cli/__init__.py +0 -0
  160. mq_sentinel-0.3.0/src/mq_sentinel/cli/main.py +227 -0
  161. mq_sentinel-0.3.0/src/mq_sentinel/config.py +84 -0
  162. mq_sentinel-0.3.0/src/mq_sentinel/connectors/__init__.py +13 -0
  163. mq_sentinel-0.3.0/src/mq_sentinel/connectors/base.py +68 -0
  164. mq_sentinel-0.3.0/src/mq_sentinel/connectors/fixture.py +119 -0
  165. mq_sentinel-0.3.0/src/mq_sentinel/connectors/pymqi_connector.py +261 -0
  166. mq_sentinel-0.3.0/src/mq_sentinel/http_app.py +234 -0
  167. mq_sentinel-0.3.0/src/mq_sentinel/inventory/__init__.py +6 -0
  168. mq_sentinel-0.3.0/src/mq_sentinel/inventory/models.py +45 -0
  169. mq_sentinel-0.3.0/src/mq_sentinel/inventory/registry.py +52 -0
  170. mq_sentinel-0.3.0/src/mq_sentinel/rcs/__init__.py +13 -0
  171. mq_sentinel-0.3.0/src/mq_sentinel/rcs/engine.py +112 -0
  172. mq_sentinel-0.3.0/src/mq_sentinel/rcs/kc_registry.py +406 -0
  173. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/__init__.py +20 -0
  174. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/channels.py +285 -0
  175. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/cluster.py +343 -0
  176. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/dlq.py +355 -0
  177. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/miqm.py +259 -0
  178. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/native_ha.py +402 -0
  179. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/rdqm.py +434 -0
  180. mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/zos.py +301 -0
  181. mq_sentinel-0.3.0/src/mq_sentinel/security/__init__.py +22 -0
  182. mq_sentinel-0.3.0/src/mq_sentinel/security/allowlist.py +112 -0
  183. mq_sentinel-0.3.0/src/mq_sentinel/security/ratelimit.py +39 -0
  184. mq_sentinel-0.3.0/src/mq_sentinel/security/sanitizer.py +111 -0
  185. mq_sentinel-0.3.0/src/mq_sentinel/server.py +518 -0
  186. mq_sentinel-0.3.0/src/mq_sentinel/telemetry/__init__.py +5 -0
  187. mq_sentinel-0.3.0/src/mq_sentinel/telemetry/setup.py +65 -0
  188. mq_sentinel-0.3.0/src/mq_sentinel/tools/__init__.py +48 -0
  189. mq_sentinel-0.3.0/src/mq_sentinel/tools/base.py +70 -0
  190. mq_sentinel-0.3.0/src/mq_sentinel/tools/channels.py +102 -0
  191. mq_sentinel-0.3.0/src/mq_sentinel/tools/cluster.py +101 -0
  192. mq_sentinel-0.3.0/src/mq_sentinel/tools/dlq.py +98 -0
  193. mq_sentinel-0.3.0/src/mq_sentinel/tools/health_check.py +236 -0
  194. mq_sentinel-0.3.0/src/mq_sentinel/tools/miqm.py +139 -0
  195. mq_sentinel-0.3.0/src/mq_sentinel/tools/native_ha.py +116 -0
  196. mq_sentinel-0.3.0/src/mq_sentinel/tools/rdqm.py +263 -0
  197. mq_sentinel-0.3.0/src/mq_sentinel/tools/zos.py +103 -0
  198. mq_sentinel-0.3.0/src/mq_sentinel/topology/__init__.py +5 -0
  199. mq_sentinel-0.3.0/src/mq_sentinel/topology/detect.py +139 -0
  200. mq_sentinel-0.3.0/tests/__init__.py +0 -0
  201. mq_sentinel-0.3.0/tests/fixtures/.gitkeep +0 -0
  202. mq_sentinel-0.3.0/tests/integration/__init__.py +0 -0
  203. mq_sentinel-0.3.0/tests/integration/test_analyze_dlq_e2e.py +87 -0
  204. mq_sentinel-0.3.0/tests/integration/test_check_cluster_health_e2e.py +82 -0
  205. mq_sentinel-0.3.0/tests/integration/test_diagnose_channels_e2e.py +78 -0
  206. mq_sentinel-0.3.0/tests/integration/test_diagnose_miqm_e2e.py +59 -0
  207. mq_sentinel-0.3.0/tests/integration/test_diagnose_native_ha_e2e.py +82 -0
  208. mq_sentinel-0.3.0/tests/integration/test_diagnose_rdqm_e2e.py +90 -0
  209. mq_sentinel-0.3.0/tests/integration/test_diagnose_zos_e2e.py +61 -0
  210. mq_sentinel-0.3.0/tests/integration/test_full_health_check_e2e.py +118 -0
  211. mq_sentinel-0.3.0/tests/integration/test_http_transport.py +232 -0
  212. mq_sentinel-0.3.0/tests/security/__init__.py +0 -0
  213. mq_sentinel-0.3.0/tests/security/test_allowlist.py +85 -0
  214. mq_sentinel-0.3.0/tests/security/test_dlq_safety.py +40 -0
  215. mq_sentinel-0.3.0/tests/security/test_remediation_isolation.py +155 -0
  216. mq_sentinel-0.3.0/tests/security/test_sanitizer.py +78 -0
  217. mq_sentinel-0.3.0/tests/unit/__init__.py +0 -0
  218. mq_sentinel-0.3.0/tests/unit/test_audit.py +51 -0
  219. mq_sentinel-0.3.0/tests/unit/test_channel_matchers.py +50 -0
  220. mq_sentinel-0.3.0/tests/unit/test_cluster_matchers.py +125 -0
  221. mq_sentinel-0.3.0/tests/unit/test_dlq_matchers.py +88 -0
  222. mq_sentinel-0.3.0/tests/unit/test_health_check_summary.py +73 -0
  223. mq_sentinel-0.3.0/tests/unit/test_inventory.py +45 -0
  224. mq_sentinel-0.3.0/tests/unit/test_kc_registry.py +21 -0
  225. mq_sentinel-0.3.0/tests/unit/test_kc_registry_structure.py +78 -0
  226. mq_sentinel-0.3.0/tests/unit/test_miqm_matchers.py +95 -0
  227. mq_sentinel-0.3.0/tests/unit/test_native_ha_matchers.py +137 -0
  228. mq_sentinel-0.3.0/tests/unit/test_oidc_verifier.py +160 -0
  229. mq_sentinel-0.3.0/tests/unit/test_ratelimit.py +18 -0
  230. mq_sentinel-0.3.0/tests/unit/test_rbac.py +25 -0
  231. mq_sentinel-0.3.0/tests/unit/test_rdqm_matchers.py +161 -0
  232. mq_sentinel-0.3.0/tests/unit/test_server.py +32 -0
  233. mq_sentinel-0.3.0/tests/unit/test_server_dispatch_v2.py +79 -0
  234. mq_sentinel-0.3.0/tests/unit/test_topology.py +76 -0
  235. mq_sentinel-0.3.0/tests/unit/test_zos_matchers.py +94 -0
  236. mq_sentinel-0.3.0/uv.lock +1988 -0
  237. mq_sentinel-0.3.0/web/index.html +329 -0
  238. mq_sentinel-0.3.0/web/logo.svg +11 -0
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a problem with MQ-Sentinel
4
+ title: "[bug] "
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Describe the bug
10
+
11
+ A clear description of what is wrong.
12
+
13
+ ## To Reproduce
14
+
15
+ Steps to reproduce the behavior:
16
+
17
+ 1. Run `...`
18
+ 2. Call tool `...`
19
+ 3. See error
20
+
21
+ ## Expected behavior
22
+
23
+ What you expected to happen.
24
+
25
+ ## Environment
26
+
27
+ - MQ-Sentinel version: (run `mq-sentinel version`)
28
+ - Python version:
29
+ - Deployment: (stdio / http / Helm / package / docker)
30
+ - Environment: dev / staging / prod
31
+ - Real QM or demo fixtures?
32
+
33
+ ## Additional context / logs
34
+
35
+ Add any logs, sanitized output, or screenshots.
36
+
37
+ **Important**: Never paste real queue manager names, channel names, or sensitive data without sanitizing.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a problem with MQ-Sentinel
4
+ title: "[bug] "
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Describe the bug
10
+
11
+ A clear description of what is wrong.
12
+
13
+ ## To Reproduce
14
+
15
+ Steps to reproduce the behavior:
16
+
17
+ 1. Run `...`
18
+ 2. Call tool `...`
19
+ 3. See error
20
+
21
+ ## Expected behavior
22
+
23
+ What you expected to happen.
24
+
25
+ ## Environment
26
+
27
+ - MQ-Sentinel version: (run `mq-sentinel version`)
28
+ - Python version:
29
+ - Deployment: (stdio / http / Helm / package / docker)
30
+ - Environment: dev / staging / prod
31
+ - Real QM or demo fixtures?
32
+
33
+ ## Additional context / logs
34
+
35
+ Add any logs, sanitized output, or screenshots.
36
+
37
+ **Important**: Never paste real queue manager names, channel names, or sensitive data without sanitizing.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/pramodreddyboddu/mq-sentinel/security/advisories/new
5
+ about: Please report security issues privately.
6
+ - name: Discussions
7
+ url: https://github.com/pramodreddyboddu/mq-sentinel/discussions
8
+ about: General questions, ideas, and usage help.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/pramodreddyboddu/mq-sentinel/security/advisories/new
5
+ about: Please report security issues privately.
6
+ - name: Discussions
7
+ url: https://github.com/pramodreddyboddu/mq-sentinel/discussions
8
+ about: General questions, ideas, and usage help.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: Feature / Diagnostic request
3
+ about: Suggest a new tool, matcher, or improvement
4
+ title: "[feature] "
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Is your feature request related to a problem?
10
+
11
+ A clear description of the problem you're facing (e.g. hard-to-diagnose Native HA split-brain in production).
12
+
13
+ ## Describe the solution you'd like
14
+
15
+ What new behavior or tool would help?
16
+
17
+ ## Additional context
18
+
19
+ - Which MQ topology?
20
+ - Example MQSC output or error (sanitized)?
21
+ - Would this be useful for others in banks/telcos/etc.?
22
+
23
+ ## Owner note
24
+
25
+ New diagnostics must stay strictly read-only and come with verified IBM Knowledge Center citations where possible.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: Feature / Diagnostic request
3
+ about: Suggest a new tool, matcher, or improvement
4
+ title: "[feature] "
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ ## Is your feature request related to a problem?
10
+
11
+ A clear description of the problem you're facing (e.g. hard-to-diagnose Native HA split-brain in production).
12
+
13
+ ## Describe the solution you'd like
14
+
15
+ What new behavior or tool would help?
16
+
17
+ ## Additional context
18
+
19
+ - Which MQ topology?
20
+ - Example MQSC output or error (sanitized)?
21
+ - Would this be useful for others in banks/telcos/etc.?
22
+
23
+ ## Owner note
24
+
25
+ New diagnostics must stay strictly read-only and come with verified IBM Knowledge Center citations where possible.
@@ -0,0 +1,35 @@
1
+ ## Description
2
+
3
+ <!-- What does this PR do? Why is it needed? Link any related issues. -->
4
+
5
+ ## Type of change
6
+
7
+ - [ ] Bug fix (non-breaking change that fixes an issue)
8
+ - [ ] New feature / diagnostic (non-breaking)
9
+ - [ ] Documentation only
10
+ - [ ] Refactor / internal cleanup
11
+ - [ ] Security-related (please call out explicitly)
12
+
13
+ ## How was this tested?
14
+
15
+ - [ ] `make ci` passes locally
16
+ - [ ] Added/updated unit tests
17
+ - [ ] Added/updated integration tests (fixtures)
18
+ - [ ] Security tests still green (`make security`)
19
+ - [ ] Manually tested with `make demo` and/or real QM
20
+ - [ ] Updated docs / README / VISION if user-facing
21
+
22
+ ## Checklist
23
+
24
+ - [ ] My changes respect the read-only contract and sanitizer
25
+ - [ ] No new external URLs without updating KC verification
26
+ - [ ] I considered the threat model / RBAC impact
27
+ - [ ] CHANGELOG.md updated (if applicable)
28
+
29
+ ## Screenshots / Output (if relevant)
30
+
31
+ <!-- Paste example output from the tool or demo -->
32
+
33
+ ---
34
+
35
+ **Note from owner**: High standards here. If you're unsure about security implications, open an issue first.
@@ -0,0 +1,35 @@
1
+ ## Description
2
+
3
+ <!-- What does this PR do? Why is it needed? Link any related issues. -->
4
+
5
+ ## Type of change
6
+
7
+ - [ ] Bug fix (non-breaking change that fixes an issue)
8
+ - [ ] New feature / diagnostic (non-breaking)
9
+ - [ ] Documentation only
10
+ - [ ] Refactor / internal cleanup
11
+ - [ ] Security-related (please call out explicitly)
12
+
13
+ ## How was this tested?
14
+
15
+ - [ ] `make ci` passes locally
16
+ - [ ] Added/updated unit tests
17
+ - [ ] Added/updated integration tests (fixtures)
18
+ - [ ] Security tests still green (`make security`)
19
+ - [ ] Manually tested with `make demo` and/or real QM
20
+ - [ ] Updated docs / README / VISION if user-facing
21
+
22
+ ## Checklist
23
+
24
+ - [ ] My changes respect the read-only contract and sanitizer
25
+ - [ ] No new external URLs without updating KC verification
26
+ - [ ] I considered the threat model / RBAC impact
27
+ - [ ] CHANGELOG.md updated (if applicable)
28
+
29
+ ## Screenshots / Output (if relevant)
30
+
31
+ <!-- Paste example output from the tool or demo -->
32
+
33
+ ---
34
+
35
+ **Note from owner**: High standards here. If you're unsure about security implications, open an issue first.
@@ -0,0 +1,80 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ permissions:
10
+ contents: read
11
+ security-events: write
12
+ id-token: write
13
+
14
+ jobs:
15
+ lint-type-test:
16
+ runs-on: ubuntu-latest
17
+ strategy:
18
+ matrix:
19
+ python-version: ["3.12"]
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+ - name: Install uv
23
+ uses: astral-sh/setup-uv@v3
24
+ - name: Set up Python
25
+ run: uv python install ${{ matrix.python-version }}
26
+ - name: Install
27
+ run: uv sync --all-extras --dev
28
+ - name: Ruff (lint)
29
+ run: uv run ruff check .
30
+ - name: Ruff (format check)
31
+ run: uv run ruff format --check .
32
+ - name: Mypy
33
+ run: uv run mypy
34
+ - name: Pytest
35
+ run: uv run pytest -q
36
+ - name: Security tests (must be green)
37
+ run: uv run pytest -q -m security
38
+
39
+ sbom-and-audit:
40
+ runs-on: ubuntu-latest
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+ - uses: astral-sh/setup-uv@v3
44
+ - run: uv sync --all-extras --dev
45
+ - name: pip-audit (deps CVE scan)
46
+ run: uv run pip-audit --strict
47
+ - name: CycloneDX SBOM
48
+ run: uv run cyclonedx-py requirements --of json --output sbom.json
49
+ - uses: actions/upload-artifact@v4
50
+ with:
51
+ name: sbom
52
+ path: sbom.json
53
+
54
+ image-build-scan-sign:
55
+ runs-on: ubuntu-latest
56
+ needs: [lint-type-test, sbom-and-audit]
57
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
58
+ steps:
59
+ - uses: actions/checkout@v4
60
+ - uses: docker/setup-buildx-action@v3
61
+ - uses: docker/login-action@v3
62
+ with:
63
+ registry: ghcr.io
64
+ username: ${{ github.actor }}
65
+ password: ${{ secrets.GITHUB_TOKEN }}
66
+ - name: Build image
67
+ run: docker build -f deploy/Dockerfile -t ghcr.io/${{ github.repository }}:${{ github.sha }} .
68
+ - name: Trivy scan
69
+ uses: aquasecurity/trivy-action@master
70
+ with:
71
+ image-ref: ghcr.io/${{ github.repository }}:${{ github.sha }}
72
+ severity: HIGH,CRITICAL
73
+ exit-code: "1"
74
+ ignore-unfixed: true
75
+ - name: Install cosign
76
+ uses: sigstore/cosign-installer@v3
77
+ - name: Push + sign
78
+ run: |
79
+ docker push ghcr.io/${{ github.repository }}:${{ github.sha }}
80
+ cosign sign --yes ghcr.io/${{ github.repository }}:${{ github.sha }}
@@ -0,0 +1,33 @@
1
+ name: deploy-landing-page
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ paths:
7
+ - "web/**"
8
+ - ".github/workflows/pages.yml"
9
+ workflow_dispatch:
10
+
11
+ permissions:
12
+ contents: read
13
+ pages: write
14
+ id-token: write
15
+
16
+ concurrency:
17
+ group: pages
18
+ cancel-in-progress: true
19
+
20
+ jobs:
21
+ deploy:
22
+ environment:
23
+ name: github-pages
24
+ url: ${{ steps.deployment.outputs.page_url }}
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - uses: actions/configure-pages@v5
29
+ - uses: actions/upload-pages-artifact@v3
30
+ with:
31
+ path: ./web
32
+ - id: deployment
33
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,95 @@
1
+ name: release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: write # to create releases
11
+ packages: write # to push to ghcr
12
+ id-token: write # cosign keyless
13
+
14
+ jobs:
15
+ build-image:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: docker/setup-buildx-action@v3
20
+ - uses: docker/login-action@v3
21
+ with:
22
+ registry: ghcr.io
23
+ username: ${{ github.actor }}
24
+ password: ${{ secrets.GITHUB_TOKEN }}
25
+ - name: Compute tag
26
+ id: tag
27
+ run: echo "tag=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
28
+ - name: Build + push image
29
+ uses: docker/build-push-action@v6
30
+ with:
31
+ context: .
32
+ file: deploy/Dockerfile
33
+ push: true
34
+ tags: |
35
+ ghcr.io/${{ github.repository }}:${{ steps.tag.outputs.tag }}
36
+ ghcr.io/${{ github.repository }}:latest
37
+ - name: Trivy scan (HIGH+CRITICAL fail)
38
+ uses: aquasecurity/trivy-action@master
39
+ with:
40
+ image-ref: ghcr.io/${{ github.repository }}:${{ steps.tag.outputs.tag }}
41
+ severity: HIGH,CRITICAL
42
+ exit-code: "1"
43
+ ignore-unfixed: true
44
+ - name: Install cosign
45
+ uses: sigstore/cosign-installer@v3
46
+ - name: Sign image
47
+ run: cosign sign --yes ghcr.io/${{ github.repository }}:${{ steps.tag.outputs.tag }}
48
+
49
+ build-pkgs:
50
+ runs-on: ubuntu-latest
51
+ container: rockylinux:9
52
+ steps:
53
+ - name: Install builders
54
+ run: |
55
+ dnf install -y --setopt=install_weak_deps=False \
56
+ python3.12 python3.12-devel python3.12-pip \
57
+ ruby ruby-devel rpm-build dpkg gcc make tar git ca-certificates curl
58
+ gem install --no-document fpm
59
+ - uses: actions/checkout@v4
60
+ - name: Install uv
61
+ run: curl -LsSf https://astral.sh/uv/install.sh | sh
62
+ - name: Build RPM + DEB
63
+ run: |
64
+ export PATH="$HOME/.local/bin:$PATH"
65
+ make pkg
66
+ - name: Generate CycloneDX SBOM
67
+ run: |
68
+ export PATH="$HOME/.local/bin:$PATH"
69
+ uv run cyclonedx-py requirements --of json --output dist/sbom.json || true
70
+ - uses: actions/upload-artifact@v4
71
+ with:
72
+ name: packages
73
+ path: |
74
+ dist/pkg/*.rpm
75
+ dist/pkg/*.deb
76
+ dist/sbom.json
77
+
78
+ publish-release:
79
+ needs: [build-image, build-pkgs]
80
+ runs-on: ubuntu-latest
81
+ if: startsWith(github.ref, 'refs/tags/v')
82
+ steps:
83
+ - uses: actions/checkout@v4
84
+ - uses: actions/download-artifact@v4
85
+ with:
86
+ name: packages
87
+ path: dist/
88
+ - name: Create GitHub Release
89
+ uses: softprops/action-gh-release@v2
90
+ with:
91
+ generate_release_notes: true
92
+ files: |
93
+ dist/pkg/*.rpm
94
+ dist/pkg/*.deb
95
+ dist/sbom.json
@@ -0,0 +1,30 @@
1
+ name: security-scheduled
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 6 * * *"
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ contents: read
10
+ security-events: write
11
+
12
+ jobs:
13
+ deps-cve:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - uses: astral-sh/setup-uv@v3
18
+ - run: uv sync --all-extras --dev
19
+ - run: uv run pip-audit --strict
20
+
21
+ trivy-fs:
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ - uses: aquasecurity/trivy-action@master
26
+ with:
27
+ scan-type: fs
28
+ severity: HIGH,CRITICAL
29
+ exit-code: "1"
30
+ ignore-unfixed: true
@@ -0,0 +1,23 @@
1
+ name: verify-kc-links
2
+
3
+ # Every IBM Knowledge Center URL we cite must resolve. IBM reorganizes docs
4
+ # periodically; this catches a dead link within a day instead of via an angry
5
+ # customer. Network-dependent, so it's a scheduled job — NOT a PR gate.
6
+
7
+ on:
8
+ schedule:
9
+ - cron: "0 7 * * *" # daily 07:00 UTC
10
+ workflow_dispatch:
11
+
12
+ permissions:
13
+ contents: read
14
+
15
+ jobs:
16
+ verify-links:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: astral-sh/setup-uv@v3
21
+ - run: uv sync --extra dev
22
+ - name: Verify every KC URL resolves
23
+ run: uv run python scripts/verify_kc_links.py
@@ -0,0 +1,30 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ .venv/
5
+ venv/
6
+ .env
7
+ .env.*
8
+ !.env.example
9
+ dist/
10
+ build/
11
+ .coverage
12
+ coverage.xml
13
+ htmlcov/
14
+ .pytest_cache/
15
+ .mypy_cache/
16
+ .ruff_cache/
17
+ .DS_Store
18
+ *.log
19
+ audit-*.jsonl
20
+ sbom.json
21
+ *.crt
22
+ *.key
23
+ *.pem
24
+ *.kdb
25
+ *.sth
26
+ *.rdb
27
+ secrets/
28
+ .claude/
29
+ output/
30
+ tmp/
@@ -0,0 +1,9 @@
1
+ # Project-scoped MCP so Grok launched from this repo can use MQ-Sentinel.
2
+ # Requires `uv` on PATH. Demo/fixture mode — no live IBM MQ.
3
+
4
+ [mcp_servers.mq-sentinel]
5
+ command = "uv"
6
+ args = ["run", "mq-sentinel", "serve"]
7
+ env = { MQS_AUTH_DISABLE_AUTH_FOR_LOCAL_DEV = "true", MQS_SERVER_ENVIRONMENT = "dev" }
8
+ enabled = true
9
+ startup_timeout_sec = 60
@@ -0,0 +1,9 @@
1
+ # Project-scoped MCP so Grok launched from this repo can use MQ-Sentinel.
2
+ # Requires `uv` on PATH. Demo/fixture mode — no live IBM MQ.
3
+
4
+ [mcp_servers.mq-sentinel]
5
+ command = "uv"
6
+ args = ["run", "mq-sentinel", "serve"]
7
+ env = { MQS_AUTH_DISABLE_AUTH_FOR_LOCAL_DEV = "true", MQS_SERVER_ENVIRONMENT = "dev" }
8
+ enabled = true
9
+ startup_timeout_sec = 60
@@ -0,0 +1,54 @@
1
+ # Changelog
2
+
3
+ All notable changes to MQ-Sentinel are documented here. The format is loosely based on
4
+ [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres to
5
+ [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ---
8
+
9
+ ## [Unreleased] — MCP distribution (any client)
10
+
11
+ - Official MCP Registry manifest at repo-root `server.json` (`io.github.pramodreddyboddu/mq-sentinel`).
12
+ - Docker label `io.modelcontextprotocol.server.name` required by the official registry.
13
+ - README `mcp-name` marker so a future PyPI package can be verified.
14
+ - `docs/mcp-clients.md` — copy-paste install for Grok, Claude Desktop, Claude Code, Cursor, Gemini CLI, ChatGPT.
15
+ - Project-scoped `.grok/config.toml` so Grok launched from this repo loads MQ-Sentinel.
16
+ - Replaced the fake `@modelcontextprotocol/server-mq-sentinel` npm snippet.
17
+ - Registry submit path rewritten: official registry first, then Smithery — not the old servers README PR.
18
+
19
+ ## [Unreleased] — Owner Polish & DX (Full Ownership Mode)
20
+
21
+ Treated the project as a long-term owned artifact:
22
+ - Added `mq-sentinel tools` command — clean discovery of all diagnostics.
23
+ - Added `mq-sentinel doctor` — environment, pymqi, config, and audit path self-check.
24
+ - Added professional GitHub templates (PULL_REQUEST_TEMPLATE, bug/feature issue templates).
25
+ - Added VISION.md (owner principles, success criteria, roadmap philosophy).
26
+ - Added CONTRIBUTING.md with high bar for security-sensitive changes.
27
+ - Added DEVELOPMENT.md — detailed owner-level guide for contributors and future maintainers.
28
+ - Updated mcp-manifest.json, smithery metadata, CLI help text, and README for stronger owned-product voice.
29
+ - Consistent maintainer/author metadata across packaging.
30
+
31
+ These are additive, non-breaking improvements focused on discoverability, contributor experience, and long-term ownership quality.
32
+
33
+ ## [Unreleased] — Org-Readiness Hardening
34
+
35
+ Major push to make MQ-Sentinel production- and org-ready for mid-to-large enterprises.
36
+
37
+ ### Added
38
+ - Comprehensive Org-Readiness Plan (docs/ORG-READINESS-PLAN.md) with 7 phases.
39
+ - `docs/getting-started-platform-teams.md`, `docs/onboard-new-qm.md`, `docs/rbac-best-practices.md`.
40
+ - `docs/compliance/soc2-evidence-checklist.md`.
41
+ - Enhanced SECURITY_POSTURE.md and PRODUCTION.md (SLOs, full enterprise checklist).
42
+ - `docs/oidc-examples.md` with real IdP configs (Okta, Entra ID, Keycloak).
43
+ - `docs/metrics.md`.
44
+ - Helm improvements: HPA, ServiceMonitor, Ingress template, affinity, production values, ServiceAccount support.
45
+ - Fleet-scale inventory: `load_from_multiple` and directory loading, `inventory_dir` config support.
46
+ - Example org inventory in `examples/org/`.
47
+ - Grafana dashboard and Prometheus alerts in `observability/`.
48
+ - Updated smithery.yaml and launch materials with org positioning.
49
+ - Ingress and better volume support in Helm templates.
50
+
51
+ ### Changed
52
+ - Chart.yaml bumped, better metadata for orgs.
53
+ - INSTALL.md and README updated with org focus and plan links.
54
+ - Inventory and server enhanced for large fleets.