sentrik 1.5.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 (512) hide show
  1. sentrik-1.5.0/.dockerignore +24 -0
  2. sentrik-1.5.0/.github/DISCUSSION_TEMPLATE/feature-request.yml +32 -0
  3. sentrik-1.5.0/.github/DISCUSSION_TEMPLATE/q-a.yml +19 -0
  4. sentrik-1.5.0/.github/DISCUSSION_TEMPLATE/show-and-tell.yml +14 -0
  5. sentrik-1.5.0/.github/ISSUE_TEMPLATE/bug_report.yml +37 -0
  6. sentrik-1.5.0/.github/ISSUE_TEMPLATE/config.yml +11 -0
  7. sentrik-1.5.0/.github/workflows/auto-merge.yml +92 -0
  8. sentrik-1.5.0/.github/workflows/docs.yml +36 -0
  9. sentrik-1.5.0/.github/workflows/guard-gate.yml +79 -0
  10. sentrik-1.5.0/.github/workflows/release.yml +88 -0
  11. sentrik-1.5.0/.gitignore +42 -0
  12. sentrik-1.5.0/.guard.yaml +102 -0
  13. sentrik-1.5.0/.mcp.json +9 -0
  14. sentrik-1.5.0/.pre-commit-config.yaml +9 -0
  15. sentrik-1.5.0/AI_SDLC_Guard_UX_Changelog.docx +0 -0
  16. sentrik-1.5.0/CHANGELOG-v1.1.0.md +149 -0
  17. sentrik-1.5.0/CLAUDE.md +515 -0
  18. sentrik-1.5.0/CODE_OF_CONDUCT.md +30 -0
  19. sentrik-1.5.0/CONTRIBUTING.md +189 -0
  20. sentrik-1.5.0/DEPLOYMENT.md +230 -0
  21. sentrik-1.5.0/Dockerfile +63 -0
  22. sentrik-1.5.0/Dockerfile.demo +22 -0
  23. sentrik-1.5.0/LICENSE_PROPRIETARY.txt +100 -0
  24. sentrik-1.5.0/PKG-INFO +241 -0
  25. sentrik-1.5.0/README.md +187 -0
  26. sentrik-1.5.0/agent-reports/content-drafts/2026-03-24.md +85 -0
  27. sentrik-1.5.0/agent-reports/market-intel/security-log-2026-03.md +101 -0
  28. sentrik-1.5.0/automation/.env.example +17 -0
  29. sentrik-1.5.0/automation/COMMANDS.md +28 -0
  30. sentrik-1.5.0/automation/config.yaml +106 -0
  31. sentrik-1.5.0/automation/e2e/package-lock.json +76 -0
  32. sentrik-1.5.0/automation/e2e/package.json +13 -0
  33. sentrik-1.5.0/automation/e2e/playwright.config.ts +34 -0
  34. sentrik-1.5.0/automation/e2e/tests/regression.spec.ts +115 -0
  35. sentrik-1.5.0/automation/e2e/tests/smoke.spec.ts +108 -0
  36. sentrik-1.5.0/automation/nemoclaw-skill/SKILL.md +157 -0
  37. sentrik-1.5.0/automation/nemoclaw-skill/bug-triage/SKILL.md +54 -0
  38. sentrik-1.5.0/automation/nemoclaw-skill/customer-support/SKILL.md +51 -0
  39. sentrik-1.5.0/automation/nemoclaw-skill/docs-manager/SKILL.md +56 -0
  40. sentrik-1.5.0/automation/nemoclaw-skill/market-research/SKILL.md +48 -0
  41. sentrik-1.5.0/automation/nemoclaw-skill/memory.md +60 -0
  42. sentrik-1.5.0/automation/nemoclaw-skill/release-manager/SKILL.md +182 -0
  43. sentrik-1.5.0/automation/nemoclaw-skill/sales-business/SKILL.md +47 -0
  44. sentrik-1.5.0/automation/nemoclaw-skill/security-maintenance/SKILL.md +65 -0
  45. sentrik-1.5.0/automation/nemoclaw-skill/sentrik-coordinator/SKILL.md +27 -0
  46. sentrik-1.5.0/automation/nemoclaw-skill/socials-content/SKILL.md +46 -0
  47. sentrik-1.5.0/automation/prompts/bug_fix.md +92 -0
  48. sentrik-1.5.0/automation/prompts/default.md +103 -0
  49. sentrik-1.5.0/automation/prompts/market_research.md +94 -0
  50. sentrik-1.5.0/automation/prompts/security.md +103 -0
  51. sentrik-1.5.0/automation/scripts/install-service.sh +99 -0
  52. sentrik-1.5.0/automation/scripts/nemoclaw-hook.sh +35 -0
  53. sentrik-1.5.0/automation/scripts/restore-sandbox.sh +91 -0
  54. sentrik-1.5.0/automation/scripts/run_handler.sh +53 -0
  55. sentrik-1.5.0/automation/scripts/sentrik-approval.service +24 -0
  56. sentrik-1.5.0/automation/scripts/setup.sh +68 -0
  57. sentrik-1.5.0/automation/telegram/approval_handler.py +515 -0
  58. sentrik-1.5.0/azure-pipelines.yml +72 -0
  59. sentrik-1.5.0/demo/.guard.yaml +16 -0
  60. sentrik-1.5.0/demo/requirements.yaml +68 -0
  61. sentrik-1.5.0/demo/run_demo.sh +277 -0
  62. sentrik-1.5.0/demo/sprint_backlog.json +24 -0
  63. sentrik-1.5.0/demo/src/__init__.py +5 -0
  64. sentrik-1.5.0/demo/src/anonymize.py +51 -0
  65. sentrik-1.5.0/demo/src/app.py +40 -0
  66. sentrik-1.5.0/demo/src/audit.py +46 -0
  67. sentrik-1.5.0/demo/src/auth.py +11 -0
  68. sentrik-1.5.0/demo/src/auth_fixed.py +13 -0
  69. sentrik-1.5.0/demo/src/export_fhir.py +72 -0
  70. sentrik-1.5.0/demo/src/ingest.py +48 -0
  71. sentrik-1.5.0/demo/src/signup.py +12 -0
  72. sentrik-1.5.0/demo/src/signup_fixed.py +13 -0
  73. sentrik-1.5.0/demo/standards.yaml +28 -0
  74. sentrik-1.5.0/demo/work_items.json +26 -0
  75. sentrik-1.5.0/docker-compose.yml +31 -0
  76. sentrik-1.5.0/docs/DEMO_CLI.md +1168 -0
  77. sentrik-1.5.0/docs/DEMO_DASHBOARD.md +277 -0
  78. sentrik-1.5.0/docs/FUTURE_OUTLOOK.md +185 -0
  79. sentrik-1.5.0/docs/HOW_SENTRIK_WORKS.md +260 -0
  80. sentrik-1.5.0/docs/LAUNCH_SUBMISSIONS.md +262 -0
  81. sentrik-1.5.0/docs/MANUAL_TEST_PLAN.md +331 -0
  82. sentrik-1.5.0/docs/SENTRA_BENEFITS.md +306 -0
  83. sentrik-1.5.0/docs/Sentra_Auth0_Integration_Plan.docx +0 -0
  84. sentrik-1.5.0/docs/SentrikSEOStrategy.md +247 -0
  85. sentrik-1.5.0/docs/TOOL_QUALIFICATION.md +437 -0
  86. sentrik-1.5.0/docs/TOOL_QUALIFICATION_CHECKLIST.md +191 -0
  87. sentrik-1.5.0/docs/api/authentication.md +72 -0
  88. sentrik-1.5.0/docs/api/rbac.md +57 -0
  89. sentrik-1.5.0/docs/api/reference.md +442 -0
  90. sentrik-1.5.0/docs/architecture.md +302 -0
  91. sentrik-1.5.0/docs/assets/extra.css +7 -0
  92. sentrik-1.5.0/docs/assets/favicon.svg +8 -0
  93. sentrik-1.5.0/docs/assets/images/docs-ai-integration.png +0 -0
  94. sentrik-1.5.0/docs/assets/images/docs-audit-page.png +0 -0
  95. sentrik-1.5.0/docs/assets/images/docs-cli-gate-fail.png +0 -0
  96. sentrik-1.5.0/docs/assets/images/docs-cli-vulns.png +0 -0
  97. sentrik-1.5.0/docs/assets/images/docs-dashboard-overview.png +0 -0
  98. sentrik-1.5.0/docs/assets/images/docs-findings-filtered.png +0 -0
  99. sentrik-1.5.0/docs/assets/images/docs-history-page.png +0 -0
  100. sentrik-1.5.0/docs/assets/images/docs-licenses-page.png +0 -0
  101. sentrik-1.5.0/docs/assets/images/docs-mcp-conversation.png +0 -0
  102. sentrik-1.5.0/docs/assets/images/docs-policies-page.png +0 -0
  103. sentrik-1.5.0/docs/assets/images/docs-rules-grouped.png +0 -0
  104. sentrik-1.5.0/docs/assets/images/docs-vulns-page.png +0 -0
  105. sentrik-1.5.0/docs/assets/logo.svg +23 -0
  106. sentrik-1.5.0/docs/distribution-and-infrastructure.md +75 -0
  107. sentrik-1.5.0/docs/getting-started/configuration.md +208 -0
  108. sentrik-1.5.0/docs/getting-started/installation.md +25 -0
  109. sentrik-1.5.0/docs/getting-started/quickstart.md +109 -0
  110. sentrik-1.5.0/docs/guides/auto-patching.md +152 -0
  111. sentrik-1.5.0/docs/guides/ci-cd-integration.md +173 -0
  112. sentrik-1.5.0/docs/guides/cli-reference.md +953 -0
  113. sentrik-1.5.0/docs/guides/compliance-evidence-map.md +182 -0
  114. sentrik-1.5.0/docs/guides/dashboard.md +176 -0
  115. sentrik-1.5.0/docs/guides/docker-deployment.md +88 -0
  116. sentrik-1.5.0/docs/guides/mcp-integration.md +206 -0
  117. sentrik-1.5.0/docs/guides/securing-ai-generated-code.md +211 -0
  118. sentrik-1.5.0/docs/guides/vscode-extension-tutorial.md +298 -0
  119. sentrik-1.5.0/docs/index.md +71 -0
  120. sentrik-1.5.0/docs/sdlc_openclaw_plan.docx +0 -0
  121. sentrik-1.5.0/docs/sentrik_improvements.md +301 -0
  122. sentrik-1.5.0/docs/standards-packs/authoring-custom-packs.md +198 -0
  123. sentrik-1.5.0/docs/standards-packs/cmmc.md +51 -0
  124. sentrik-1.5.0/docs/standards-packs/do-178c.md +57 -0
  125. sentrik-1.5.0/docs/standards-packs/eu-ai-act.md +54 -0
  126. sentrik-1.5.0/docs/standards-packs/fda-21cfr11.md +51 -0
  127. sentrik-1.5.0/docs/standards-packs/gdpr.md +58 -0
  128. sentrik-1.5.0/docs/standards-packs/go-security.md +41 -0
  129. sentrik-1.5.0/docs/standards-packs/hipaa.md +56 -0
  130. sentrik-1.5.0/docs/standards-packs/iec-62304.md +117 -0
  131. sentrik-1.5.0/docs/standards-packs/iec-81001-5-1.md +64 -0
  132. sentrik-1.5.0/docs/standards-packs/iso-14971.md +50 -0
  133. sentrik-1.5.0/docs/standards-packs/iso-26262.md +58 -0
  134. sentrik-1.5.0/docs/standards-packs/iso-27001.md +63 -0
  135. sentrik-1.5.0/docs/standards-packs/kotlin-security.md +37 -0
  136. sentrik-1.5.0/docs/standards-packs/misra-c.md +51 -0
  137. sentrik-1.5.0/docs/standards-packs/nist-800-53.md +53 -0
  138. sentrik-1.5.0/docs/standards-packs/nist-ai-rmf.md +46 -0
  139. sentrik-1.5.0/docs/standards-packs/overview.md +136 -0
  140. sentrik-1.5.0/docs/standards-packs/owasp-top-10.md +132 -0
  141. sentrik-1.5.0/docs/standards-packs/pci-dss.md +65 -0
  142. sentrik-1.5.0/docs/standards-packs/php-security.md +42 -0
  143. sentrik-1.5.0/docs/standards-packs/python-security.md +44 -0
  144. sentrik-1.5.0/docs/standards-packs/soc2.md +61 -0
  145. sentrik-1.5.0/docs/standards-packs/supply-chain-security.md +53 -0
  146. sentrik-1.5.0/docs/tutorials/medical-device-walkthrough.md +159 -0
  147. sentrik-1.5.0/docs/use-cases/fintech.md +183 -0
  148. sentrik-1.5.0/docs/use-cases/medical-devices.md +148 -0
  149. sentrik-1.5.0/docs/use-cases/saas.md +223 -0
  150. sentrik-1.5.0/examples/sample_standards.yaml +32 -0
  151. sentrik-1.5.0/examples/sample_work_items.json +433 -0
  152. sentrik-1.5.0/fly.toml +20 -0
  153. sentrik-1.5.0/frontend/index.html +13 -0
  154. sentrik-1.5.0/frontend/package-lock.json +1859 -0
  155. sentrik-1.5.0/frontend/package.json +22 -0
  156. sentrik-1.5.0/frontend/src/App.vue +262 -0
  157. sentrik-1.5.0/frontend/src/components/AppHeader.vue +125 -0
  158. sentrik-1.5.0/frontend/src/components/AppSidebar.vue +215 -0
  159. sentrik-1.5.0/frontend/src/components/DataTable.vue +168 -0
  160. sentrik-1.5.0/frontend/src/components/HelpOverlay.vue +167 -0
  161. sentrik-1.5.0/frontend/src/components/LoadingSkeleton.vue +128 -0
  162. sentrik-1.5.0/frontend/src/components/ModalDialog.vue +149 -0
  163. sentrik-1.5.0/frontend/src/components/SearchOverlay.vue +268 -0
  164. sentrik-1.5.0/frontend/src/components/SeverityBar.vue +67 -0
  165. sentrik-1.5.0/frontend/src/components/SeverityPills.vue +128 -0
  166. sentrik-1.5.0/frontend/src/components/ToastNotification.vue +102 -0
  167. sentrik-1.5.0/frontend/src/composables/useApi.ts +79 -0
  168. sentrik-1.5.0/frontend/src/composables/useKeyboard.ts +111 -0
  169. sentrik-1.5.0/frontend/src/composables/useTheme.ts +45 -0
  170. sentrik-1.5.0/frontend/src/composables/useToast.ts +32 -0
  171. sentrik-1.5.0/frontend/src/env.d.ts +7 -0
  172. sentrik-1.5.0/frontend/src/main.ts +16 -0
  173. sentrik-1.5.0/frontend/src/pages/ApprovalsPage.vue +126 -0
  174. sentrik-1.5.0/frontend/src/pages/AuditPage.vue +120 -0
  175. sentrik-1.5.0/frontend/src/pages/DevOpsPage.vue +184 -0
  176. sentrik-1.5.0/frontend/src/pages/FindingsPage.vue +227 -0
  177. sentrik-1.5.0/frontend/src/pages/HistoryPage.vue +143 -0
  178. sentrik-1.5.0/frontend/src/pages/LicensesPage.vue +124 -0
  179. sentrik-1.5.0/frontend/src/pages/OverviewPage.vue +172 -0
  180. sentrik-1.5.0/frontend/src/pages/PacksPage.vue +164 -0
  181. sentrik-1.5.0/frontend/src/pages/PoliciesPage.vue +144 -0
  182. sentrik-1.5.0/frontend/src/pages/ReportsPage.vue +110 -0
  183. sentrik-1.5.0/frontend/src/pages/RulesPage.vue +184 -0
  184. sentrik-1.5.0/frontend/src/pages/SettingsPage.vue +195 -0
  185. sentrik-1.5.0/frontend/src/pages/VulnsPage.vue +131 -0
  186. sentrik-1.5.0/frontend/src/pages/WorkItemsPage.vue +144 -0
  187. sentrik-1.5.0/frontend/src/stores/dashboard.ts +305 -0
  188. sentrik-1.5.0/frontend/src/styles/variables.css +159 -0
  189. sentrik-1.5.0/frontend/tsconfig.json +19 -0
  190. sentrik-1.5.0/frontend/tsconfig.node.json +10 -0
  191. sentrik-1.5.0/frontend/vite.config.ts +24 -0
  192. sentrik-1.5.0/guard.spec +135 -0
  193. sentrik-1.5.0/licenses-page.png +0 -0
  194. sentrik-1.5.0/logos/sentrik-icon-b.svg +8 -0
  195. sentrik-1.5.0/logos/sentrik-logo-b-dark.svg +23 -0
  196. sentrik-1.5.0/logos/sentrik-logo-b-light.svg +23 -0
  197. sentrik-1.5.0/mkdocs.yml +133 -0
  198. sentrik-1.5.0/npm-package/.npmignore +2 -0
  199. sentrik-1.5.0/npm-package/README.md +22 -0
  200. sentrik-1.5.0/npm-package/install.js +147 -0
  201. sentrik-1.5.0/npm-package/package.json +46 -0
  202. sentrik-1.5.0/npm-package/run.js +30 -0
  203. sentrik-1.5.0/project_management/.~lock.AI_SDLC_Guard_Task_Tracker.xlsx# +1 -0
  204. sentrik-1.5.0/project_management/AI_SDLC_Guard_Demo_Plan.docx +0 -0
  205. sentrik-1.5.0/project_management/AI_SDLC_Guard_Product_Plan.pptx +0 -0
  206. sentrik-1.5.0/project_management/AI_SDLC_Guard_Task_Tracker.xlsx +0 -0
  207. sentrik-1.5.0/project_management/AI_SDLC_Guard_Technology_Briefing.docx +0 -0
  208. sentrik-1.5.0/project_management/DEMO_GUIDE.md +336 -0
  209. sentrik-1.5.0/project_management/MILESTONE_TIMELINE.md +134 -0
  210. sentrik-1.5.0/project_management/PRODUCT_PLAN.md +126 -0
  211. sentrik-1.5.0/project_management/PROJECT_PLAN.md +941 -0
  212. sentrik-1.5.0/project_management/RISK_REGISTER.md +135 -0
  213. sentrik-1.5.0/project_management/STATUS_REPORT_TEMPLATE.md +68 -0
  214. sentrik-1.5.0/pypi-package/README.md +65 -0
  215. sentrik-1.5.0/pypi-package/pyproject.toml +36 -0
  216. sentrik-1.5.0/pypi-package/sentrik/__init__.py +3 -0
  217. sentrik-1.5.0/pypi-package/sentrik/wrapper.py +106 -0
  218. sentrik-1.5.0/pyproject.toml +105 -0
  219. sentrik-1.5.0/requirements.yaml +508 -0
  220. sentrik-1.5.0/scripts/Dockerfile.sandbox +14 -0
  221. sentrik-1.5.0/scripts/build-binary.ps1 +43 -0
  222. sentrik-1.5.0/scripts/build-binary.sh +42 -0
  223. sentrik-1.5.0/scripts/produce_video.py +409 -0
  224. sentrik-1.5.0/scripts/run_manual_tests.py +182 -0
  225. sentrik-1.5.0/scripts/setup-dev.ps1 +25 -0
  226. sentrik-1.5.0/scripts/setup-dev.sh +41 -0
  227. sentrik-1.5.0/scripts/sync_work_items.py +161 -0
  228. sentrik-1.5.0/scripts/test-sandbox.ps1 +60 -0
  229. sentrik-1.5.0/server.json +32 -0
  230. sentrik-1.5.0/setup.cfg +4 -0
  231. sentrik-1.5.0/src/guard/__init__.py +3 -0
  232. sentrik-1.5.0/src/guard/__main__.py +5 -0
  233. sentrik-1.5.0/src/guard/assets/logo.svg +45 -0
  234. sentrik-1.5.0/src/guard/auditor_portal.html +415 -0
  235. sentrik-1.5.0/src/guard/auth/__init__.py +1 -0
  236. sentrik-1.5.0/src/guard/auth/device_flow.py +246 -0
  237. sentrik-1.5.0/src/guard/auth/jwt_handler.py +191 -0
  238. sentrik-1.5.0/src/guard/auth/models.py +111 -0
  239. sentrik-1.5.0/src/guard/auth/oidc.py +222 -0
  240. sentrik-1.5.0/src/guard/authz/__init__.py +14 -0
  241. sentrik-1.5.0/src/guard/authz/checks.py +39 -0
  242. sentrik-1.5.0/src/guard/authz/fga_client.py +30 -0
  243. sentrik-1.5.0/src/guard/authz/models.py +87 -0
  244. sentrik-1.5.0/src/guard/authz/policy.py +86 -0
  245. sentrik-1.5.0/src/guard/authz/sync.py +31 -0
  246. sentrik-1.5.0/src/guard/cli.py +5349 -0
  247. sentrik-1.5.0/src/guard/cli_output.py +499 -0
  248. sentrik-1.5.0/src/guard/config.py +710 -0
  249. sentrik-1.5.0/src/guard/core/__init__.py +0 -0
  250. sentrik-1.5.0/src/guard/core/agent.py +110 -0
  251. sentrik-1.5.0/src/guard/core/approvals.py +159 -0
  252. sentrik-1.5.0/src/guard/core/architecture.py +509 -0
  253. sentrik-1.5.0/src/guard/core/attestation.py +169 -0
  254. sentrik-1.5.0/src/guard/core/auditor_portal.py +170 -0
  255. sentrik-1.5.0/src/guard/core/auto_detect.py +136 -0
  256. sentrik-1.5.0/src/guard/core/cache.py +103 -0
  257. sentrik-1.5.0/src/guard/core/code_metrics.py +164 -0
  258. sentrik-1.5.0/src/guard/core/comparison.py +88 -0
  259. sentrik-1.5.0/src/guard/core/confidence_scorer.py +118 -0
  260. sentrik-1.5.0/src/guard/core/context_builder.py +49 -0
  261. sentrik-1.5.0/src/guard/core/cpp_analyzer.py +383 -0
  262. sentrik-1.5.0/src/guard/core/design_reviewer.py +290 -0
  263. sentrik-1.5.0/src/guard/core/diff_parser.py +162 -0
  264. sentrik-1.5.0/src/guard/core/drift_analyzer.py +544 -0
  265. sentrik-1.5.0/src/guard/core/error_helper.py +294 -0
  266. sentrik-1.5.0/src/guard/core/evidence_export.py +894 -0
  267. sentrik-1.5.0/src/guard/core/evidence_mapper.py +675 -0
  268. sentrik-1.5.0/src/guard/core/expertise_tracker.py +238 -0
  269. sentrik-1.5.0/src/guard/core/gap_analysis.py +186 -0
  270. sentrik-1.5.0/src/guard/core/governance.py +372 -0
  271. sentrik-1.5.0/src/guard/core/grc_integration.py +325 -0
  272. sentrik-1.5.0/src/guard/core/impact_analysis.py +211 -0
  273. sentrik-1.5.0/src/guard/core/license_scanner.py +335 -0
  274. sentrik-1.5.0/src/guard/core/licensing.py +404 -0
  275. sentrik-1.5.0/src/guard/core/mcp_audit.py +247 -0
  276. sentrik-1.5.0/src/guard/core/metrics.py +240 -0
  277. sentrik-1.5.0/src/guard/core/metrics_db.py +287 -0
  278. sentrik-1.5.0/src/guard/core/models.py +133 -0
  279. sentrik-1.5.0/src/guard/core/notifications.py +332 -0
  280. sentrik-1.5.0/src/guard/core/orchestrator.py +109 -0
  281. sentrik-1.5.0/src/guard/core/org_dashboard.py +600 -0
  282. sentrik-1.5.0/src/guard/core/patcher.py +294 -0
  283. sentrik-1.5.0/src/guard/core/pipeline.py +845 -0
  284. sentrik-1.5.0/src/guard/core/posture.py +173 -0
  285. sentrik-1.5.0/src/guard/core/pr_decorator.py +260 -0
  286. sentrik-1.5.0/src/guard/core/project_profile.py +414 -0
  287. sentrik-1.5.0/src/guard/core/pull_reqs.py +197 -0
  288. sentrik-1.5.0/src/guard/core/quality_scorer.py +440 -0
  289. sentrik-1.5.0/src/guard/core/reconciler.py +294 -0
  290. sentrik-1.5.0/src/guard/core/renderer.py +105 -0
  291. sentrik-1.5.0/src/guard/core/repo_reader.py +108 -0
  292. sentrik-1.5.0/src/guard/core/requirement_tracker.py +136 -0
  293. sentrik-1.5.0/src/guard/core/requirements_generator.py +509 -0
  294. sentrik-1.5.0/src/guard/core/requirements_verifier.py +262 -0
  295. sentrik-1.5.0/src/guard/core/sbom.py +654 -0
  296. sentrik-1.5.0/src/guard/core/secrets_scanner.py +276 -0
  297. sentrik-1.5.0/src/guard/core/status_reporter.py +168 -0
  298. sentrik-1.5.0/src/guard/core/suppression.py +69 -0
  299. sentrik-1.5.0/src/guard/core/threat_modeler.py +259 -0
  300. sentrik-1.5.0/src/guard/core/traceability.py +203 -0
  301. sentrik-1.5.0/src/guard/core/vuln_fixer.py +404 -0
  302. sentrik-1.5.0/src/guard/core/vuln_pr.py +179 -0
  303. sentrik-1.5.0/src/guard/core/vuln_scanner.py +537 -0
  304. sentrik-1.5.0/src/guard/core/watcher.py +503 -0
  305. sentrik-1.5.0/src/guard/dashboard.html +6174 -0
  306. sentrik-1.5.0/src/guard/lsp_server.py +231 -0
  307. sentrik-1.5.0/src/guard/mcp_server.py +597 -0
  308. sentrik-1.5.0/src/guard/ml/__init__.py +1 -0
  309. sentrik-1.5.0/src/guard/ml/severity_estimator.py +444 -0
  310. sentrik-1.5.0/src/guard/oauth/__init__.py +6 -0
  311. sentrik-1.5.0/src/guard/oauth/manager.py +222 -0
  312. sentrik-1.5.0/src/guard/oauth/models.py +53 -0
  313. sentrik-1.5.0/src/guard/oauth/providers.py +270 -0
  314. sentrik-1.5.0/src/guard/oauth/store.py +213 -0
  315. sentrik-1.5.0/src/guard/packs/__init__.py +1 -0
  316. sentrik-1.5.0/src/guard/packs/cmmc/__init__.py +0 -0
  317. sentrik-1.5.0/src/guard/packs/cmmc/pack.yaml +276 -0
  318. sentrik-1.5.0/src/guard/packs/do_178c/__init__.py +0 -0
  319. sentrik-1.5.0/src/guard/packs/do_178c/pack.yaml +331 -0
  320. sentrik-1.5.0/src/guard/packs/eu_ai_act/__init__.py +0 -0
  321. sentrik-1.5.0/src/guard/packs/eu_ai_act/pack.yaml +309 -0
  322. sentrik-1.5.0/src/guard/packs/fda_21cfr11/__init__.py +1 -0
  323. sentrik-1.5.0/src/guard/packs/fda_21cfr11/pack.yaml +245 -0
  324. sentrik-1.5.0/src/guard/packs/fda_iec_62304/__init__.py +1 -0
  325. sentrik-1.5.0/src/guard/packs/fda_iec_62304/pack.yaml +424 -0
  326. sentrik-1.5.0/src/guard/packs/gdpr/__init__.py +1 -0
  327. sentrik-1.5.0/src/guard/packs/gdpr/pack.yaml +358 -0
  328. sentrik-1.5.0/src/guard/packs/go_security/__init__.py +0 -0
  329. sentrik-1.5.0/src/guard/packs/go_security/pack.yaml +214 -0
  330. sentrik-1.5.0/src/guard/packs/hipaa/__init__.py +1 -0
  331. sentrik-1.5.0/src/guard/packs/hipaa/pack.yaml +358 -0
  332. sentrik-1.5.0/src/guard/packs/iec_81001_5_1/__init__.py +1 -0
  333. sentrik-1.5.0/src/guard/packs/iec_81001_5_1/pack.yaml +305 -0
  334. sentrik-1.5.0/src/guard/packs/iso_14971/__init__.py +1 -0
  335. sentrik-1.5.0/src/guard/packs/iso_14971/pack.yaml +217 -0
  336. sentrik-1.5.0/src/guard/packs/iso_26262/__init__.py +0 -0
  337. sentrik-1.5.0/src/guard/packs/iso_26262/pack.yaml +352 -0
  338. sentrik-1.5.0/src/guard/packs/iso_27001/__init__.py +1 -0
  339. sentrik-1.5.0/src/guard/packs/iso_27001/pack.yaml +437 -0
  340. sentrik-1.5.0/src/guard/packs/kotlin_security/__init__.py +1 -0
  341. sentrik-1.5.0/src/guard/packs/kotlin_security/pack.yaml +189 -0
  342. sentrik-1.5.0/src/guard/packs/misra_c/__init__.py +1 -0
  343. sentrik-1.5.0/src/guard/packs/misra_c/pack.yaml +295 -0
  344. sentrik-1.5.0/src/guard/packs/nist_800_53/__init__.py +0 -0
  345. sentrik-1.5.0/src/guard/packs/nist_800_53/pack.yaml +302 -0
  346. sentrik-1.5.0/src/guard/packs/nist_ai_rmf/__init__.py +0 -0
  347. sentrik-1.5.0/src/guard/packs/nist_ai_rmf/pack.yaml +214 -0
  348. sentrik-1.5.0/src/guard/packs/owasp_top_10/__init__.py +0 -0
  349. sentrik-1.5.0/src/guard/packs/owasp_top_10/pack.yaml +955 -0
  350. sentrik-1.5.0/src/guard/packs/pci_dss/__init__.py +1 -0
  351. sentrik-1.5.0/src/guard/packs/pci_dss/pack.yaml +474 -0
  352. sentrik-1.5.0/src/guard/packs/php_security/__init__.py +1 -0
  353. sentrik-1.5.0/src/guard/packs/php_security/pack.yaml +232 -0
  354. sentrik-1.5.0/src/guard/packs/python_security/__init__.py +0 -0
  355. sentrik-1.5.0/src/guard/packs/python_security/pack.yaml +253 -0
  356. sentrik-1.5.0/src/guard/packs/registry.py +525 -0
  357. sentrik-1.5.0/src/guard/packs/soc2/__init__.py +0 -0
  358. sentrik-1.5.0/src/guard/packs/soc2/pack.yaml +418 -0
  359. sentrik-1.5.0/src/guard/packs/supply_chain_security/__init__.py +0 -0
  360. sentrik-1.5.0/src/guard/packs/supply_chain_security/pack.yaml +353 -0
  361. sentrik-1.5.0/src/guard/providers/__init__.py +0 -0
  362. sentrik-1.5.0/src/guard/providers/devops_azure.py +545 -0
  363. sentrik-1.5.0/src/guard/providers/devops_base.py +45 -0
  364. sentrik-1.5.0/src/guard/providers/devops_github.py +310 -0
  365. sentrik-1.5.0/src/guard/providers/devops_jira.py +395 -0
  366. sentrik-1.5.0/src/guard/providers/devops_stub.py +24 -0
  367. sentrik-1.5.0/src/guard/providers/factory.py +300 -0
  368. sentrik-1.5.0/src/guard/providers/llm_anthropic.py +113 -0
  369. sentrik-1.5.0/src/guard/providers/llm_base.py +33 -0
  370. sentrik-1.5.0/src/guard/providers/llm_ollama.py +106 -0
  371. sentrik-1.5.0/src/guard/providers/llm_openai.py +130 -0
  372. sentrik-1.5.0/src/guard/providers/llm_stub.py +19 -0
  373. sentrik-1.5.0/src/guard/providers/scanners_base.py +14 -0
  374. sentrik-1.5.0/src/guard/providers/scanners_composite.py +52 -0
  375. sentrik-1.5.0/src/guard/providers/scanners_llm.py +125 -0
  376. sentrik-1.5.0/src/guard/providers/scanners_sarif.py +216 -0
  377. sentrik-1.5.0/src/guard/providers/scanners_stub.py +14 -0
  378. sentrik-1.5.0/src/guard/providers/standards_azure.py +91 -0
  379. sentrik-1.5.0/src/guard/providers/standards_base.py +18 -0
  380. sentrik-1.5.0/src/guard/providers/standards_github.py +76 -0
  381. sentrik-1.5.0/src/guard/providers/standards_jira.py +112 -0
  382. sentrik-1.5.0/src/guard/providers/standards_stub.py +25 -0
  383. sentrik-1.5.0/src/guard/reporters/__init__.py +1 -0
  384. sentrik-1.5.0/src/guard/reporters/base.py +22 -0
  385. sentrik-1.5.0/src/guard/reporters/compliance_report.py +402 -0
  386. sentrik-1.5.0/src/guard/reporters/csv_reporter.py +40 -0
  387. sentrik-1.5.0/src/guard/reporters/executive_summary.py +171 -0
  388. sentrik-1.5.0/src/guard/reporters/factory.py +59 -0
  389. sentrik-1.5.0/src/guard/reporters/html.py +344 -0
  390. sentrik-1.5.0/src/guard/reporters/junit.py +63 -0
  391. sentrik-1.5.0/src/guard/reporters/sarif_output.py +86 -0
  392. sentrik-1.5.0/src/guard/reporters/trust_center.py +451 -0
  393. sentrik-1.5.0/src/guard/rules/__init__.py +0 -0
  394. sentrik-1.5.0/src/guard/rules/ast_checks.py +221 -0
  395. sentrik-1.5.0/src/guard/rules/builtins.py +94 -0
  396. sentrik-1.5.0/src/guard/rules/engine.py +726 -0
  397. sentrik-1.5.0/src/guard/rules/policy_engine.py +613 -0
  398. sentrik-1.5.0/src/guard/rules/rule_schema.py +30 -0
  399. sentrik-1.5.0/src/guard/sdk/__init__.py +34 -0
  400. sentrik-1.5.0/src/guard/sdk/checker.py +405 -0
  401. sentrik-1.5.0/src/guard/server.py +3327 -0
  402. sentrik-1.5.0/src/guard/spec_importer.py +531 -0
  403. sentrik-1.5.0/src/sentrik.egg-info/PKG-INFO +241 -0
  404. sentrik-1.5.0/src/sentrik.egg-info/SOURCES.txt +510 -0
  405. sentrik-1.5.0/src/sentrik.egg-info/dependency_links.txt +1 -0
  406. sentrik-1.5.0/src/sentrik.egg-info/entry_points.txt +2 -0
  407. sentrik-1.5.0/src/sentrik.egg-info/requires.txt +39 -0
  408. sentrik-1.5.0/src/sentrik.egg-info/top_level.txt +1 -0
  409. sentrik-1.5.0/standards.yaml +74 -0
  410. sentrik-1.5.0/templates/gitlab-ci-sentrik.yml +68 -0
  411. sentrik-1.5.0/tests/__init__.py +0 -0
  412. sentrik-1.5.0/tests/conftest.py +67 -0
  413. sentrik-1.5.0/tests/helpers.py +96 -0
  414. sentrik-1.5.0/tests/test_agent.py +82 -0
  415. sentrik-1.5.0/tests/test_approvals.py +280 -0
  416. sentrik-1.5.0/tests/test_architecture.py +505 -0
  417. sentrik-1.5.0/tests/test_ast_checks.py +330 -0
  418. sentrik-1.5.0/tests/test_attestation.py +118 -0
  419. sentrik-1.5.0/tests/test_auditor_portal.py +339 -0
  420. sentrik-1.5.0/tests/test_auth.py +330 -0
  421. sentrik-1.5.0/tests/test_authz.py +363 -0
  422. sentrik-1.5.0/tests/test_auto_detect.py +384 -0
  423. sentrik-1.5.0/tests/test_binary_smoke.py +56 -0
  424. sentrik-1.5.0/tests/test_cache.py +177 -0
  425. sentrik-1.5.0/tests/test_chat_api.py +292 -0
  426. sentrik-1.5.0/tests/test_cli_commands.py +1077 -0
  427. sentrik-1.5.0/tests/test_cli_output.py +41 -0
  428. sentrik-1.5.0/tests/test_code_metrics.py +90 -0
  429. sentrik-1.5.0/tests/test_comparison.py +191 -0
  430. sentrik-1.5.0/tests/test_compliance_report.py +210 -0
  431. sentrik-1.5.0/tests/test_conditional_obligations.py +139 -0
  432. sentrik-1.5.0/tests/test_confidence_scorer.py +150 -0
  433. sentrik-1.5.0/tests/test_config_validation.py +616 -0
  434. sentrik-1.5.0/tests/test_context_builder.py +90 -0
  435. sentrik-1.5.0/tests/test_cpp_analyzer.py +298 -0
  436. sentrik-1.5.0/tests/test_csv_reporter.py +138 -0
  437. sentrik-1.5.0/tests/test_custom_rules.py +409 -0
  438. sentrik-1.5.0/tests/test_device_flow.py +295 -0
  439. sentrik-1.5.0/tests/test_devops_azure.py +718 -0
  440. sentrik-1.5.0/tests/test_devops_github.py +348 -0
  441. sentrik-1.5.0/tests/test_devops_jira.py +426 -0
  442. sentrik-1.5.0/tests/test_diff_parser.py +260 -0
  443. sentrik-1.5.0/tests/test_drift_analyzer.py +313 -0
  444. sentrik-1.5.0/tests/test_evidence_export.py +595 -0
  445. sentrik-1.5.0/tests/test_gap_analysis.py +143 -0
  446. sentrik-1.5.0/tests/test_governance.py +514 -0
  447. sentrik-1.5.0/tests/test_grc_integration.py +346 -0
  448. sentrik-1.5.0/tests/test_impact_analysis.py +270 -0
  449. sentrik-1.5.0/tests/test_install_check.py +42 -0
  450. sentrik-1.5.0/tests/test_license_scanner.py +329 -0
  451. sentrik-1.5.0/tests/test_licensing.py +515 -0
  452. sentrik-1.5.0/tests/test_llm_anthropic.py +139 -0
  453. sentrik-1.5.0/tests/test_lsp_server.py +103 -0
  454. sentrik-1.5.0/tests/test_main_module.py +37 -0
  455. sentrik-1.5.0/tests/test_mcp_audit.py +170 -0
  456. sentrik-1.5.0/tests/test_mcp_server.py +290 -0
  457. sentrik-1.5.0/tests/test_metrics_db.py +373 -0
  458. sentrik-1.5.0/tests/test_models.py +400 -0
  459. sentrik-1.5.0/tests/test_new_features.py +894 -0
  460. sentrik-1.5.0/tests/test_notifications.py +420 -0
  461. sentrik-1.5.0/tests/test_oauth.py +371 -0
  462. sentrik-1.5.0/tests/test_orchestrator.py +119 -0
  463. sentrik-1.5.0/tests/test_org_dashboard.py +341 -0
  464. sentrik-1.5.0/tests/test_pack_diff.py +100 -0
  465. sentrik-1.5.0/tests/test_packs.py +1066 -0
  466. sentrik-1.5.0/tests/test_patcher.py +303 -0
  467. sentrik-1.5.0/tests/test_performance.py +424 -0
  468. sentrik-1.5.0/tests/test_pipeline.py +545 -0
  469. sentrik-1.5.0/tests/test_pipeline_progress.py +144 -0
  470. sentrik-1.5.0/tests/test_platform_polish.py +376 -0
  471. sentrik-1.5.0/tests/test_policy_engine.py +522 -0
  472. sentrik-1.5.0/tests/test_posture.py +77 -0
  473. sentrik-1.5.0/tests/test_pr_decorator.py +350 -0
  474. sentrik-1.5.0/tests/test_providers.py +403 -0
  475. sentrik-1.5.0/tests/test_pull_reqs.py +415 -0
  476. sentrik-1.5.0/tests/test_rbac_enforcement.py +490 -0
  477. sentrik-1.5.0/tests/test_reconciler.py +441 -0
  478. sentrik-1.5.0/tests/test_renderer.py +257 -0
  479. sentrik-1.5.0/tests/test_repo_reader.py +199 -0
  480. sentrik-1.5.0/tests/test_reporters.py +470 -0
  481. sentrik-1.5.0/tests/test_requirement_tracker.py +230 -0
  482. sentrik-1.5.0/tests/test_requirements_generator.py +415 -0
  483. sentrik-1.5.0/tests/test_requirements_verifier.py +339 -0
  484. sentrik-1.5.0/tests/test_rules_engine.py +774 -0
  485. sentrik-1.5.0/tests/test_sbom.py +792 -0
  486. sentrik-1.5.0/tests/test_scanners_composite.py +216 -0
  487. sentrik-1.5.0/tests/test_scanners_sarif.py +453 -0
  488. sentrik-1.5.0/tests/test_sdk.py +383 -0
  489. sentrik-1.5.0/tests/test_secrets_scanner.py +160 -0
  490. sentrik-1.5.0/tests/test_server.py +1102 -0
  491. sentrik-1.5.0/tests/test_severity_estimator.py +553 -0
  492. sentrik-1.5.0/tests/test_smoke.py +857 -0
  493. sentrik-1.5.0/tests/test_spec_importer.py +526 -0
  494. sentrik-1.5.0/tests/test_standards_azure.py +384 -0
  495. sentrik-1.5.0/tests/test_standards_github.py +159 -0
  496. sentrik-1.5.0/tests/test_standards_jira.py +226 -0
  497. sentrik-1.5.0/tests/test_status_reporter.py +221 -0
  498. sentrik-1.5.0/tests/test_suppression.py +106 -0
  499. sentrik-1.5.0/tests/test_sync_work_items.py +221 -0
  500. sentrik-1.5.0/tests/test_traceability.py +322 -0
  501. sentrik-1.5.0/tests/test_trust_center.py +245 -0
  502. sentrik-1.5.0/tests/test_vuln_fixer.py +347 -0
  503. sentrik-1.5.0/tests/test_vuln_pr.py +338 -0
  504. sentrik-1.5.0/tests/test_vuln_scanner.py +389 -0
  505. sentrik-1.5.0/tests/test_watcher.py +410 -0
  506. sentrik-1.5.0/vscode-extension/.vscodeignore +7 -0
  507. sentrik-1.5.0/vscode-extension/README.md +94 -0
  508. sentrik-1.5.0/vscode-extension/icon.png +0 -0
  509. sentrik-1.5.0/vscode-extension/package.json +220 -0
  510. sentrik-1.5.0/vscode-extension/src/extension.ts +1335 -0
  511. sentrik-1.5.0/vscode-extension/tsconfig.json +15 -0
  512. sentrik-1.5.0/work_items.json +46 -0
@@ -0,0 +1,24 @@
1
+ __pycache__
2
+ *.pyc
3
+ *.pyo
4
+ .pytest_cache
5
+ .mypy_cache
6
+ .ruff_cache
7
+ out/
8
+ dist/
9
+ build/
10
+ *.egg-info
11
+ .venv/
12
+ venv/
13
+ .env
14
+ .git
15
+ .github
16
+ demo/
17
+ tests/
18
+ project_management/
19
+ guard.spec
20
+ scripts/
21
+ vscode-extension/
22
+ LICENSE_PROPRIETARY.txt
23
+ *.md
24
+ !README.md
@@ -0,0 +1,32 @@
1
+ title: "[Feature] "
2
+ labels: ["enhancement"]
3
+ body:
4
+ - type: markdown
5
+ attributes:
6
+ value: |
7
+ Suggest a new feature or improvement for SENTRIK.
8
+ - type: textarea
9
+ id: description
10
+ attributes:
11
+ label: Feature description
12
+ description: What would you like SENTRIK to do?
13
+ validations:
14
+ required: true
15
+ - type: textarea
16
+ id: use-case
17
+ attributes:
18
+ label: Use case
19
+ description: How would you use this feature? What problem does it solve?
20
+ - type: dropdown
21
+ id: area
22
+ attributes:
23
+ label: Area
24
+ options:
25
+ - CLI
26
+ - Dashboard
27
+ - API
28
+ - Standards Packs
29
+ - CI/CD Integration
30
+ - DevOps Integration
31
+ - Governance
32
+ - Other
@@ -0,0 +1,19 @@
1
+ title: "[Q&A] "
2
+ labels: ["question"]
3
+ body:
4
+ - type: markdown
5
+ attributes:
6
+ value: |
7
+ Ask a question about SENTRIK — installation, configuration, standards packs, CI/CD integration, or anything else.
8
+ - type: textarea
9
+ id: question
10
+ attributes:
11
+ label: Question
12
+ description: What would you like to know?
13
+ validations:
14
+ required: true
15
+ - type: textarea
16
+ id: context
17
+ attributes:
18
+ label: Context
19
+ description: Any relevant details (SENTRIK version, OS, config, error messages).
@@ -0,0 +1,14 @@
1
+ title: "[Show] "
2
+ labels: ["show-and-tell"]
3
+ body:
4
+ - type: markdown
5
+ attributes:
6
+ value: |
7
+ Share how you're using SENTRIK! Custom packs, CI/CD setups, interesting findings, compliance workflows — we'd love to see it.
8
+ - type: textarea
9
+ id: description
10
+ attributes:
11
+ label: What are you sharing?
12
+ description: Tell us about your setup, custom pack, workflow, or results.
13
+ validations:
14
+ required: true
@@ -0,0 +1,37 @@
1
+ name: Bug Report
2
+ description: Report a bug in SENTRIK
3
+ title: "[Bug] "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: textarea
7
+ id: description
8
+ attributes:
9
+ label: Bug description
10
+ description: What happened? What did you expect?
11
+ validations:
12
+ required: true
13
+ - type: textarea
14
+ id: reproduce
15
+ attributes:
16
+ label: Steps to reproduce
17
+ description: How can we reproduce this?
18
+ placeholder: |
19
+ 1. Run `sentrik scan`
20
+ 2. ...
21
+ validations:
22
+ required: true
23
+ - type: input
24
+ id: version
25
+ attributes:
26
+ label: SENTRIK version
27
+ placeholder: "1.0.0"
28
+ - type: input
29
+ id: python
30
+ attributes:
31
+ label: Python version
32
+ placeholder: "3.12"
33
+ - type: input
34
+ id: os
35
+ attributes:
36
+ label: Operating system
37
+ placeholder: "Ubuntu 22.04 / macOS 14 / Windows 11"
@@ -0,0 +1,11 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Question / Support
4
+ url: https://github.com/maxgerhardson/sentrik/discussions/categories/q-a
5
+ about: Ask questions in GitHub Discussions
6
+ - name: Feature Request
7
+ url: https://github.com/maxgerhardson/sentrik/discussions/categories/feature-requests
8
+ about: Suggest features in GitHub Discussions
9
+ - name: Documentation
10
+ url: https://docs.sentrik.dev
11
+ about: Read the documentation
@@ -0,0 +1,92 @@
1
+ name: Auto-Merge Bot PRs
2
+
3
+ on:
4
+ pull_request_review:
5
+ types: [submitted]
6
+ check_suite:
7
+ types: [completed]
8
+ status: {}
9
+
10
+ permissions:
11
+ contents: write
12
+ pull-requests: write
13
+ checks: read
14
+
15
+ jobs:
16
+ auto-merge:
17
+ runs-on: ubuntu-latest
18
+ # Only run for PRs with the auto-merge label
19
+ if: >
20
+ github.event_name == 'check_suite' ||
21
+ github.event_name == 'status' ||
22
+ (github.event_name == 'pull_request_review' && github.event.review.state == 'approved')
23
+
24
+ steps:
25
+ - name: Checkout
26
+ uses: actions/checkout@v4
27
+
28
+ - name: Find auto-merge PRs
29
+ id: find-prs
30
+ env:
31
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32
+ run: |
33
+ # Find open PRs with auto-merge label where all checks pass
34
+ prs=$(gh pr list \
35
+ --label "auto-merge" \
36
+ --state open \
37
+ --json number,headRefName,statusCheckRollup,labels \
38
+ --jq '
39
+ .[] |
40
+ select(
41
+ .statusCheckRollup != null and
42
+ (.statusCheckRollup | all(.conclusion == "SUCCESS" or .conclusion == "NEUTRAL"))
43
+ ) |
44
+ .number
45
+ ')
46
+
47
+ echo "prs=$prs" >> $GITHUB_OUTPUT
48
+ echo "Found auto-merge candidates: $prs"
49
+
50
+ - name: Merge passing PRs
51
+ if: steps.find-prs.outputs.prs != ''
52
+ env:
53
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
54
+ run: |
55
+ for pr_number in ${{ steps.find-prs.outputs.prs }}; do
56
+ echo "Attempting to merge PR #$pr_number"
57
+
58
+ # Double-check all checks pass
59
+ checks_pass=$(gh pr checks "$pr_number" --json bucket \
60
+ --jq '[.[] | select(.bucket != "pass" and .bucket != "skip")] | length')
61
+
62
+ if [ "$checks_pass" = "0" ]; then
63
+ gh pr merge "$pr_number" \
64
+ --squash \
65
+ --auto \
66
+ --delete-branch \
67
+ --subject "auto-merge: PR #$pr_number" || \
68
+ echo "Failed to merge PR #$pr_number — may need manual review"
69
+ else
70
+ echo "PR #$pr_number has failing checks, skipping"
71
+ fi
72
+ done
73
+
74
+
75
+ # Notify Telegram on merge
76
+ notify:
77
+ needs: auto-merge
78
+ runs-on: ubuntu-latest
79
+ if: success()
80
+ steps:
81
+ - name: Send Telegram notification
82
+ env:
83
+ BOT_TOKEN: ${{ secrets.SENTRIK_BOT_TOKEN }}
84
+ CHAT_ID: ${{ secrets.SENTRIK_CHAT_ID }}
85
+ run: |
86
+ if [ -n "$BOT_TOKEN" ] && [ -n "$CHAT_ID" ]; then
87
+ curl -s -X POST \
88
+ "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
89
+ -d chat_id="$CHAT_ID" \
90
+ -d parse_mode="Markdown" \
91
+ -d text="✅ *Auto-merged* PR from automation pipeline. Main branch updated and deployed."
92
+ fi
@@ -0,0 +1,36 @@
1
+ name: Deploy Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - "docs/**"
9
+ - "mkdocs.yml"
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ deploy:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Install MkDocs Material
24
+ run: pip install mkdocs-material
25
+
26
+ - name: Build docs
27
+ run: mkdocs build --strict
28
+
29
+ - name: Deploy to sentrik-docs repo
30
+ uses: peaceiris/actions-gh-pages@v4
31
+ with:
32
+ personal_token: ${{ secrets.DOCS_DEPLOY_TOKEN }}
33
+ external_repository: maxgerhardson/sentrik-docs
34
+ publish_branch: gh-pages
35
+ publish_dir: ./site
36
+ commit_message: "docs: deploy from sentrik@${{ github.sha }}"
@@ -0,0 +1,79 @@
1
+ name: Sentrik Gate
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ sentrik-gate:
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+ with:
16
+ fetch-depth: 0 # Full history for git range
17
+
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.12"
21
+
22
+ - name: Install dependencies
23
+ run: |
24
+ python -m pip install --upgrade pip setuptools
25
+ pip install -e ".[dev]"
26
+
27
+ - name: Run tests with coverage
28
+ run: pytest --junitxml=out/test-results.xml
29
+
30
+ - name: Validate config
31
+ run: sentrik validate-config
32
+
33
+ - name: Run sentrik gate on PR changes
34
+ if: github.event_name == 'pull_request'
35
+ env:
36
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37
+ GUARD_GITHUB_OWNER: ${{ github.repository_owner }}
38
+ GUARD_GITHUB_REPO: ${{ github.event.repository.name }}
39
+ run: sentrik gate --git-range "origin/main...HEAD" --decorate-pr --status-check
40
+
41
+ - name: Run sentrik gate (full scan)
42
+ if: github.event_name == 'push'
43
+ run: sentrik gate
44
+
45
+ - name: Generate SARIF report
46
+ if: always()
47
+ run: sentrik scan --git-range "origin/main...HEAD" 2>/dev/null || true
48
+ env:
49
+ GUARD_PROVIDER: stub
50
+
51
+ - name: Upload SARIF to GitHub Code Scanning
52
+ uses: github/codeql-action/upload-sarif@v3
53
+ if: always()
54
+ continue-on-error: true
55
+ with:
56
+ sarif_file: out/findings.sarif
57
+
58
+ - name: Upload test results
59
+ uses: actions/upload-artifact@v4
60
+ if: always()
61
+ with:
62
+ name: test-results
63
+ path: out/test-results.xml
64
+
65
+ - name: Upload sentrik reports
66
+ uses: actions/upload-artifact@v4
67
+ if: always()
68
+ with:
69
+ name: sentrik-reports
70
+ path: out/
71
+
72
+ - name: Sync work items to GitHub Issues
73
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
74
+ env:
75
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
76
+ GUARD_DEVOPS_PROVIDER: github
77
+ GUARD_GITHUB_OWNER: ${{ github.repository_owner }}
78
+ GUARD_GITHUB_REPO: ${{ github.event.repository.name }}
79
+ run: sentrik sync
@@ -0,0 +1,88 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ packages: write
11
+
12
+ jobs:
13
+ # -----------------------------------------------------------------------
14
+ # Binary: matrix build (Linux, macOS x64, macOS arm64, Windows)
15
+ # -----------------------------------------------------------------------
16
+ binary:
17
+ strategy:
18
+ matrix:
19
+ include:
20
+ - os: ubuntu-latest
21
+ artifact: sentrik-linux-x64
22
+ binary: dist/sentrik
23
+ - os: macos-latest
24
+ artifact: sentrik-darwin-x64
25
+ binary: dist/sentrik
26
+ - os: macos-14
27
+ artifact: sentrik-darwin-arm64
28
+ binary: dist/sentrik
29
+ - os: windows-latest
30
+ artifact: sentrik-win32-x64.exe
31
+ binary: dist/sentrik.exe
32
+ runs-on: ${{ matrix.os }}
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+
36
+ - name: Set up Python
37
+ uses: actions/setup-python@v5
38
+ with:
39
+ python-version: "3.12"
40
+
41
+ - name: Install dependencies
42
+ run: |
43
+ pip install -e ".[dev]"
44
+ pip install pyinstaller
45
+
46
+ - name: Build binary
47
+ run: python -m PyInstaller guard.spec
48
+
49
+ - name: Smoke test
50
+ run: ${{ matrix.binary }} --help
51
+
52
+ - name: Upload artifact
53
+ uses: actions/upload-artifact@v4
54
+ with:
55
+ name: ${{ matrix.artifact }}
56
+ path: ${{ matrix.binary }}
57
+
58
+ # -----------------------------------------------------------------------
59
+ # Release: create GitHub Release with platform binaries
60
+ # -----------------------------------------------------------------------
61
+ release:
62
+ needs: [binary]
63
+ runs-on: ubuntu-latest
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+
67
+ - name: Download all artifacts
68
+ uses: actions/download-artifact@v4
69
+ with:
70
+ path: release-artifacts
71
+
72
+ - name: Rename binaries for platform identification
73
+ run: |
74
+ mkdir -p release-binaries
75
+ cp release-artifacts/sentrik-linux-x64/sentrik release-binaries/sentrik-linux-x64
76
+ cp release-artifacts/sentrik-darwin-x64/sentrik release-binaries/sentrik-darwin-x64
77
+ cp release-artifacts/sentrik-darwin-arm64/sentrik release-binaries/sentrik-darwin-arm64
78
+ cp release-artifacts/sentrik-win32-x64.exe/sentrik.exe release-binaries/sentrik-win32-x64.exe
79
+
80
+ - name: Create GitHub Release
81
+ uses: softprops/action-gh-release@v2
82
+ with:
83
+ generate_release_notes: true
84
+ files: |
85
+ release-binaries/sentrik-linux-x64
86
+ release-binaries/sentrik-darwin-x64
87
+ release-binaries/sentrik-darwin-arm64
88
+ release-binaries/sentrik-win32-x64.exe
@@ -0,0 +1,42 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *.egg-info/
4
+ dist/
5
+ build/
6
+ .eggs/
7
+ *.egg
8
+ .pytest_cache/
9
+ out/
10
+ .venv/
11
+ site/
12
+ .coverage
13
+ .env
14
+ .sentrik/local/
15
+ ~$*
16
+ _dash_debug.*
17
+
18
+ # Root-level screenshots (not source code)
19
+ /*.png
20
+
21
+ # VS Code extension build artifacts
22
+ vscode-extension/node_modules/
23
+ vscode-extension/*.vsix
24
+ vscode-extension/package-lock.json
25
+
26
+ # npm binary
27
+ npm-package/bin/
28
+
29
+ # License server
30
+ license-server/
31
+
32
+ # Frontend build
33
+ frontend/node_modules/
34
+ frontend/dist/
35
+
36
+ # Automation pipeline
37
+ automation/logs/
38
+ automation/e2e/node_modules/
39
+ automation/e2e/test-results/
40
+ automation/e2e/report/
41
+ automation/e2e/screenshots/
42
+ automation/.env
@@ -0,0 +1,102 @@
1
+ output_dir: out
2
+ standards_file: examples/sample_standards.yaml
3
+ work_items_file: examples/sample_work_items.json
4
+ llm_enabled: false
5
+ llm_provider: stub
6
+ llm_model: ''
7
+ llm_base_url: ''
8
+ confidence_scoring_enabled: false
9
+ confidence_scoring_max_findings: 50
10
+ provider: stub
11
+ sarif_files: []
12
+ reporters: []
13
+ cache_enabled: false
14
+ cache_dir: .guard_cache
15
+ gate_fail_on:
16
+ - critical
17
+ - high
18
+ devops_provider: github
19
+ azure_devops_org: ''
20
+ azure_devops_project: ''
21
+ azure_devops_team: ''
22
+ azure_devops_iteration: ''
23
+ azure_devops_repo: ''
24
+ azure_devops_work_item_type: Issue
25
+ azure_devops_work_item_types: []
26
+ jira_issue_types: []
27
+ standards_provider: stub
28
+ azure_devops_standards_repo: ''
29
+ azure_devops_standards_file: standards.yaml
30
+ github_owner: ''
31
+ github_repo: ''
32
+ github_label: ''
33
+ github_milestone: ''
34
+ github_standards_repo: ''
35
+ github_standards_file: standards.yaml
36
+ github_standards_ref: main
37
+ jira_base_url: ''
38
+ jira_project_key: ''
39
+ jira_jql: ''
40
+ jira_standards_issue_key: ''
41
+ standards_packs:
42
+ - fda-iec-62304
43
+ - soc2
44
+ - owasp-top-10
45
+ pack_overrides: {}
46
+ severity_rescoring_enabled: false
47
+ ml_severity_enabled: false
48
+ parallel_scan: false
49
+ max_workers: 4
50
+ agent_scan: false
51
+ agent_max_concurrency: 0
52
+ governance:
53
+ profile: standard
54
+ license_key: ''
55
+ auth: {}
56
+ scan_exclude: []
57
+ suppressions: []
58
+ oauth: {}
59
+ async_approval: {}
60
+ notifications:
61
+ slack_webhook_url: ''
62
+ teams_webhook_url: ''
63
+ notify_on:
64
+ - gate_failed
65
+ online_license_check: true
66
+ portal_url: https://portal.sentrik.dev
67
+ requirements_output_file: requirements.yaml
68
+ cpp_analysis_enabled: false
69
+ cpp_analysis_tool: clang-tidy
70
+ cpp_analysis_checks: ''
71
+ grc_webhook_url: ''
72
+ grc_platform: generic
73
+ grc_events: []
74
+ requirement_coverage_enabled: false
75
+ requirement_coverage_exclude:
76
+ - tests/*
77
+ - test_*
78
+ - '*.md'
79
+ - '*.txt'
80
+ - '*.yaml'
81
+ - '*.yml'
82
+ - '*.json'
83
+ - '*.toml'
84
+ - '*.cfg'
85
+ - '*.ini'
86
+ - '*.lock'
87
+ - __init__.py
88
+ - __pycache__/*
89
+ - '*.pyc'
90
+ - '*.pyo'
91
+ - '*.db'
92
+ - '*.db-shm'
93
+ - '*.db-wal'
94
+ - '*.sqlite*'
95
+ - out/*
96
+ - dist/*
97
+ - build/*
98
+ - '*.egg-info/*'
99
+ - '*.patch'
100
+ - '*.html'
101
+ - '*.css'
102
+ - '*.min.*'
@@ -0,0 +1,9 @@
1
+ {
2
+ "mcpServers": {
3
+ "sentrik": {
4
+ "command": "sentrik",
5
+ "args": ["mcp-server"],
6
+ "description": "Sentrik governance — scan, gate, and trace compliance for AI-generated code"
7
+ }
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ repos:
2
+ - repo: local
3
+ hooks:
4
+ - id: guard-scan
5
+ name: AI SDLC Guard scan
6
+ entry: guard scan --staged
7
+ language: system
8
+ pass_filenames: false
9
+ always_run: true