torusguard 1.3.3 โ†’ 1.3.5

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 (322) hide show
  1. package/.torusguard/.manifest.json +66 -63
  2. package/.torusguard/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
  3. package/.torusguard/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
  4. package/.torusguard/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
  5. package/.torusguard/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
  6. package/.torusguard/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
  7. package/.torusguard/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
  8. package/.torusguard/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
  9. package/.torusguard/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
  10. package/.torusguard/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
  11. package/.torusguard/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
  12. package/.torusguard/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
  13. package/.torusguard/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
  14. package/.torusguard/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
  15. package/.torusguard/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
  16. package/.torusguard/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
  17. package/.torusguard/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
  18. package/.torusguard/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
  19. package/.torusguard/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
  20. package/.torusguard/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
  21. package/.torusguard/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
  22. package/.torusguard/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
  23. package/.torusguard/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
  24. package/.torusguard/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
  25. package/.torusguard/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
  26. package/.torusguard/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
  27. package/.torusguard/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
  28. package/.torusguard/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
  29. package/.torusguard/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
  30. package/.torusguard/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
  31. package/.torusguard/rules_catalog.json +520 -0
  32. package/.torusguard/runs/report-latest.html +93 -7
  33. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  34. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  35. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  36. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  37. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  38. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  39. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  40. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  41. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  42. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  43. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  44. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  45. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  46. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  47. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  48. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  49. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  50. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  51. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  52. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  53. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  54. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/metadata.json +15 -0
  55. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/minimal_patch_plan.md +21 -0
  56. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/patch.diff +9 -0
  57. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  58. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  59. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  60. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/metadata.json +15 -0
  61. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/minimal_patch_plan.md +21 -0
  62. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/patch.diff +9 -0
  63. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  64. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  65. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  66. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  67. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  68. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  69. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  70. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  71. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  72. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  73. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  74. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  75. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  76. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  77. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  78. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  79. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  80. package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  81. package/.torusguard/runs/run-20260910-120238-audit/findings.json +1520 -0
  82. package/.torusguard/runs/run-20260910-120238-audit/findings.md +560 -0
  83. package/.torusguard/runs/run-20260910-120238-audit/manifest.json +13 -0
  84. package/.torusguard/runs/run-20260910-120238-audit/recheck.md +86 -0
  85. package/.torusguard/runs/run-20260910-120238-audit/remediation.md +262 -0
  86. package/.torusguard/runs/run-20260910-120238-audit/summary.md +5 -0
  87. package/.torusguard/runs/run-20260910-121238-audit/findings.json +794 -0
  88. package/.torusguard/runs/run-20260910-121238-audit/findings.md +344 -0
  89. package/.torusguard/runs/run-20260910-121238-audit/manifest.json +12 -0
  90. package/.torusguard/runs/run-20260910-121238-audit/summary.md +5 -0
  91. package/.torusguard/runs/run-20260910-130454-audit/findings.json +893 -0
  92. package/.torusguard/runs/run-20260910-130454-audit/findings.md +386 -0
  93. package/.torusguard/runs/run-20260910-130454-audit/manifest.json +12 -0
  94. package/.torusguard/runs/run-20260910-130454-audit/summary.md +5 -0
  95. package/.torusguard/runs/run-20260910-130519-audit/findings.json +563 -0
  96. package/.torusguard/runs/run-20260910-130519-audit/findings.md +246 -0
  97. package/.torusguard/runs/run-20260910-130519-audit/manifest.json +12 -0
  98. package/.torusguard/runs/run-20260910-130519-audit/summary.md +5 -0
  99. package/.torusguard/runs/run-20260912-214110-audit/findings.json +1256 -0
  100. package/.torusguard/runs/run-20260912-214110-audit/findings.md +534 -0
  101. package/.torusguard/runs/run-20260912-214110-audit/manifest.json +12 -0
  102. package/.torusguard/runs/run-20260912-214110-audit/summary.md +5 -0
  103. package/.torusguard/runs/run-20260912-214813-audit/findings.json +992 -0
  104. package/.torusguard/runs/run-20260912-214813-audit/findings.md +422 -0
  105. package/.torusguard/runs/run-20260912-214813-audit/manifest.json +12 -0
  106. package/.torusguard/runs/run-20260912-214813-audit/summary.md +5 -0
  107. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/metadata.json +17 -0
  108. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/minimal_patch_plan.md +21 -0
  109. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/patch.diff +9 -0
  110. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
  111. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  112. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  113. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
  114. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
  115. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
  116. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
  117. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
  118. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
  119. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
  120. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
  121. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
  122. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
  123. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
  124. package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
  125. package/.torusguard/runs/run-20260912-215555-audit/findings.json +530 -0
  126. package/.torusguard/runs/run-20260912-215555-audit/findings.md +232 -0
  127. package/.torusguard/runs/run-20260912-215555-audit/manifest.json +13 -0
  128. package/.torusguard/runs/run-20260912-215555-audit/remediation.md +102 -0
  129. package/.torusguard/runs/run-20260912-215555-audit/summary.md +5 -0
  130. package/.torusguard/runs/run-20260912-215731-audit/apply_plan.md +6 -0
  131. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/metadata.json +17 -0
  132. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/minimal_patch_plan.md +21 -0
  133. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/patch.diff +9 -0
  134. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/metadata.json +17 -0
  135. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/minimal_patch_plan.md +21 -0
  136. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/patch.diff +9 -0
  137. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/metadata.json +17 -0
  138. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/minimal_patch_plan.md +22 -0
  139. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/patch.diff +10 -0
  140. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
  141. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  142. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  143. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
  144. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
  145. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
  146. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/metadata.json +17 -0
  147. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/minimal_patch_plan.md +23 -0
  148. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/patch.diff +11 -0
  149. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/metadata.json +17 -0
  150. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/minimal_patch_plan.md +23 -0
  151. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/patch.diff +11 -0
  152. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
  153. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
  154. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
  155. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/metadata.json +17 -0
  156. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/minimal_patch_plan.md +21 -0
  157. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/patch.diff +9 -0
  158. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/metadata.json +17 -0
  159. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/minimal_patch_plan.md +21 -0
  160. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/patch.diff +9 -0
  161. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
  162. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
  163. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
  164. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/metadata.json +17 -0
  165. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/minimal_patch_plan.md +21 -0
  166. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/patch.diff +9 -0
  167. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/metadata.json +17 -0
  168. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/minimal_patch_plan.md +21 -0
  169. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/patch.diff +9 -0
  170. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
  171. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
  172. package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
  173. package/.torusguard/runs/run-20260912-215731-audit/diff_summary.md +186 -0
  174. package/.torusguard/runs/run-20260912-215731-audit/findings.json +497 -0
  175. package/.torusguard/runs/run-20260912-215731-audit/findings.md +218 -0
  176. package/.torusguard/runs/run-20260912-215731-audit/manifest.json +14 -0
  177. package/.torusguard/runs/run-20260912-215731-audit/recheck.md +76 -0
  178. package/.torusguard/runs/run-20260912-215731-audit/remediation.md +234 -0
  179. package/.torusguard/runs/run-20260912-215731-audit/summary.md +5 -0
  180. package/.torusguard/runs/run-20260912-220134-audit/findings.json +68 -0
  181. package/.torusguard/runs/run-20260912-220134-audit/findings.md +36 -0
  182. package/.torusguard/runs/run-20260912-220134-audit/manifest.json +12 -0
  183. package/.torusguard/runs/run-20260912-220134-audit/summary.md +5 -0
  184. package/.torusguard/runs/run-20260912-220200-audit/findings.json +1 -0
  185. package/.torusguard/runs/run-20260912-220200-audit/findings.md +8 -0
  186. package/.torusguard/runs/run-20260912-220200-audit/manifest.json +12 -0
  187. package/.torusguard/runs/run-20260912-220200-audit/recheck.md +6 -0
  188. package/.torusguard/runs/run-20260912-220200-audit/summary.md +5 -0
  189. package/.torusguard/runs/run-20260912-220227-audit/findings.json +1 -0
  190. package/.torusguard/runs/run-20260912-220227-audit/findings.md +8 -0
  191. package/.torusguard/runs/run-20260912-220227-audit/manifest.json +12 -0
  192. package/.torusguard/runs/run-20260912-220227-audit/recheck.md +6 -0
  193. package/.torusguard/runs/run-20260912-220227-audit/summary.md +5 -0
  194. package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  195. package/.torusguard/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
  196. package/.torusguard/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
  197. package/.torusguard/scripts/__pycache__/html_reporter.cpython-311.pyc +0 -0
  198. package/.torusguard/scripts/__pycache__/report_sync.cpython-311.pyc +0 -0
  199. package/.torusguard/scripts/__pycache__/rules_sync.cpython-311.pyc +0 -0
  200. package/.torusguard/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
  201. package/.torusguard/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
  202. package/.torusguard/scripts/apply_runner.py +383 -339
  203. package/.torusguard/scripts/audit_runner.py +1306 -550
  204. package/.torusguard/scripts/finding_scorer.py +14 -2
  205. package/.torusguard/scripts/harden_runner.py +628 -375
  206. package/.torusguard/scripts/recheck_runner.py +248 -221
  207. package/.torusguard/scripts/recipes_runner.py +137 -130
  208. package/.torusguard/scripts/report_sync.py +423 -0
  209. package/.torusguard/scripts/sarif_exporter.py +116 -116
  210. package/.torusguard/scripts/term_ui.py +162 -0
  211. package/.torusguard/skills/torusguard/SKILL.md +61 -31
  212. package/.torusguard/skills/torusguard-apply/SKILL.md +80 -46
  213. package/.torusguard/skills/torusguard-audit/SKILL.md +83 -70
  214. package/.torusguard/skills/torusguard-authorize/SKILL.md +5 -4
  215. package/.torusguard/skills/torusguard-exploit-check/SKILL.md +6 -5
  216. package/.torusguard/skills/torusguard-full/SKILL.md +1 -1
  217. package/.torusguard/skills/torusguard-harden/SKILL.md +94 -63
  218. package/.torusguard/skills/torusguard-init/SKILL.md +64 -52
  219. package/.torusguard/skills/torusguard-recheck/SKILL.md +77 -53
  220. package/.torusguard/skills/torusguard-report/SKILL.md +72 -54
  221. package/.torusguard/skills/torusguard-status/SKILL.md +58 -42
  222. package/.torusguard/skills/torusguard-verify/SKILL.md +8 -7
  223. package/.torusguard/skills/torusguard-web-validate/SKILL.md +8 -7
  224. package/.torusguard/snapshots/run-20260912-215731-audit/demo/playground/vulnerable_nextjs/actions.ts.bak +24 -0
  225. package/.torusguard/snapshots/run-20260912-215731-audit/examples/hardened-react-express/server/index.js.bak +121 -0
  226. package/.torusguard/snapshots/run-20260912-215731-audit/examples/python/fastapi-vuln/main.py.bak +20 -0
  227. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/src/App.jsx.bak +63 -0
  228. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/vite.config.js.bak +12 -0
  229. package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/server/index.js.bak +82 -0
  230. package/.torusguard/workflows/apply.md +11 -4
  231. package/.torusguard/workflows/audit.md +7 -1
  232. package/.torusguard/workflows/authorize.md +2 -1
  233. package/.torusguard/workflows/exploit-check.md +2 -1
  234. package/.torusguard/workflows/harden.md +7 -1
  235. package/.torusguard/workflows/init.md +6 -1
  236. package/.torusguard/workflows/memory.md +2 -1
  237. package/.torusguard/workflows/recheck.md +7 -1
  238. package/.torusguard/workflows/report.md +7 -1
  239. package/.torusguard/workflows/status.md +6 -1
  240. package/.torusguard/workflows/verify.md +6 -1
  241. package/.torusguard/workflows/web-validate.md +2 -1
  242. package/README.md +470 -344
  243. package/bin/torusguard.js +209 -97
  244. package/package.json +1 -1
  245. package/skills/torusguard/SKILL.md +73 -42
  246. package/skills/torusguard/payload/.manifest.json +66 -63
  247. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
  248. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
  249. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
  250. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
  251. package/skills/torusguard/payload/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
  252. package/skills/torusguard/payload/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
  253. package/skills/torusguard/payload/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
  254. package/skills/torusguard/payload/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
  255. package/skills/torusguard/payload/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
  256. package/skills/torusguard/payload/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
  257. package/skills/torusguard/payload/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
  258. package/skills/torusguard/payload/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
  259. package/skills/torusguard/payload/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
  260. package/skills/torusguard/payload/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
  261. package/skills/torusguard/payload/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
  262. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
  263. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
  264. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
  265. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
  266. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
  267. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
  268. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
  269. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
  270. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
  271. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
  272. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
  273. package/skills/torusguard/payload/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
  274. package/skills/torusguard/payload/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
  275. package/skills/torusguard/payload/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
  276. package/skills/torusguard/payload/rules_catalog.json +520 -0
  277. package/skills/torusguard/payload/scripts/apply_runner.py +383 -339
  278. package/skills/torusguard/payload/scripts/audit_runner.py +1306 -550
  279. package/skills/torusguard/payload/scripts/finding_scorer.py +14 -2
  280. package/skills/torusguard/payload/scripts/harden_runner.py +628 -375
  281. package/skills/torusguard/payload/scripts/recheck_runner.py +248 -221
  282. package/skills/torusguard/payload/scripts/recipes_runner.py +137 -130
  283. package/skills/torusguard/payload/scripts/report_sync.py +423 -0
  284. package/skills/torusguard/payload/scripts/sarif_exporter.py +116 -116
  285. package/skills/torusguard/payload/scripts/term_ui.py +162 -0
  286. package/skills/torusguard/payload/skills/torusguard/SKILL.md +75 -42
  287. package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +63 -25
  288. package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +62 -45
  289. package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +11 -5
  290. package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +12 -6
  291. package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +7 -2
  292. package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +71 -36
  293. package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +45 -29
  294. package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +59 -31
  295. package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +52 -30
  296. package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +40 -20
  297. package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +14 -8
  298. package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +14 -8
  299. package/skills/torusguard/payload/workflows/apply.md +11 -4
  300. package/skills/torusguard/payload/workflows/audit.md +7 -1
  301. package/skills/torusguard/payload/workflows/authorize.md +2 -1
  302. package/skills/torusguard/payload/workflows/exploit-check.md +2 -1
  303. package/skills/torusguard/payload/workflows/harden.md +7 -1
  304. package/skills/torusguard/payload/workflows/init.md +6 -1
  305. package/skills/torusguard/payload/workflows/memory.md +2 -1
  306. package/skills/torusguard/payload/workflows/recheck.md +7 -1
  307. package/skills/torusguard/payload/workflows/report.md +7 -1
  308. package/skills/torusguard/payload/workflows/status.md +6 -1
  309. package/skills/torusguard/payload/workflows/verify.md +6 -1
  310. package/skills/torusguard/payload/workflows/web-validate.md +2 -1
  311. package/skills/torusguard-apply/SKILL.md +63 -27
  312. package/skills/torusguard-audit/SKILL.md +62 -50
  313. package/skills/torusguard-authorize/SKILL.md +7 -2
  314. package/skills/torusguard-exploit-check/SKILL.md +7 -2
  315. package/skills/torusguard-full/SKILL.md +7 -2
  316. package/skills/torusguard-harden/SKILL.md +71 -40
  317. package/skills/torusguard-init/SKILL.md +45 -30
  318. package/skills/torusguard-recheck/SKILL.md +59 -32
  319. package/skills/torusguard-report/SKILL.md +52 -31
  320. package/skills/torusguard-status/SKILL.md +40 -21
  321. package/skills/torusguard-verify/SKILL.md +7 -2
  322. package/skills/torusguard-web-validate/SKILL.md +7 -2
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: torusguard-exploit-check
3
3
  description: Safe, non-destructive confirmation of exploitability using inert canary tokens and sentinels.
4
- version: 0.9.2
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/exploit-check.md
6
- tools: Read, Grep, Glob, Bash, Write
6
+ tools: Read, Grep, Glob, Bash, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/safety_gate.py
9
10
  - .torusguard/scripts/finding_scorer.py
10
11
  ---
@@ -48,6 +49,10 @@ Before dispatching any exploitability probe:
48
49
 
49
50
  ---
50
51
 
52
+ ## Living Report Ground Truth
53
+ - Always inspect `security_report.md` at workspace root before acting.
54
+ - Update finding statuses after completion to eliminate hallucination.
55
+
51
56
  ## Safety Constraints
52
57
  - Zero destructive payloads (`DROP`, `DELETE`, `UPDATE`).
53
58
  - No denial-of-service or continuous fuzzing loops.
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: torusguard-full
3
3
  description: Master 7-stage security pipeline orchestrator โ€” coordinates discovery, authorization, static audit, runtime validation, governed remediation, recheck, and reporting.
4
- version: 0.9.2
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/audit.md
6
- tools: Read, Grep, Glob, Bash, Edit, Write
6
+ tools: Read, Grep, Glob, Bash, Edit, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/stack_detect.py
9
10
  - .torusguard/scripts/safety_gate.py
10
11
  - .torusguard/scripts/finding_scorer.py
@@ -53,6 +54,10 @@ Evaluates Evidence (35 pts), Reproduction (25 pts), Corroboration (15 pts), Envi
53
54
 
54
55
  ---
55
56
 
57
+ ## Living Report Ground Truth
58
+ - Always inspect `security_report.md` at workspace root before acting.
59
+ - Update finding statuses after completion to eliminate hallucination.
60
+
56
61
  ## Safety & Governance
57
62
  - Human Gate mandatory before code modifications in Phase 5.
58
63
  - Enforce Ponytail line bounds ($\le 35$ additions, $\le 25$ deletions).
@@ -1,67 +1,98 @@
1
1
  ---
2
2
  name: torusguard-harden
3
- description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions).
4
- version: 1.0.0
3
+ description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions) via CLI or AI Agent.
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/harden.md
6
- tools: Read, Grep, Glob, Write
6
+ tools: Read, Grep, Glob, Write, run_command
7
7
  scripts-binding:
8
- - .torusguard/scripts/run_manager.py
8
+ - .torusguard/scripts/report_sync.py
9
+ - .torusguard/scripts/harden_runner.py
9
10
  - .torusguard/scripts/diff_guard.py
11
+ - .torusguard/scripts/term_ui.py
10
12
  ---
11
13
 
12
14
  # TorusGuard Harden โ€” Governed Remediation & Bundle Packaging
13
15
 
14
16
  ## Objective
15
- Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable 4-artifact remediation bundles ready for review.
17
+ Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable remediation bundles ready for review.
16
18
 
17
19
  ---
18
20
 
19
- ## The Ponytail Protocol
20
- - **Limits:** Additions $\le 35$, Deletions $\le 25$ lines per bundle.
21
- - **Invariants:** Zero full-file rewrites; preserve public APIs and tests.
22
- - **Overflow:** Partition into sequential sub-bundles.
21
+ ## Two Execution Modes
23
22
 
24
- ---
23
+ ### Mode A: Automated CLI Execution (Recommended First Step)
24
+ Run the autonomous remediation engine via the terminal:
25
+ ```bash
26
+ # Harden latest audit run
27
+ npx torusguard harden
25
28
 
26
- ## Bundle Directory Structure
27
- ```
28
- .torusguard/runs/<run_id>/remediation/<finding_id>/
29
- โ”œโ”€โ”€ patch.diff # Standard unified diff with line numbers
30
- โ”œโ”€โ”€ plan.md # Rationale and root-cause breakdown
31
- โ”œโ”€โ”€ verification.md # Test instructions proving fix works
32
- โ””โ”€โ”€ rollback.md # Command or steps to revert patch
33
- ```
29
+ # Harden specific project directory
30
+ npx torusguard harden ./my-project
34
31
 
35
- ---
32
+ # Harden specific run ID
33
+ npx torusguard harden --run run-20260910-121618-audit
36
34
 
37
- ## Execution Steps
35
+ # Machine-readable JSON output
36
+ npx torusguard harden --json
37
+ ```
38
+ **Under the Hood:** Executes `python .torusguard/scripts/harden_runner.py`.
39
+ - Discovers findings in `.torusguard/runs/<run_id>/findings.json`.
40
+ - Matches findings against canonical AST patch templates (`TG-SEC-*`, `TG-INPUT-*`, `TG-DB-*`, `TG-PLATFORM-*`, `TG-AUTH-*`, `TG-DIFF-*`).
41
+ - Validates that every candidate patch strictly satisfies Ponytail bounds ($\le 35$ additions, $\le 25$ deletions).
42
+ - Packages candidate bundles into `.torusguard/runs/<run_id>/bundles/<bundle_id>/` containing `patch.diff`, `minimal_patch_plan.md`, and `metadata.json`.
43
+ - Emits run-level summary `remediation.md`.
44
+ - Renders pixel-perfect 75-column terminal cards.
38
45
 
39
- 1. **Evaluate Findings:** First, review the active run's `findings.md`. If the user has already run the CLI `npx torusguard harden` and it formulated `0` patches (or skipped complex findings), it is **YOUR RESPONSIBILITY** as the AI Agent to manually remediate the remaining findings.
40
- 2. **Read AST Context:** View target file surrounding lines (ยฑ15) using `view_file` to deeply understand the vulnerability.
41
- 3. **Formulate Minimal Fix:** Actively rewrite the code to fix the vulnerability (e.g. parameterize SQL, add tenant filters, use safe DOM APIs). Do NOT wait for the CLI to do it. You must generate the fix. Consult `.torusguard/memory/context.json` for verified idioms.
42
- 4. **Validate Line Churn:** Assert additions $\le 35$ and deletions $\le 25$ via `diff_guard.py`. If it's too complex, partition into sequential sub-bundles.
43
- 5. **Package Bundle Manually:** Write 4 artifacts (`patch.diff`, `plan.md`, `verification.md`, `rollback.md`) into `.torusguard/runs/<run_id>/remediation/<finding_id>/`.
44
- 6. **Flag Sensitive Paths:** Mark changes touching auth or billing with `Requires Sensitive-Path Sign-Off`.
46
+ ### Mode B: In-Session AI Chat Agent Remediation
47
+ When findings require complex architectural changes, or when the automated CLI cannot formulate a template match:
48
+ 1. **Locate Target Finding:** Inspect `.torusguard/runs/<run_id>/findings.md` or `findings.json`.
49
+ 2. **Inspect AST Context:** Read surrounding lines ($\pm 15$) of the vulnerable sink using `view_file`.
50
+ 3. **Formulate Minimal Fix:** Craft a surgical code modification:
51
+ - Parameterize SQL queries (replace concatenation with `?` or `$1` or `%s`).
52
+ - Add tenant isolation (`where: { tenantId }`, `organization_id=...`).
53
+ - Replace unsafe HTML injection (`dangerouslySetInnerHTML`, `.innerHTML = ...`) with safe text rendering (`textContent`, React elements).
54
+ - Sanitize path traversal using `path.basename()` or `os.path.basename()`.
55
+ - Constrain wildcard CORS headers to verified origin environment variables.
56
+ - Restore TLS verification flags (`verify=True`, `rejectUnauthorized: true`).
57
+ 4. **Validate Ponytail Bounds:** Count additions ($\le 35$) and deletions ($\le 25$). Never perform full-file rewrites.
58
+ 5. **Package Bundle Artifacts:** Write bundle under `.torusguard/runs/<run_id>/bundles/<bundle_id>/`:
59
+ - `patch.diff`: Standard unified diff.
60
+ - `minimal_patch_plan.md`: Context, rationale, and diff preview.
61
+ - `metadata.json`: Bundle metadata.
62
+ 6. **Report to Operator:** Present proposed diff card and recommend running `/torusguard apply` or `npx torusguard apply`.
45
63
 
46
64
  ---
47
65
 
48
- ## Safety Constraints
49
- - Dry-run only; do NOT apply modifications directly to source code during harden. Only write to the `patch.diff` artifact.
50
- - Keep surrounding formatting and comments intact.
51
- - Never touch files outside the targeted vulnerable sink.
66
+ ## Remediation Bundle Structure
67
+ ```
68
+ .torusguard/runs/<run_id>/
69
+ โ”œโ”€โ”€ remediation.md # Run-level catalog of formulated candidate patches
70
+ โ””โ”€โ”€ bundles/
71
+ โ””โ”€โ”€ bnd-<rule_id>-<line>-<hash>/
72
+ โ”œโ”€โ”€ patch.diff # Unified diff preview
73
+ โ”œโ”€โ”€ minimal_patch_plan.md # Detailed explanation, rationale, and churn stats
74
+ โ””โ”€โ”€ metadata.json # Machine-readable bundle metadata
75
+ ```
52
76
 
53
77
  ---
54
78
 
55
- ## Output Format
56
- ```markdown
57
- ๐Ÿ› ๏ธ [TorusGuard] Remediation Bundle Packaged (AI Assisted)
58
- - Finding Target: <Finding ID> | File: <Path>
59
- - Line Churn: +<Additions> / -<Deletions> (Ponytail: PASS)
60
- - Sensitive Path: <Yes/No>
61
- - Bundle Path: `.torusguard/runs/<run_id>/remediation/<finding_id>/`
79
+ ## Non-Negotiable Invariants
80
+ - **Ponytail Limit:** Strict upper bound of $\le 35$ additions and $\le 25$ deletions per bundle.
81
+ - **Dry-Run Rule:** Never modify target source code during `harden`. All edits must be reviewed before application in Phase 5 (`apply`).
82
+ - **No Unrelated Churn:** Do not reformat unrelated code, reorder imports, or change styles.
83
+ - **Zero Security Bypasses:** Never insert `# nosec`, `verify=False`, `[AllowAnonymous]`, or `csrf().disable()`.
62
84
 
63
- > [!NOTE]
64
- > This patch was formulated manually by the TorusGuard AI Agent because it required architectural changes beyond the CLI's automated templates.
85
+ ---
65
86
 
66
- Next: Run `/torusguard apply` to review diff and apply with rollback backup.
87
+ ## Output Card Format
88
+ ```markdown
89
+ ### ๐Ÿ› ๏ธ TorusGuard Remediation Bundle Formulated
90
+ - **Target Finding:** `[TG-SEC-001]` at `server/index.js:9`
91
+ - **Ponytail Churn:** +1 / -1 (Compliant <= 35 add, <= 25 del)
92
+ - **Strategy:** Migrated hardcoded JWT secret to environment variable process.env.JWT_SECRET
93
+ - **Bundle Directory:** `.torusguard/runs/<run_id>/bundles/bnd-tg-sec-001-9-a8310c/`
94
+ - **Next Step:** Run `npx torusguard apply` or `/torusguard apply` to review and apply
67
95
  ```
96
+
97
+ ## Living Report Ground Truth
98
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,53 +1,68 @@
1
1
  ---
2
2
  name: torusguard-init
3
- description: Initialize TorusGuard workspace โ€” detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline.
4
- version: 0.9.2
3
+ description: Initialize TorusGuard workspace โ€” detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline via CLI or AI Agent.
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/init.md
6
- tools: Read, Grep, Glob, Write
6
+ tools: Read, Grep, Glob, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/stack_detect.py
10
+ - .torusguard/scripts/term_ui.py
9
11
  ---
10
12
 
11
13
  # TorusGuard Init โ€” Project Stack Discovery & Rule Activation
12
14
 
13
15
  ## Objective
14
- Auto-detect repository technology stack via indicators or `stack_detect.py`, activate framework-tailored `TG-*` security rules into `.torusguard/rules/active/`, and provision `torusguard.json` and `SECURITY.md`.
16
+ Auto-detect repository technology stack across 16+ languages and frameworks, provision the `.torusguard/` workspace structure, activate tailored `TG-*` security rules into `.torusguard/rules/active/`, and generate `SECURITY.md` baseline policies.
15
17
 
16
18
  ---
17
19
 
18
- ## Pre-Flight Check
19
- 1. Verify `.torusguard/` layout (`config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`).
20
- 2. If missing, unpack via `python skills/torusguard/bootstrap.py --target .`.
21
- 3. Check existing `.torusguard/config/torusguard.json` before overwriting.
20
+ ## Two Execution Modes
22
21
 
23
- ---
22
+ ### Mode A: Automated CLI Execution
23
+ Run the workspace initializer from your terminal:
24
+ ```bash
25
+ # Initialize current repository
26
+ npx torusguard init
24
27
 
25
- ## Execution Steps
28
+ # Initialize specific directory
29
+ npx torusguard init ./my-app
26
30
 
27
- 1. **Stack Detection:** Run `python .torusguard/scripts/stack_detect.py .` to detect:
28
- - Python: Django (`manage.py`), FastAPI (`fastapi`), Flask (`flask`), SQLAlchemy.
29
- - Node: Next.js (`"next"`), Express (`"express"`), React/Vite (`"vite"`).
30
- - BaaS: Supabase (`@supabase/supabase-js`), Firebase (`firebase-admin`).
31
- 2. **Handle CLI Failures:** If `stack_detect.py` crashes or is unable to determine the stack, YOU must manually analyze the directory structure and determine the stack.
32
- 3. **Emit Stack Record:** Log detected language, framework, ORM, and client SDKs.
33
- 4. **Activate Tailored Rules:** Copy matching `TG-*` rules from `.torusguard/rules/` into `.torusguard/rules/active/`.
34
- 5. **Provision Policy:** Create `SECURITY.md` if absent, configuring responsible disclosure contacts.
35
- 6. **Write Configuration:** Persist detected stack and active rules count to `.torusguard/config/torusguard.json`.
31
+ # Force re-initialization (overwriting existing configuration)
32
+ npx torusguard init --force
36
33
 
37
- ---
34
+ # Explicitly specify stack (e.g. react, nextjs, django, fastapi, express)
35
+ npx torusguard init --stack express
36
+ ```
37
+ **Under the Hood:**
38
+ - Runs `stack_detect.py` to inspect package files (`package.json`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `Gemfile`, `composer.json`, `*.csproj`).
39
+ - Detects backend frameworks, frontend libraries, ORMs (Prisma, Mongoose, SQLAlchemy, Django ORM), and authentication systems.
40
+ - Scaffolds `.torusguard/` directory tree: `config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`, `memory/`, `snapshots/`.
41
+ - Copies tailored rule definitions into `.torusguard/rules/active/`.
42
+ - Provisions `SECURITY.md` with standard responsible disclosure contacts.
43
+ - Writes `.torusguard/config/torusguard.json`.
44
+ - Displays 75-column terminal cards.
38
45
 
39
- ## Safety Constraints
40
- - Never overwrite custom rules in `.torusguard/rules/active/` without prompt.
41
- - Retain existing `SECURITY.md` if already established by repository owners.
42
- - Strictly read-only detection against source files.
46
+ ### Mode B: In-Session AI Chat Agent Initialization
47
+ When initializing a workspace directly in AI chat:
48
+ 1. **Detect Stack:** Inspect root files (`package.json`, `requirements.txt`, etc.) to determine languages and frameworks.
49
+ 2. **Bootstrap Structure:** Ensure `.torusguard/` structure exists. If missing, run `python skills/torusguard/bootstrap.py --target .`.
50
+ 3. **Activate Rules:** Populate `.torusguard/rules/active/` with applicable rule files from `rules/`.
51
+ 4. **Provision Policy:** Create `SECURITY.md` if not already present.
52
+ 5. **Write Configuration:** Persist settings into `.torusguard/config/torusguard.json`.
53
+ 6. **Prompt Audit:** Advise the user to run `npx torusguard audit` or `/torusguard audit`.
43
54
 
44
55
  ---
45
56
 
46
- ## Output Format
57
+ ## Output Card Format
47
58
  ```markdown
48
- ๐Ÿ›ก๏ธ [TorusGuard] Workspace Initialized (AI Assisted)
49
- - Primary Stack: <Detected Stack> | Components: <Backend/Frontend/DB>
50
- - Active Rules: <Count> rules enabled in `.torusguard/rules/active/`
51
- - Configuration: `.torusguard/config/torusguard.json` written
52
- Next: Run `/torusguard audit` to execute static security scan.
59
+ ### ๐Ÿ›ก๏ธ TorusGuard Workspace Initialized Successfully
60
+ - **Primary Stack:** Node.js / React / Express
61
+ - **Active Rules:** 74 canonical security rules enabled in `.torusguard/rules/active/`
62
+ - **Configuration:** Written to `.torusguard/config/torusguard.json`
63
+ - **Security Policy:** Baseline `SECURITY.md` generated
64
+ - **Next Step:** Run `npx torusguard audit` or `/torusguard audit` to scan for flaws
53
65
  ```
66
+
67
+ ## Living Report Ground Truth
68
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,54 +1,81 @@
1
1
  ---
2
2
  name: torusguard-recheck
3
- description: Execute targeted differential AST re-scan against modified files, verify fix closure, and assert zero regressions.
4
- version: 1.0.0
3
+ description: Execute targeted differential AST re-scan against modified files, verify fix closure, and assert zero regressions via CLI or AI Agent.
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/recheck.md
6
- tools: Read, Grep, Glob, Write
6
+ tools: Read, Grep, Glob, Write, run_command
7
7
  scripts-binding:
8
- - .torusguard/scripts/run_manager.py
9
- - .torusguard/scripts/finding_scorer.py
8
+ - .torusguard/scripts/report_sync.py
9
+ - .torusguard/scripts/recheck_runner.py
10
+ - .torusguard/scripts/audit_runner.py
11
+ - .torusguard/scripts/memory_engine.py
12
+ - .torusguard/scripts/term_ui.py
10
13
  ---
11
14
 
12
- # TorusGuard Recheck โ€” Targeted Differential Audit & Regression Verification
15
+ # TorusGuard Recheck โ€” Targeted Differential Audit & Fix Closure
13
16
 
14
17
  ## Objective
15
- Re-scan only files modified by remediation patches, confirming that targeted vulnerability sinks have been neutralized and verifying that no new security regressions were introduced.
18
+ Execute differential security re-scans strictly scoped to modified files and adjacent boundaries, verifying that targeted vulnerability patterns have been eliminated and asserting zero security regressions.
16
19
 
17
20
  ---
18
21
 
19
- ## Execution Steps
22
+ ## Two Execution Modes
20
23
 
21
- 1. **Identify Modified Files:** Read `apply-log.json` from active run directory.
22
- 2. **Handle CLI Failures:** If `npx torusguard recheck` crashes or reports a false negative, YOU must act as the manual arbiter.
23
- 3. **Execute Differential Scan:** Re-run active `TG-*` rules exclusively against modified files. If doing this manually, use `view_file` to read the patched file and cross-reference with the active rules.
24
- 4. **Evaluate Finding Status:** Transition finding state according to transition rules below.
25
- 5. **Assert Regression-Free:** Ensure no new security warnings triggered on altered lines.
26
- 6. **Update State & Memory:** Record status in `findings.json` and sync verified results to memory engine.
27
- 7. **Emit Recheck Report:** Save summary in `.torusguard/runs/<run_id>/recheck-report.md`.
24
+ ### Mode A: Automated CLI Execution
25
+ Run the differential recheck engine from the terminal:
26
+ ```bash
27
+ # Recheck the latest applied run
28
+ npx torusguard recheck
28
29
 
29
- ---
30
+ # Recheck a specific project directory
31
+ npx torusguard recheck ./my-project
32
+
33
+ # Recheck a specific run ID
34
+ npx torusguard recheck --run run-20260910-121618-audit
30
35
 
31
- ## State Transition Rules
32
- - **`Fixed`:** Targeted vulnerable AST pattern is absent and no new issues appear on modified lines.
33
- - **`Partially Fixed`:** Vulnerability surface was reduced but sanitization remains incomplete.
34
- - **`Not Fixed`:** Vulnerable AST sink remains present in patched file.
35
- - **`Regression`:** Patch introduced a new security rule violation on modified lines.
36
+ # Machine-readable JSON output
37
+ npx torusguard recheck --json
38
+ ```
39
+ **Under the Hood:** Executes `python .torusguard/scripts/recheck_runner.py`.
40
+ - Evaluates applied candidate bundles from `.torusguard/runs/<run_id>/bundles/`.
41
+ - Executes single-file targeted differential AST scans via `audit_runner.scan_file()`.
42
+ - Calculates formal status transitions:
43
+ - `โœ” [Confirmed Fixed]`: Vulnerable pattern absent, zero regressions.
44
+ - `โœ– [Regressed]`: New security finding introduced by patch.
45
+ - `โš  [Unresolved]`: Vulnerable sink still present.
46
+ - Emits run-level transition artifact: `.torusguard/runs/<run_id>/recheck.md`.
47
+ - Synchronizes verification telemetry to `.torusguard/memory/events.json`.
48
+ - Displays 75-column terminal cards.
49
+
50
+ ### Mode B: In-Session AI Chat Agent Differential Scan
51
+ When evaluating patches directly in AI chat:
52
+ 1. **Identify Modified Files:** Read `diff_summary.md` or git status for files modified in the active run.
53
+ 2. **Re-Scan Sinks:** View the target file and verify that the specific rule violation (e.g. `TG-INPUT-003`, `TG-PLATFORM-001`) is no longer triggered.
54
+ 3. **Assert Zero Regressions:** Verify that no new vulnerabilities (like raw concatenation or unvalidated input) were introduced by the fix.
55
+ 4. **Update Status:** Log outcome in `.torusguard/runs/<run_id>/recheck.md`.
56
+ 5. **Memory Telemetry:** Record verification event with `memory_engine.record_event("fix_verified", ...)`.
36
57
 
37
58
  ---
38
59
 
39
- ## Safety Constraints
40
- - Restrict AST scan strictly to modified files and direct callers.
41
- - If regression is detected, halt and recommend immediate rollback via `.bak` snapshot. If CLI rollback fails, you MUST manually revert the file using your write tools.
42
- - Read-only differential analysis.
60
+ ## Recheck Status Transitions
61
+ | Outcome | Visual Indicator | Meaning | Required Action |
62
+ | :--- | :--- | :--- | :--- |
63
+ | **Confirmed Fixed** | `โœ” [Confirmed Fixed]` | Sink eliminated, zero regressions | Proceed to Posture Report |
64
+ | **Unresolved** | `โš  [Unresolved]` | Flaw still present in file | Re-harden with alternative pattern |
65
+ | **Regressed** | `โœ– [Regressed]` | New security flaw introduced | Instant `npx torusguard rollback` |
43
66
 
44
67
  ---
45
68
 
46
- ## Output Format
69
+ ## Output Card Format
47
70
  ```markdown
48
- โœ… [TorusGuard] Differential Recheck Completed (AI Assisted)
49
- - Modified Files Scanned: <Count>
50
- - Target Finding: <Finding ID> โ”€โ”€โ–บ FIXED
51
- - Regressions Detected: 0
52
- - Report: `.torusguard/runs/<run_id>/recheck-report.md`
53
- Next: Run `/torusguard report` to export final SARIF and release summary.
71
+ ### โœ… TorusGuard Differential Recheck Completed
72
+ - **Run ID:** `run-20260910-121618-audit`
73
+ - **Confirmed Fixed:** 2 vulnerabilities verified closed
74
+ - **Regressions:** 0 detected
75
+ - **Unresolved:** 0
76
+ - **Artifact:** `.torusguard/runs/<run_id>/recheck.md`
77
+ - **Next Step:** Run `npx torusguard report --html` for visual dashboard
54
78
  ```
79
+
80
+ ## Living Report Ground Truth
81
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,55 +1,76 @@
1
1
  ---
2
2
  name: torusguard-report
3
- description: Generate unified security posture reports and export OASIS SARIF v2.1.0 logs for CI/CD integration.
4
- version: 0.9.2
3
+ description: Generate executive posture reports, export OASIS SARIF v2.1.0 logs, and render dark-mode HTML dashboards via CLI or AI Agent.
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/report.md
6
- tools: Read, Grep, Glob, Write
6
+ tools: Read, Grep, Glob, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
9
+ - .torusguard/scripts/html_reporter.py
8
10
  - .torusguard/scripts/sarif_exporter.py
9
11
  - .torusguard/scripts/run_manager.py
12
+ - .torusguard/scripts/term_ui.py
10
13
  ---
11
14
 
12
- # TorusGuard Report โ€” Unified Security Posture Report & SARIF Export
15
+ # TorusGuard Report โ€” Posture Reporting & SARIF / HTML Export
13
16
 
14
17
  ## Objective
15
- Aggregate findings, verification traces, and recheck results into a signed executive security summary and export schema-compliant OASIS SARIF v2.1.0 logs for CI/CD pipelines.
18
+ Aggregate findings, verification traces, and recheck results into an auditable executive security report, export schema-compliant OASIS SARIF v2.1.0 logs for CI/CD pipelines, and render zero-dependency single-file visual HTML posture reports.
16
19
 
17
20
  ---
18
21
 
19
- ## Execution Steps
22
+ ## Two Execution Modes
20
23
 
21
- 1. **Aggregate Run Data:** Read findings, verified evidence, and recheck records from active run.
22
- 2. **Handle CLI Failures:** If `npx torusguard report --html` or SARIF export crashes, YOU must manually gather the metrics and format the report.
23
- 3. **Export OASIS SARIF v2.1.0:**
24
- ```bash
25
- python .torusguard/scripts/sarif_exporter.py --run <run_dir> --output <run_dir>/results.sarif
26
- ```
27
- 4. **Compile Executive Markdown/HTML Report:** Generate `report.md` or `.html` with posture score, open/closed finding tables, and risk breakdown. Make sure the polyglot stack detected during audit is explicitly summarized.
28
- 5. **Update Run Manifest:** Finalize `manifest.json` status counts.
29
- 6. **Archive Release Artifacts:** Ensure `report.md` and `results.sarif` are serialized to disk.
24
+ ### Mode A: Automated CLI Execution
25
+ Run the report engine from your terminal:
26
+ ```bash
27
+ # Generate visual dark-mode HTML dashboard
28
+ npx torusguard report --html
30
29
 
31
- ---
30
+ # Export OASIS SARIF v2.1.0 for GitHub Code Scanning / CI
31
+ npx torusguard report --sarif
32
+
33
+ # Generate both HTML and SARIF for latest run
34
+ npx torusguard report --html --sarif
35
+
36
+ # Generate report for a specific project directory
37
+ npx torusguard report ./examples/vulnerable-react-express --html
32
38
 
33
- ## SARIF v2.1.0 Output Specification
34
- - **Version:** `$schema: https://docs.oasis-open.org/sarif/sarif/v2.1.0/cos02/schemas/sarif-schema-2.1.0.json`, `version: 2.1.0`.
35
- - **Tool Driver:** `name: TorusGuard`, `semanticVersion: 0.9.2`, full rules catalog in `driver.rules`.
36
- - **Category Hygiene:** Set `automationDetails.id: "torusguard/static"` to avoid collisions in multi-analysis CI.
37
- - **Fingerprinting:** Populate `partialFingerprints.primaryLocationLineHash` with SHA-256 context hash.
39
+ # Target a specific run ID
40
+ npx torusguard report --run run-20260910-121618-audit --html
41
+ ```
42
+ **Under the Hood:**
43
+ - Invokes `python .torusguard/scripts/html_reporter.py` to compile self-contained, offline-ready HTML reports with dynamic filtering, posture gauge, and cluster summaries at `.torusguard/runs/<run_id>/report.html`.
44
+ - Invokes `python .torusguard/scripts/sarif_exporter.py` to produce OASIS SARIF v2.1.0 logs at `.torusguard/runs/<run_id>/results.sarif`.
45
+ - Finalizes `manifest.json` metrics and updates historical posture scoring.
46
+ - Displays 75-column terminal cards.
47
+
48
+ ### Mode B: In-Session AI Chat Agent Reporting
49
+ When generating security posture summaries in AI chat:
50
+ 1. **Aggregate Run Data:** Inspect `findings.json`, `remediation.md`, and `recheck.md` from the active run.
51
+ 2. **Calculate Posture Score:** Compute posture score ($0$โ€“$100$) based on severity weighting (Critical: 25, High: 15, Medium: 5, Low: 2).
52
+ 3. **Format Executive Card:** Present finding counts, closed vulnerabilities, remaining risks, and compliance posture.
53
+ 4. **Export Artifacts:** Verify that `report.html` and `results.sarif` are serialized to disk.
38
54
 
39
55
  ---
40
56
 
41
- ## Safety Constraints
42
- - Redact all tokens, passwords, and API keys before saving report.
43
- - Strictly read-only reporting; no source code modifications.
44
- - Ensure SARIF passes JSON schema validation.
57
+ ## SARIF v2.1.0 Specification
58
+ - **Schema:** `https://docs.oasis-open.org/sarif/sarif/v2.1.0/cos02/schemas/sarif-schema-2.1.0.json`
59
+ - **Tool Driver:** `name: TorusGuard`, `semanticVersion: 1.3.5`, full rules catalog in `driver.rules`.
60
+ - **Automation Details:** `automationDetails.id: "torusguard/static"` to avoid collisions in multi-scanner CI/CD pipelines.
61
+ - **Fingerprints:** `partialFingerprints.primaryLocationLineHash` with SHA-256 context hash.
45
62
 
46
63
  ---
47
64
 
48
- ## Output Format
65
+ ## Output Card Format
49
66
  ```markdown
50
- ๐Ÿ“Š [TorusGuard] Security Posture Report Emitted (AI Assisted)
51
- - Run ID: <Run ID> | Posture Score: <Score>/100
52
- - Findings: <Total> (<Fixed> Fixed ยท <Open> Open)
53
- - SARIF Export: `.torusguard/runs/<run_id>/results.sarif`
54
- - Executive Report: `.torusguard/runs/<run_id>/report.md`
67
+ ### ๐Ÿ“Š TorusGuard Security Posture Report Emitted
68
+ - **Run ID:** `run-20260910-121618-audit`
69
+ - **Posture Score:** 85 / 100 (HIGH SECURITY)
70
+ - **Findings Summary:** 3 Evaluated ยท 2 Confirmed Fixed ยท 1 Unresolved
71
+ - **HTML Dashboard:** `.torusguard/runs/<run_id>/report.html` (View in browser)
72
+ - **SARIF v2.1.0 Export:** `.torusguard/runs/<run_id>/results.sarif` (Ready for CI)
55
73
  ```
74
+
75
+ ## Living Report Ground Truth
76
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,11 +1,13 @@
1
1
  ---
2
2
  name: torusguard-status
3
- description: Display current TorusGuard security posture, active configuration, rules catalog, and run history.
4
- version: 0.9.2
3
+ description: Display current TorusGuard security posture, active configuration, rules catalog, and run history via CLI or AI Agent.
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/status.md
6
- tools: Read, Grep, Glob
6
+ tools: Read, Grep, Glob, run_command, Write
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/run_manager.py
10
+ - .torusguard/scripts/term_ui.py
9
11
  ---
10
12
 
11
13
  # TorusGuard Status โ€” Workspace Security Posture & Diagnostic Overview
@@ -15,29 +17,46 @@ Provide an instant diagnostic summary of the repository's security state, active
15
17
 
16
18
  ---
17
19
 
18
- ## Execution Steps
20
+ ## Two Execution Modes
19
21
 
20
- 1. **Read Configuration:** Parse `.torusguard/config/torusguard.json` to verify initialization state and detected framework stack.
21
- 2. **Handle CLI Failures:** If `npx torusguard status` throws an error, YOU must manually parse the local files (e.g. `torusguard.json`, `scope.json`) to deduce the status instead of just returning the CLI error.
22
- 3. **Enumerate Active Rules:** Count rule files physically present in `.torusguard/rules/active/`.
23
- 4. **Inspect Run History:** List historical run folders in `.torusguard/runs/` via `run_manager.py`.
24
- 5. **Check Authorization Scope:** Check `.torusguard/config/scope.json` for active targets and TTL expiration.
25
- 6. **Render Diagnostic Overview:** Output formatted status card.
22
+ ### Mode A: Automated CLI Execution
23
+ Run the diagnostic overview from your terminal:
24
+ ```bash
25
+ # Display 75-column status cards
26
+ npx torusguard status
26
27
 
27
- ---
28
+ # Check status of specific project directory
29
+ npx torusguard status ./examples/vulnerable-react-express
28
30
 
29
- ## Safety Constraints
30
- - Read-only execution; zero file modifications.
31
- - Handle uninitialized workspaces gracefully with advice to run `/torusguard init` (or manual AI initialization).
31
+ # Output machine-readable JSON
32
+ npx torusguard status --json
33
+ ```
34
+ **Under the Hood:**
35
+ - Evaluates `.torusguard/config/torusguard.json` for initialized status and detected stack.
36
+ - Enumerates active rules in `.torusguard/rules/active/` (or canonical 74 rules).
37
+ - Scans `.torusguard/runs/` for run history, finding counts, and verified fixes.
38
+ - Inspects `.torusguard/config/scope.json` for authorized runtime validation targets.
39
+ - Displays mathematically aligned 75-column terminal cards.
40
+
41
+ ### Mode B: In-Session AI Chat Agent Status Check
42
+ When checking workspace status in AI chat:
43
+ 1. **Verify Workspace Setup:** Check if `.torusguard/` exists on disk.
44
+ 2. **Inspect Active Config:** Read `.torusguard/config/torusguard.json` for detected stack, framework, and rules.
45
+ 3. **Inspect Latest Run:** Find the latest run directory under `.torusguard/runs/` and read `manifest.json`.
46
+ 4. **Inspect Memory Engine:** Check `.torusguard/memory/patterns.json` for captured Golden Fix Recipes.
47
+ 5. **Render Diagnostic Card:** Present an overview of posture, stack, and recommended next steps.
32
48
 
33
49
  ---
34
50
 
35
- ## Output Format
51
+ ## Output Card Format
36
52
  ```markdown
37
- ๐Ÿ›ก๏ธ [TorusGuard] Workspace Status Overview (AI Assisted)
38
- - Version: v0.9.2 | Stack: <Detected Framework>
39
- - Active Rules: <Count> rules active in `.torusguard/rules/active/`
40
- - Historical Runs: <Count> runs recorded
41
- - Scope: <Authorized (TTL Active) / Expired / Unconfigured>
42
- - Posture: <SECURE / ACTION REQUIRED>
53
+ ### ๐Ÿ›ก๏ธ TorusGuard Workspace Status Overview
54
+ - **Version:** v1.3.3 | **Stack:** Node.js / React / Express
55
+ - **Active Rules:** 74 canonical security rules enabled
56
+ - **Historical Runs:** 3 runs recorded
57
+ - **Golden Recipes:** 4 distilled into persistent memory
58
+ - **Overall Posture:** SECURE (All targeted vulnerabilities verified closed)
43
59
  ```
60
+
61
+ ## Living Report Ground Truth
62
+ - Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
@@ -1,10 +1,11 @@
1
1
  ---
2
2
  name: torusguard-verify
3
3
  description: Verify finding evidence sufficiency, audit live code line matches, and calibrate 0โ€“100 confidence scores.
4
- version: 0.9.2
4
+ version: 1.3.5
5
5
  workflow: .torusguard/workflows/verify.md
6
- tools: Read, Grep, Glob, Write
6
+ tools: Read, Grep, Glob, Write, run_command
7
7
  scripts-binding:
8
+ - .torusguard/scripts/report_sync.py
8
9
  - .torusguard/scripts/finding_scorer.py
9
10
  ---
10
11
 
@@ -39,6 +40,10 @@ A finding is verified as sufficient when:
39
40
 
40
41
  ---
41
42
 
43
+ ## Living Report Ground Truth
44
+ - Always inspect `security_report.md` at workspace root before acting.
45
+ - Update finding statuses after completion to eliminate hallucination.
46
+
42
47
  ## Safety Constraints
43
48
  - Read-only analysis; no files are modified.
44
49
  - Never guess line numbers; always verify via active disk read.