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.
- mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/bug_report 2.md +37 -0
- mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/bug_report.md +37 -0
- mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/config 2.yml +8 -0
- mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
- mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/feature_request 2.md +25 -0
- mq_sentinel-0.3.0/.github/ISSUE_TEMPLATE/feature_request.md +25 -0
- mq_sentinel-0.3.0/.github/PULL_REQUEST_TEMPLATE 2.md +35 -0
- mq_sentinel-0.3.0/.github/PULL_REQUEST_TEMPLATE.md +35 -0
- mq_sentinel-0.3.0/.github/workflows/ci.yml +80 -0
- mq_sentinel-0.3.0/.github/workflows/pages.yml +33 -0
- mq_sentinel-0.3.0/.github/workflows/release.yml +95 -0
- mq_sentinel-0.3.0/.github/workflows/security.yml +30 -0
- mq_sentinel-0.3.0/.github/workflows/verify-kc-links.yml +23 -0
- mq_sentinel-0.3.0/.gitignore +30 -0
- mq_sentinel-0.3.0/.grok/config 2.toml +9 -0
- mq_sentinel-0.3.0/.grok/config.toml +9 -0
- mq_sentinel-0.3.0/CHANGELOG.md +54 -0
- mq_sentinel-0.3.0/CONTRIBUTING 2.md +115 -0
- mq_sentinel-0.3.0/CONTRIBUTING.md +115 -0
- mq_sentinel-0.3.0/DEVELOPMENT 2.md +140 -0
- mq_sentinel-0.3.0/DEVELOPMENT.md +140 -0
- mq_sentinel-0.3.0/IBM_MQ_Diagnostic_MCP_v1_Full_Flavors_Spec.docx +0 -0
- mq_sentinel-0.3.0/LICENSE +25 -0
- mq_sentinel-0.3.0/Makefile +131 -0
- mq_sentinel-0.3.0/PKG-INFO +360 -0
- mq_sentinel-0.3.0/README.md +319 -0
- mq_sentinel-0.3.0/SECURITY.md +40 -0
- mq_sentinel-0.3.0/VISION 2.md +94 -0
- mq_sentinel-0.3.0/VISION.md +94 -0
- mq_sentinel-0.3.0/demo/HOW-TO-RECORD.md +124 -0
- mq_sentinel-0.3.0/demo/README.md +189 -0
- mq_sentinel-0.3.0/demo/cached-output/diagnose_failed_channels.json +59 -0
- mq_sentinel-0.3.0/demo/record.sh +49 -0
- mq_sentinel-0.3.0/demo/run.sh +301 -0
- mq_sentinel-0.3.0/demo-sandbox/README.md +30 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/.gitkeep +0 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/dlq/SYSTEM.DEAD.LETTER.QUEUE.json +96 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CFSTATUS_ALL__ALL.json +8 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CHSTATUS_ALL__ALL.json +35 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CLUSQMGR_ALL__ALL.json +54 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_CLUSQMGR_ALL__CLUSTER.json +8 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_GROUP.json +9 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_NATIVEHASTATUS.json +30 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_DEADQ.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_PLATFORM.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_QMNAME.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_REPOS_REPOSNL.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMGR_VERSION.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMSTATUS.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMSTATUS_CHINIT.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_QMSTATUS_RECOVERYGROUP.json +5 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_USAGE_BUFFPOOL_ALL_.json +8 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/mqsc/DISPLAY_USAGE_PSID_ALL_.json +9 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/crm_mon_-1.txt +17 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/drbdadm_status.txt +8 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/dspmq_-o_standby.txt +1 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/dspmq_-x.txt +2 -0
- mq_sentinel-0.3.0/demo-sandbox/fixtures/shell/rdqmstatus.txt +13 -0
- mq_sentinel-0.3.0/deploy/Dockerfile +24 -0
- mq_sentinel-0.3.0/deploy/helm/Chart.yaml +19 -0
- mq_sentinel-0.3.0/deploy/helm/templates/_helpers 2.tpl +60 -0
- mq_sentinel-0.3.0/deploy/helm/templates/_helpers.tpl +60 -0
- mq_sentinel-0.3.0/deploy/helm/templates/deployment.yaml +84 -0
- mq_sentinel-0.3.0/deploy/helm/templates/hpa 2.yaml +32 -0
- mq_sentinel-0.3.0/deploy/helm/templates/hpa.yaml +32 -0
- mq_sentinel-0.3.0/deploy/helm/templates/ingress 2.yaml +41 -0
- mq_sentinel-0.3.0/deploy/helm/templates/ingress.yaml +41 -0
- mq_sentinel-0.3.0/deploy/helm/templates/serviceaccount 2.yaml +12 -0
- mq_sentinel-0.3.0/deploy/helm/templates/serviceaccount.yaml +12 -0
- mq_sentinel-0.3.0/deploy/helm/templates/servicemonitor 2.yaml +23 -0
- mq_sentinel-0.3.0/deploy/helm/templates/servicemonitor.yaml +23 -0
- mq_sentinel-0.3.0/deploy/helm/values-production 2.yaml +61 -0
- mq_sentinel-0.3.0/deploy/helm/values-production.yaml +61 -0
- mq_sentinel-0.3.0/deploy/helm/values.yaml +161 -0
- mq_sentinel-0.3.0/deploy/hosted-demo/README.md +83 -0
- mq_sentinel-0.3.0/deploy/hosted-demo/cloudflared.yml.example +14 -0
- mq_sentinel-0.3.0/deploy/hosted-demo/docker-compose.yml +39 -0
- mq_sentinel-0.3.0/docs/INSTALL.md +319 -0
- mq_sentinel-0.3.0/docs/LAUNCH.md +67 -0
- mq_sentinel-0.3.0/docs/ORG-READINESS 2.md +128 -0
- mq_sentinel-0.3.0/docs/ORG-READINESS-PLAN 2.md +174 -0
- mq_sentinel-0.3.0/docs/ORG-READINESS-PLAN.md +174 -0
- mq_sentinel-0.3.0/docs/ORG-READINESS.md +128 -0
- mq_sentinel-0.3.0/docs/POST-ORG-READINESS-OPTIONS 2.md +124 -0
- mq_sentinel-0.3.0/docs/POST-ORG-READINESS-OPTIONS.md +124 -0
- mq_sentinel-0.3.0/docs/PRODUCTION 2.md +180 -0
- mq_sentinel-0.3.0/docs/PRODUCTION.md +180 -0
- mq_sentinel-0.3.0/docs/SECURITY_POSTURE 2.md +67 -0
- mq_sentinel-0.3.0/docs/SECURITY_POSTURE.md +67 -0
- mq_sentinel-0.3.0/docs/architecture.md +50 -0
- mq_sentinel-0.3.0/docs/byom.md +211 -0
- mq_sentinel-0.3.0/docs/compliance/soc2-evidence-checklist 2.md +73 -0
- mq_sentinel-0.3.0/docs/compliance/soc2-evidence-checklist.md +73 -0
- mq_sentinel-0.3.0/docs/demo-script.md +173 -0
- mq_sentinel-0.3.0/docs/getting-started-platform-teams 2.md +106 -0
- mq_sentinel-0.3.0/docs/getting-started-platform-teams.md +106 -0
- mq_sentinel-0.3.0/docs/http-transport.md +106 -0
- mq_sentinel-0.3.0/docs/mcp-clients 2.md +184 -0
- mq_sentinel-0.3.0/docs/mcp-clients.md +184 -0
- mq_sentinel-0.3.0/docs/metrics 2.md +33 -0
- mq_sentinel-0.3.0/docs/metrics.md +33 -0
- mq_sentinel-0.3.0/docs/oidc-examples 2.md +147 -0
- mq_sentinel-0.3.0/docs/oidc-examples.md +147 -0
- mq_sentinel-0.3.0/docs/onboard-new-qm 2.md +94 -0
- mq_sentinel-0.3.0/docs/onboard-new-qm.md +94 -0
- mq_sentinel-0.3.0/docs/rbac-best-practices 2.md +66 -0
- mq_sentinel-0.3.0/docs/rbac-best-practices.md +66 -0
- mq_sentinel-0.3.0/docs/threat-model.md +53 -0
- mq_sentinel-0.3.0/docs/usage-with-ai 2.md +98 -0
- mq_sentinel-0.3.0/docs/usage-with-ai.md +98 -0
- mq_sentinel-0.3.0/examples/kind/README.md +55 -0
- mq_sentinel-0.3.0/examples/kind/install.sh +139 -0
- mq_sentinel-0.3.0/examples/kind/kind-config.yaml +18 -0
- mq_sentinel-0.3.0/examples/kind/values.yaml +30 -0
- mq_sentinel-0.3.0/examples/org/inventory-example 2.yaml +38 -0
- mq_sentinel-0.3.0/examples/org/inventory-example.yaml +38 -0
- mq_sentinel-0.3.0/marketing/community-ibm-post.md +213 -0
- mq_sentinel-0.3.0/marketing/day2-linkedin-post.md +168 -0
- mq_sentinel-0.3.0/marketing/launch-posts.md +325 -0
- mq_sentinel-0.3.0/marketing/portfolio-linkedin-post 2.md +50 -0
- mq_sentinel-0.3.0/marketing/portfolio-linkedin-post.md +50 -0
- mq_sentinel-0.3.0/marketing/portfolio-summary 2.md +23 -0
- mq_sentinel-0.3.0/marketing/portfolio-summary.md +23 -0
- mq_sentinel-0.3.0/marketing/portfolio-x-thread 2.md +58 -0
- mq_sentinel-0.3.0/marketing/portfolio-x-thread.md +58 -0
- mq_sentinel-0.3.0/marketing/screencast-script.md +126 -0
- mq_sentinel-0.3.0/marketing/social-demo-recording-guide 2.md +162 -0
- mq_sentinel-0.3.0/marketing/social-demo-recording-guide.md +162 -0
- mq_sentinel-0.3.0/marketing/social-demo-transcript 2.md +115 -0
- mq_sentinel-0.3.0/marketing/social-demo-transcript.md +115 -0
- mq_sentinel-0.3.0/marketing/social-recording-flow 2.sh +214 -0
- mq_sentinel-0.3.0/marketing/social-recording-flow.sh +214 -0
- mq_sentinel-0.3.0/observability/grafana-dashboard 2.json +90 -0
- mq_sentinel-0.3.0/observability/grafana-dashboard.json +90 -0
- mq_sentinel-0.3.0/observability/prometheus-alerts 2.yaml +38 -0
- mq_sentinel-0.3.0/observability/prometheus-alerts.yaml +38 -0
- mq_sentinel-0.3.0/packaging/deb/postinst +44 -0
- mq_sentinel-0.3.0/packaging/deb/prerm +12 -0
- mq_sentinel-0.3.0/packaging/homebrew/README.md +90 -0
- mq_sentinel-0.3.0/packaging/homebrew/mq-sentinel.rb +61 -0
- mq_sentinel-0.3.0/packaging/mcp/mcp-manifest.json +67 -0
- mq_sentinel-0.3.0/packaging/mcp/registry-entry.md +91 -0
- mq_sentinel-0.3.0/packaging/rpm/mq-sentinel.spec +141 -0
- mq_sentinel-0.3.0/packaging/systemd/mq-sentinel.env +26 -0
- mq_sentinel-0.3.0/packaging/systemd/mq-sentinel.service +41 -0
- mq_sentinel-0.3.0/pyproject.toml +107 -0
- mq_sentinel-0.3.0/scripts/install.sh +140 -0
- mq_sentinel-0.3.0/scripts/uninstall.sh +35 -0
- mq_sentinel-0.3.0/scripts/verify_kc_links.py +112 -0
- mq_sentinel-0.3.0/server 2.json +45 -0
- mq_sentinel-0.3.0/server.json +45 -0
- mq_sentinel-0.3.0/smithery.yaml +101 -0
- mq_sentinel-0.3.0/src/mq_sentinel/__init__.py +4 -0
- mq_sentinel-0.3.0/src/mq_sentinel/audit/__init__.py +5 -0
- mq_sentinel-0.3.0/src/mq_sentinel/audit/logger.py +102 -0
- mq_sentinel-0.3.0/src/mq_sentinel/auth/__init__.py +21 -0
- mq_sentinel-0.3.0/src/mq_sentinel/auth/oidc.py +181 -0
- mq_sentinel-0.3.0/src/mq_sentinel/auth/rbac.py +46 -0
- mq_sentinel-0.3.0/src/mq_sentinel/cli/__init__.py +0 -0
- mq_sentinel-0.3.0/src/mq_sentinel/cli/main.py +227 -0
- mq_sentinel-0.3.0/src/mq_sentinel/config.py +84 -0
- mq_sentinel-0.3.0/src/mq_sentinel/connectors/__init__.py +13 -0
- mq_sentinel-0.3.0/src/mq_sentinel/connectors/base.py +68 -0
- mq_sentinel-0.3.0/src/mq_sentinel/connectors/fixture.py +119 -0
- mq_sentinel-0.3.0/src/mq_sentinel/connectors/pymqi_connector.py +261 -0
- mq_sentinel-0.3.0/src/mq_sentinel/http_app.py +234 -0
- mq_sentinel-0.3.0/src/mq_sentinel/inventory/__init__.py +6 -0
- mq_sentinel-0.3.0/src/mq_sentinel/inventory/models.py +45 -0
- mq_sentinel-0.3.0/src/mq_sentinel/inventory/registry.py +52 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/__init__.py +13 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/engine.py +112 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/kc_registry.py +406 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/__init__.py +20 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/channels.py +285 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/cluster.py +343 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/dlq.py +355 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/miqm.py +259 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/native_ha.py +402 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/rdqm.py +434 -0
- mq_sentinel-0.3.0/src/mq_sentinel/rcs/matchers/zos.py +301 -0
- mq_sentinel-0.3.0/src/mq_sentinel/security/__init__.py +22 -0
- mq_sentinel-0.3.0/src/mq_sentinel/security/allowlist.py +112 -0
- mq_sentinel-0.3.0/src/mq_sentinel/security/ratelimit.py +39 -0
- mq_sentinel-0.3.0/src/mq_sentinel/security/sanitizer.py +111 -0
- mq_sentinel-0.3.0/src/mq_sentinel/server.py +518 -0
- mq_sentinel-0.3.0/src/mq_sentinel/telemetry/__init__.py +5 -0
- mq_sentinel-0.3.0/src/mq_sentinel/telemetry/setup.py +65 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/__init__.py +48 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/base.py +70 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/channels.py +102 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/cluster.py +101 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/dlq.py +98 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/health_check.py +236 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/miqm.py +139 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/native_ha.py +116 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/rdqm.py +263 -0
- mq_sentinel-0.3.0/src/mq_sentinel/tools/zos.py +103 -0
- mq_sentinel-0.3.0/src/mq_sentinel/topology/__init__.py +5 -0
- mq_sentinel-0.3.0/src/mq_sentinel/topology/detect.py +139 -0
- mq_sentinel-0.3.0/tests/__init__.py +0 -0
- mq_sentinel-0.3.0/tests/fixtures/.gitkeep +0 -0
- mq_sentinel-0.3.0/tests/integration/__init__.py +0 -0
- mq_sentinel-0.3.0/tests/integration/test_analyze_dlq_e2e.py +87 -0
- mq_sentinel-0.3.0/tests/integration/test_check_cluster_health_e2e.py +82 -0
- mq_sentinel-0.3.0/tests/integration/test_diagnose_channels_e2e.py +78 -0
- mq_sentinel-0.3.0/tests/integration/test_diagnose_miqm_e2e.py +59 -0
- mq_sentinel-0.3.0/tests/integration/test_diagnose_native_ha_e2e.py +82 -0
- mq_sentinel-0.3.0/tests/integration/test_diagnose_rdqm_e2e.py +90 -0
- mq_sentinel-0.3.0/tests/integration/test_diagnose_zos_e2e.py +61 -0
- mq_sentinel-0.3.0/tests/integration/test_full_health_check_e2e.py +118 -0
- mq_sentinel-0.3.0/tests/integration/test_http_transport.py +232 -0
- mq_sentinel-0.3.0/tests/security/__init__.py +0 -0
- mq_sentinel-0.3.0/tests/security/test_allowlist.py +85 -0
- mq_sentinel-0.3.0/tests/security/test_dlq_safety.py +40 -0
- mq_sentinel-0.3.0/tests/security/test_remediation_isolation.py +155 -0
- mq_sentinel-0.3.0/tests/security/test_sanitizer.py +78 -0
- mq_sentinel-0.3.0/tests/unit/__init__.py +0 -0
- mq_sentinel-0.3.0/tests/unit/test_audit.py +51 -0
- mq_sentinel-0.3.0/tests/unit/test_channel_matchers.py +50 -0
- mq_sentinel-0.3.0/tests/unit/test_cluster_matchers.py +125 -0
- mq_sentinel-0.3.0/tests/unit/test_dlq_matchers.py +88 -0
- mq_sentinel-0.3.0/tests/unit/test_health_check_summary.py +73 -0
- mq_sentinel-0.3.0/tests/unit/test_inventory.py +45 -0
- mq_sentinel-0.3.0/tests/unit/test_kc_registry.py +21 -0
- mq_sentinel-0.3.0/tests/unit/test_kc_registry_structure.py +78 -0
- mq_sentinel-0.3.0/tests/unit/test_miqm_matchers.py +95 -0
- mq_sentinel-0.3.0/tests/unit/test_native_ha_matchers.py +137 -0
- mq_sentinel-0.3.0/tests/unit/test_oidc_verifier.py +160 -0
- mq_sentinel-0.3.0/tests/unit/test_ratelimit.py +18 -0
- mq_sentinel-0.3.0/tests/unit/test_rbac.py +25 -0
- mq_sentinel-0.3.0/tests/unit/test_rdqm_matchers.py +161 -0
- mq_sentinel-0.3.0/tests/unit/test_server.py +32 -0
- mq_sentinel-0.3.0/tests/unit/test_server_dispatch_v2.py +79 -0
- mq_sentinel-0.3.0/tests/unit/test_topology.py +76 -0
- mq_sentinel-0.3.0/tests/unit/test_zos_matchers.py +94 -0
- mq_sentinel-0.3.0/uv.lock +1988 -0
- mq_sentinel-0.3.0/web/index.html +329 -0
- 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.
|