@trac3er/oh-my-god 2.1.0 → 2.1.4

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 (371) hide show
  1. package/.agents/skills/omg/AGENTS.fragment.md +2 -2
  2. package/.agents/skills/omg/algorithms/SKILL.md +1 -1
  3. package/.agents/skills/omg/algorithms/openai.yaml +1 -1
  4. package/.agents/skills/omg/api-twin/SKILL.md +1 -1
  5. package/.agents/skills/omg/api-twin/openai.yaml +1 -1
  6. package/.agents/skills/omg/claim-judge/SKILL.md +1 -1
  7. package/.agents/skills/omg/claim-judge/openai.yaml +1 -1
  8. package/.agents/skills/omg/codex-rules.md +1 -1
  9. package/.agents/skills/omg/control-plane/SKILL.md +1 -1
  10. package/.agents/skills/omg/control-plane/openai.yaml +1 -1
  11. package/.agents/skills/omg/data-lineage/SKILL.md +1 -1
  12. package/.agents/skills/omg/data-lineage/openai.yaml +1 -1
  13. package/.agents/skills/omg/delta-classifier/SKILL.md +1 -1
  14. package/.agents/skills/omg/delta-classifier/openai.yaml +1 -1
  15. package/.agents/skills/omg/eval-gate/SKILL.md +1 -1
  16. package/.agents/skills/omg/eval-gate/openai.yaml +1 -1
  17. package/.agents/skills/omg/health/SKILL.md +1 -1
  18. package/.agents/skills/omg/health/openai.yaml +1 -1
  19. package/.agents/skills/omg/hook-governor/SKILL.md +1 -1
  20. package/.agents/skills/omg/hook-governor/openai.yaml +1 -1
  21. package/.agents/skills/omg/incident-replay/SKILL.md +1 -1
  22. package/.agents/skills/omg/incident-replay/openai.yaml +1 -1
  23. package/.agents/skills/omg/lsp-pack/SKILL.md +1 -1
  24. package/.agents/skills/omg/lsp-pack/openai.yaml +1 -1
  25. package/.agents/skills/omg/mcp-fabric/SKILL.md +1 -1
  26. package/.agents/skills/omg/mcp-fabric/openai.yaml +1 -1
  27. package/.agents/skills/omg/plan-council/SKILL.md +1 -1
  28. package/.agents/skills/omg/plan-council/openai.yaml +1 -1
  29. package/.agents/skills/omg/preflight/SKILL.md +1 -1
  30. package/.agents/skills/omg/preflight/openai.yaml +1 -1
  31. package/.agents/skills/omg/proof-gate/SKILL.md +1 -1
  32. package/.agents/skills/omg/proof-gate/openai.yaml +1 -1
  33. package/.agents/skills/omg/remote-supervisor/SKILL.md +1 -1
  34. package/.agents/skills/omg/remote-supervisor/openai.yaml +1 -1
  35. package/.agents/skills/omg/robotics/SKILL.md +1 -1
  36. package/.agents/skills/omg/robotics/openai.yaml +1 -1
  37. package/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +1 -1
  38. package/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +1 -1
  39. package/.agents/skills/omg/security-check/SKILL.md +1 -1
  40. package/.agents/skills/omg/security-check/openai.yaml +1 -1
  41. package/.agents/skills/omg/test-intent-lock/SKILL.md +1 -1
  42. package/.agents/skills/omg/test-intent-lock/openai.yaml +1 -1
  43. package/.agents/skills/omg/tracebank/SKILL.md +1 -1
  44. package/.agents/skills/omg/tracebank/openai.yaml +1 -1
  45. package/.agents/skills/omg/vision/SKILL.md +1 -1
  46. package/.agents/skills/omg/vision/openai.yaml +1 -1
  47. package/.claude-plugin/marketplace.json +3 -3
  48. package/.claude-plugin/plugin.json +1 -1
  49. package/CHANGELOG.md +16 -0
  50. package/CLI-ADAPTER-MAP.md +3 -3
  51. package/OMG-setup.sh +114 -1
  52. package/OMG_COMPAT_CONTRACT.md +1 -1
  53. package/README.md +2 -1
  54. package/artifacts/release/.claude-plugin/marketplace.json +3 -3
  55. package/artifacts/release/.claude-plugin/plugin.json +1 -1
  56. package/artifacts/release/OMG_COMPAT_CONTRACT.md +1 -1
  57. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
  58. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  59. package/artifacts/release/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  60. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/plugin.json +26 -9
  61. package/artifacts/release/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  62. package/artifacts/release/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  63. package/artifacts/release/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
  64. package/artifacts/release/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
  65. package/artifacts/release/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  66. package/artifacts/release/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  67. package/artifacts/release/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  68. package/artifacts/release/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  69. package/artifacts/release/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
  70. package/artifacts/release/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  71. package/artifacts/release/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  72. package/artifacts/release/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  73. package/artifacts/release/dist/enterprise/bundle/registry/bundles/plan-council.yaml +1 -1
  74. package/artifacts/release/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  75. package/artifacts/release/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +1 -1
  76. package/artifacts/release/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  77. package/artifacts/release/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  78. package/artifacts/release/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  79. package/artifacts/release/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  80. package/artifacts/release/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  81. package/artifacts/release/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  82. package/artifacts/release/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
  83. package/artifacts/release/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
  84. package/artifacts/release/dist/enterprise/bundle/settings.json +3 -3
  85. package/artifacts/release/dist/enterprise/manifest.json +30 -40
  86. package/artifacts/release/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
  87. package/artifacts/release/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  88. package/artifacts/release/dist/public/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  89. package/artifacts/release/dist/public/bundle/plugins/advanced/plugin.json +26 -9
  90. package/artifacts/release/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  91. package/artifacts/release/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  92. package/artifacts/release/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
  93. package/artifacts/release/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
  94. package/artifacts/release/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  95. package/artifacts/release/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  96. package/artifacts/release/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  97. package/artifacts/release/dist/public/bundle/registry/bundles/health.yaml +1 -1
  98. package/artifacts/release/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
  99. package/artifacts/release/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  100. package/artifacts/release/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  101. package/artifacts/release/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  102. package/artifacts/release/dist/public/bundle/registry/bundles/plan-council.yaml +1 -1
  103. package/artifacts/release/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  104. package/artifacts/release/dist/public/bundle/registry/bundles/proof-gate.yaml +1 -1
  105. package/artifacts/release/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  106. package/artifacts/release/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  107. package/artifacts/release/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  108. package/artifacts/release/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  109. package/artifacts/release/dist/public/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  110. package/artifacts/release/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  111. package/artifacts/release/dist/public/bundle/registry/bundles/vision.yaml +1 -1
  112. package/artifacts/release/dist/public/bundle/registry/omg-capability.schema.json +1 -1
  113. package/artifacts/release/dist/public/bundle/settings.json +3 -3
  114. package/artifacts/release/dist/public/manifest.json +30 -40
  115. package/artifacts/release/plugins/advanced/plugin.json +26 -9
  116. package/artifacts/release/registry/bundles/algorithms.yaml +1 -1
  117. package/artifacts/release/registry/bundles/api-twin.yaml +1 -1
  118. package/artifacts/release/registry/bundles/claim-judge.yaml +1 -1
  119. package/artifacts/release/registry/bundles/control-plane.yaml +1 -1
  120. package/artifacts/release/registry/bundles/data-lineage.yaml +1 -1
  121. package/artifacts/release/registry/bundles/delta-classifier.yaml +1 -1
  122. package/artifacts/release/registry/bundles/eval-gate.yaml +1 -1
  123. package/artifacts/release/registry/bundles/health.yaml +1 -1
  124. package/artifacts/release/registry/bundles/hook-governor.yaml +1 -1
  125. package/artifacts/release/registry/bundles/incident-replay.yaml +1 -1
  126. package/artifacts/release/registry/bundles/lsp-pack.yaml +1 -1
  127. package/artifacts/release/registry/bundles/mcp-fabric.yaml +1 -1
  128. package/artifacts/release/registry/bundles/plan-council.yaml +1 -1
  129. package/artifacts/release/registry/bundles/preflight.yaml +1 -1
  130. package/artifacts/release/registry/bundles/proof-gate.yaml +1 -1
  131. package/artifacts/release/registry/bundles/remote-supervisor.yaml +1 -1
  132. package/artifacts/release/registry/bundles/robotics.yaml +1 -1
  133. package/artifacts/release/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  134. package/artifacts/release/registry/bundles/security-check.yaml +1 -1
  135. package/artifacts/release/registry/bundles/test-intent-lock.yaml +1 -1
  136. package/artifacts/release/registry/bundles/tracebank.yaml +1 -1
  137. package/artifacts/release/registry/bundles/vision.yaml +1 -1
  138. package/artifacts/release/registry/omg-capability.schema.json +1 -1
  139. package/artifacts/release/settings.json +3 -3
  140. package/build/lib/commands/OMG:profile-review.md +43 -0
  141. package/build/lib/commands/OMG:validate.md +59 -0
  142. package/build/lib/control_plane/service.py +40 -1
  143. package/build/lib/hooks/_agent_registry.py +2 -0
  144. package/build/lib/hooks/firewall.py +263 -4
  145. package/build/lib/hooks/intentgate-keyword-detector.py +15 -3
  146. package/build/lib/hooks/policy_engine.py +77 -0
  147. package/build/lib/hooks/prompt-enhancer.py +146 -0
  148. package/build/lib/hooks/session-end-capture.py +374 -6
  149. package/build/lib/hooks/session-start.py +13 -35
  150. package/build/lib/hooks/setup_wizard.py +333 -1
  151. package/build/lib/hooks/shadow_manager.py +111 -2
  152. package/build/lib/hooks/stop_dispatcher.py +108 -4
  153. package/build/lib/plugins/advanced/plugin.json +26 -9
  154. package/build/lib/plugins/core/plugin.json +44 -11
  155. package/build/lib/registry/bundles/algorithms.yaml +1 -1
  156. package/build/lib/registry/bundles/api-twin.yaml +1 -1
  157. package/build/lib/registry/bundles/claim-judge.yaml +1 -1
  158. package/build/lib/registry/bundles/control-plane.yaml +1 -1
  159. package/build/lib/registry/bundles/data-lineage.yaml +1 -1
  160. package/build/lib/registry/bundles/delta-classifier.yaml +1 -1
  161. package/build/lib/registry/bundles/eval-gate.yaml +1 -1
  162. package/build/lib/registry/bundles/health.yaml +1 -1
  163. package/build/lib/registry/bundles/hook-governor.yaml +1 -1
  164. package/build/lib/registry/bundles/incident-replay.yaml +1 -1
  165. package/build/lib/registry/bundles/lsp-pack.yaml +1 -1
  166. package/build/lib/registry/bundles/mcp-fabric.yaml +1 -1
  167. package/build/lib/registry/bundles/plan-council.yaml +1 -1
  168. package/build/lib/registry/bundles/preflight.yaml +1 -1
  169. package/build/lib/registry/bundles/proof-gate.yaml +1 -1
  170. package/build/lib/registry/bundles/remote-supervisor.yaml +1 -1
  171. package/build/lib/registry/bundles/robotics.yaml +1 -1
  172. package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  173. package/build/lib/registry/bundles/security-check.yaml +1 -1
  174. package/build/lib/registry/bundles/test-intent-lock.yaml +1 -1
  175. package/build/lib/registry/bundles/tracebank.yaml +1 -1
  176. package/build/lib/registry/bundles/vision.yaml +1 -1
  177. package/build/lib/registry/omg-capability.schema.json +1 -1
  178. package/build/lib/runtime/adoption.py +1 -1
  179. package/build/lib/runtime/background_verification.py +62 -0
  180. package/build/lib/runtime/claim_judge.py +165 -5
  181. package/build/lib/runtime/compat.py +15 -1
  182. package/build/lib/runtime/context_engine.py +261 -4
  183. package/build/lib/runtime/contract_compiler.py +370 -93
  184. package/build/lib/runtime/defense_state.py +79 -8
  185. package/build/lib/runtime/delta_classifier.py +80 -2
  186. package/build/lib/runtime/evidence_query.py +56 -4
  187. package/build/lib/runtime/evidence_registry.py +16 -0
  188. package/build/lib/runtime/evidence_requirements.py +47 -0
  189. package/build/lib/runtime/forge_agents.py +179 -9
  190. package/build/lib/runtime/forge_contracts.py +208 -2
  191. package/build/lib/runtime/interaction_journal.py +318 -42
  192. package/build/lib/runtime/memory_store.py +134 -1
  193. package/build/lib/runtime/mutation_gate.py +57 -11
  194. package/build/lib/runtime/omg_compat_contract_snapshot.json +2 -2
  195. package/build/lib/runtime/omg_mcp_server.py +14 -4
  196. package/build/lib/runtime/preflight.py +14 -0
  197. package/build/lib/runtime/profile_io.py +294 -0
  198. package/build/lib/runtime/proof_gate.py +122 -7
  199. package/build/lib/runtime/release_run_coordinator.py +339 -0
  200. package/build/lib/runtime/release_surfaces.py +243 -0
  201. package/build/lib/runtime/rollback_manifest.py +136 -0
  202. package/build/lib/runtime/router_critics.py +50 -0
  203. package/build/lib/runtime/runtime_contracts.py +137 -0
  204. package/build/lib/runtime/security_check.py +16 -0
  205. package/build/lib/runtime/session_health.py +60 -16
  206. package/build/lib/runtime/team_router.py +156 -13
  207. package/build/lib/runtime/test_intent_lock.py +102 -0
  208. package/build/lib/runtime/tool_plan_gate.py +249 -24
  209. package/build/lib/runtime/validate.py +194 -0
  210. package/build/lib/runtime/verification_controller.py +52 -2
  211. package/commands/OMG:diagnose-plugins.md +33 -0
  212. package/commands/OMG:profile-review.md +43 -0
  213. package/commands/OMG:setup.md +4 -1
  214. package/commands/OMG:validate.md +59 -0
  215. package/control_plane/service.py +40 -1
  216. package/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
  217. package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  218. package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  219. package/dist/enterprise/bundle/plugins/advanced/plugin.json +26 -9
  220. package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  221. package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  222. package/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
  223. package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
  224. package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  225. package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  226. package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  227. package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  228. package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
  229. package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  230. package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  231. package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  232. package/dist/enterprise/bundle/registry/bundles/plan-council.yaml +1 -1
  233. package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  234. package/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +1 -1
  235. package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  236. package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  237. package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  238. package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  239. package/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  240. package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  241. package/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
  242. package/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
  243. package/dist/enterprise/bundle/settings.json +3 -3
  244. package/dist/enterprise/manifest.json +30 -40
  245. package/dist/oh_my_god-2.1.4-py3-none-any.whl +0 -0
  246. package/dist/oh_my_god-2.1.4.tar.gz +0 -0
  247. package/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
  248. package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  249. package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  250. package/dist/public/bundle/plugins/advanced/plugin.json +26 -9
  251. package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  252. package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  253. package/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
  254. package/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
  255. package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  256. package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  257. package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  258. package/dist/public/bundle/registry/bundles/health.yaml +1 -1
  259. package/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
  260. package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  261. package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  262. package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  263. package/dist/public/bundle/registry/bundles/plan-council.yaml +1 -1
  264. package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  265. package/dist/public/bundle/registry/bundles/proof-gate.yaml +1 -1
  266. package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  267. package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  268. package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  269. package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  270. package/dist/public/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  271. package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  272. package/dist/public/bundle/registry/bundles/vision.yaml +1 -1
  273. package/dist/public/bundle/registry/omg-capability.schema.json +1 -1
  274. package/dist/public/bundle/settings.json +3 -3
  275. package/dist/public/manifest.json +30 -40
  276. package/docs/install/opencode.md +30 -0
  277. package/docs/proof.md +11 -0
  278. package/docs/release-checklist.md +14 -1
  279. package/hooks/_agent_registry.py +2 -0
  280. package/hooks/firewall.py +263 -4
  281. package/hooks/intentgate-keyword-detector.py +15 -3
  282. package/hooks/policy_engine.py +77 -0
  283. package/hooks/prompt-enhancer.py +146 -0
  284. package/hooks/session-end-capture.py +374 -6
  285. package/hooks/session-start.py +13 -35
  286. package/hooks/setup_wizard.py +342 -2
  287. package/hooks/shadow_manager.py +111 -2
  288. package/hooks/stop_dispatcher.py +108 -4
  289. package/hud/omg-hud.mjs +30 -6
  290. package/lab/pipeline.py +197 -26
  291. package/package.json +1 -1
  292. package/plugins/advanced/plugin.json +26 -9
  293. package/plugins/core/plugin.json +51 -12
  294. package/pyproject.toml +10 -2
  295. package/registry/bundles/algorithms.yaml +1 -1
  296. package/registry/bundles/api-twin.yaml +1 -1
  297. package/registry/bundles/claim-judge.yaml +1 -1
  298. package/registry/bundles/control-plane.yaml +1 -1
  299. package/registry/bundles/data-lineage.yaml +1 -1
  300. package/registry/bundles/delta-classifier.yaml +1 -1
  301. package/registry/bundles/eval-gate.yaml +1 -1
  302. package/registry/bundles/health.yaml +1 -1
  303. package/registry/bundles/hook-governor.yaml +1 -1
  304. package/registry/bundles/incident-replay.yaml +1 -1
  305. package/registry/bundles/lsp-pack.yaml +1 -1
  306. package/registry/bundles/mcp-fabric.yaml +1 -1
  307. package/registry/bundles/plan-council.yaml +1 -1
  308. package/registry/bundles/preflight.yaml +1 -1
  309. package/registry/bundles/proof-gate.yaml +1 -1
  310. package/registry/bundles/remote-supervisor.yaml +1 -1
  311. package/registry/bundles/robotics.yaml +1 -1
  312. package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  313. package/registry/bundles/security-check.yaml +1 -1
  314. package/registry/bundles/test-intent-lock.yaml +1 -1
  315. package/registry/bundles/tracebank.yaml +1 -1
  316. package/registry/bundles/vision.yaml +1 -1
  317. package/registry/omg-capability.schema.json +1 -1
  318. package/runtime/adoption.py +7 -5
  319. package/runtime/background_verification.py +62 -0
  320. package/runtime/claim_judge.py +165 -5
  321. package/runtime/compat.py +48 -1
  322. package/runtime/context_engine.py +261 -4
  323. package/runtime/contract_compiler.py +370 -93
  324. package/runtime/defense_state.py +79 -8
  325. package/runtime/delta_classifier.py +80 -2
  326. package/runtime/evidence_query.py +56 -4
  327. package/runtime/evidence_registry.py +16 -0
  328. package/runtime/evidence_requirements.py +47 -0
  329. package/runtime/forge_agents.py +179 -9
  330. package/runtime/forge_contracts.py +208 -2
  331. package/runtime/hook_governor.py +19 -1
  332. package/runtime/interaction_journal.py +318 -42
  333. package/runtime/memory_store.py +134 -1
  334. package/runtime/mutation_gate.py +57 -11
  335. package/runtime/omg_compat_contract_snapshot.json +2 -2
  336. package/runtime/omg_mcp_server.py +14 -4
  337. package/runtime/plugin_diagnostics.py +248 -0
  338. package/runtime/plugin_interop.py +1007 -0
  339. package/runtime/preflight.py +14 -0
  340. package/runtime/profile_io.py +294 -0
  341. package/runtime/proof_gate.py +122 -7
  342. package/runtime/providers/opencode_provider.py +94 -0
  343. package/runtime/release_run_coordinator.py +339 -0
  344. package/runtime/release_surfaces.py +243 -0
  345. package/runtime/rollback_manifest.py +136 -0
  346. package/runtime/router_critics.py +50 -0
  347. package/runtime/runtime_contracts.py +137 -0
  348. package/runtime/security_check.py +16 -0
  349. package/runtime/session_health.py +60 -16
  350. package/runtime/team_router.py +156 -13
  351. package/runtime/test_intent_lock.py +102 -0
  352. package/runtime/tool_plan_gate.py +218 -19
  353. package/runtime/validate.py +289 -0
  354. package/runtime/verification_controller.py +52 -2
  355. package/scripts/omg.py +306 -3
  356. package/scripts/prepare-release-proof-fixtures.py +191 -7
  357. package/scripts/print-canonical-version.py +80 -0
  358. package/scripts/sync-release-identity.py +476 -0
  359. package/scripts/validate-release-identity.py +246 -0
  360. package/scripts/verify-standalone.sh +3 -0
  361. package/settings.json +3 -3
  362. package/templates/plugins-allowlist.yaml +19 -0
  363. package/artifacts/release/dist/enterprise/bundle/.gemini/settings.json +0 -11
  364. package/artifacts/release/dist/enterprise/bundle/.kimi/mcp.json +0 -11
  365. package/artifacts/release/dist/public/bundle/.gemini/settings.json +0 -11
  366. package/artifacts/release/dist/public/bundle/.kimi/mcp.json +0 -11
  367. package/build/lib/yaml.py +0 -321
  368. package/dist/enterprise/bundle/.gemini/settings.json +0 -11
  369. package/dist/enterprise/bundle/.kimi/mcp.json +0 -11
  370. package/dist/public/bundle/.gemini/settings.json +0 -11
  371. package/dist/public/bundle/.kimi/mcp.json +0 -11
@@ -1,17 +1,21 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
+ import os
4
5
  from pathlib import Path
5
6
  from typing import Any
6
7
 
7
8
  from runtime import artifact_parsers
9
+ from runtime.context_engine import load_profile_digest
8
10
  from runtime.evidence_query import get_evidence_pack
11
+ from runtime.evidence_requirements import FULL_REQUIREMENTS, requirements_for_profile
9
12
 
10
13
 
11
14
  def judge_claims(project_dir: str, claims: list[dict[str, Any]]) -> dict[str, Any]:
12
15
  root = Path(project_dir)
13
16
  evidence_dir = root / ".omg" / "evidence"
14
17
  evidence_dir.mkdir(parents=True, exist_ok=True)
18
+ profile_digest = load_profile_digest(project_dir)
15
19
 
16
20
  results: list[dict[str, Any]] = []
17
21
  aggregate_tokens: list[str] = []
@@ -23,16 +27,37 @@ def judge_claims(project_dir: str, claims: list[dict[str, Any]]) -> dict[str, An
23
27
  if run_id:
24
28
  evidence_pack = get_evidence_pack(project_dir, run_id)
25
29
  trace_ids: list[str] = []
30
+ context_checksum = ""
31
+ profile_version = ""
32
+ intent_gate_version = ""
33
+ evidence_profile = ""
26
34
  if isinstance(evidence_pack, dict):
27
35
  trace_ids = _as_non_empty_str_list(evidence_pack.get("trace_ids"))
36
+ context_checksum = str(evidence_pack.get("context_checksum", "")).strip()
37
+ profile_version = str(evidence_pack.get("profile_version", "")).strip()
38
+ intent_gate_version = str(evidence_pack.get("intent_gate_version", "")).strip()
39
+ evidence_profile = str(evidence_pack.get("evidence_profile", "")).strip()
28
40
  resolved_claim = {
29
41
  **claim,
30
42
  "artifacts": [f".omg/evidence/{run_id}.json"],
31
43
  "trace_ids": trace_ids,
44
+ "context_checksum": context_checksum,
45
+ "profile_version": profile_version,
46
+ "intent_gate_version": intent_gate_version,
47
+ "evidence_profile": evidence_profile,
32
48
  }
33
49
 
34
50
  result = judge_claim(resolved_claim)
51
+ council_reasons = _load_council_reasons(project_dir=project_dir, run_id=run_id)
52
+ if council_reasons:
53
+ updated_reasons = list(result.get("reasons", []))
54
+ updated_reasons.extend(council_reasons)
55
+ result = {**result, "reasons": updated_reasons, "verdict": "block"}
35
56
  result_with_run = {**result, "run_id": run_id}
57
+ result_with_run["context_checksum"] = str(resolved_claim.get("context_checksum", "")).strip()
58
+ result_with_run["profile_version"] = str(resolved_claim.get("profile_version", "")).strip()
59
+ result_with_run["intent_gate_version"] = str(resolved_claim.get("intent_gate_version", "")).strip()
60
+ result_with_run["advisory_context"] = {"profile_digest": profile_digest}
36
61
  results.append(result_with_run)
37
62
  aggregate_tokens.append(str(result.get("verdict", "")).strip().lower())
38
63
 
@@ -43,6 +68,10 @@ def judge_claims(project_dir: str, claims: list[dict[str, Any]]) -> dict[str, An
43
68
  "run_id": run_id,
44
69
  "claim": claim,
45
70
  "result": result,
71
+ "context_checksum": str(resolved_claim.get("context_checksum", "")).strip(),
72
+ "profile_version": str(resolved_claim.get("profile_version", "")).strip(),
73
+ "intent_gate_version": str(resolved_claim.get("intent_gate_version", "")).strip(),
74
+ "advisory_context": {"profile_digest": profile_digest},
46
75
  }
47
76
  artifact_path.write_text(json.dumps(artifact_payload, indent=2, sort_keys=True), encoding="utf-8")
48
77
 
@@ -52,7 +81,12 @@ def judge_claims(project_dir: str, claims: list[dict[str, Any]]) -> dict[str, An
52
81
  elif any(token == "block" for token in aggregate_tokens):
53
82
  verdict = "insufficient"
54
83
 
55
- return {"schema": "ClaimJudgeResults", "verdict": verdict, "results": results}
84
+ return {
85
+ "schema": "ClaimJudgeResults",
86
+ "verdict": verdict,
87
+ "results": results,
88
+ "advisory_context": {"profile_digest": profile_digest},
89
+ }
56
90
 
57
91
 
58
92
  def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
@@ -63,10 +97,15 @@ def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
63
97
  trace_ids = _as_non_empty_str_list(normalized_claim.get("trace_ids"))
64
98
  security_scans = normalized_claim.get("security_scans")
65
99
  browser_evidence = normalized_claim.get("browser_evidence")
100
+ evidence_profile = str(normalized_claim.get("evidence_profile", "")).strip()
101
+ evidence_requirements = requirements_for_profile(evidence_profile)
102
+ requirement_set = {str(item).strip() for item in evidence_requirements if str(item).strip()}
103
+ causal_chain = _as_dict(normalized_claim.get("causal_chain"))
66
104
 
67
105
  reasons: list[dict[str, Any]] = []
106
+ advisories: list[str] = []
68
107
 
69
- if not artifacts:
108
+ if "tests" in requirement_set and not artifacts:
70
109
  reasons.append(
71
110
  {
72
111
  "code": "missing_artifacts",
@@ -75,7 +114,7 @@ def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
75
114
  }
76
115
  )
77
116
 
78
- if not trace_ids:
117
+ if "trace_link" in requirement_set and not trace_ids:
79
118
  reasons.append(
80
119
  {
81
120
  "code": "missing_trace_ids",
@@ -84,7 +123,7 @@ def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
84
123
  }
85
124
  )
86
125
 
87
- if _has_failed_scan(security_scans):
126
+ if "security_scan" in requirement_set and _has_failed_scan(security_scans):
88
127
  reasons.append(
89
128
  {
90
129
  "code": "security_scan_failed",
@@ -93,7 +132,7 @@ def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
93
132
  }
94
133
  )
95
134
 
96
- if _has_failed_scan(browser_evidence):
135
+ if requirement_set == set(FULL_REQUIREMENTS) and _has_failed_scan(browser_evidence):
97
136
  reasons.append(
98
137
  {
99
138
  "code": "browser_evidence_failed",
@@ -118,6 +157,26 @@ def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
118
157
  }
119
158
  )
120
159
 
160
+ strict_mode = os.environ.get("OMG_PROOF_CHAIN_STRICT", "0").strip() == "1"
161
+ strict_causal_chain = strict_mode or _claim_type_enforces_strict_causal_chain(
162
+ claim_type=claim_type,
163
+ claim=claim,
164
+ )
165
+
166
+ causal_chain_errors = _validate_causal_chain(causal_chain, require_versions=strict_causal_chain)
167
+ if causal_chain_errors:
168
+ if strict_causal_chain:
169
+ reasons.append(
170
+ {
171
+ "code": "missing_causal_chain",
172
+ "message": "Claim must include lock->delta->verification causal chain evidence: "
173
+ + "; ".join(causal_chain_errors),
174
+ "field": "causal_chain",
175
+ }
176
+ )
177
+ else:
178
+ advisories.append("claim_judge_causal_chain_missing_permissive")
179
+
121
180
  hard_fail_codes = {"missing_artifacts", "missing_trace_ids"}
122
181
  if any(reason.get("code") in hard_fail_codes for reason in reasons):
123
182
  verdict = "fail"
@@ -138,6 +197,10 @@ def judge_claim(claim: dict[str, Any]) -> dict[str, Any]:
138
197
  "lineage": normalized_claim.get("lineage") if isinstance(normalized_claim.get("lineage"), dict) else {},
139
198
  "security_scans": security_scans if isinstance(security_scans, list) else [],
140
199
  "browser_evidence": browser_evidence if isinstance(browser_evidence, list) else [],
200
+ "causal_chain": causal_chain,
201
+ "advisories": advisories,
202
+ "evidence_profile": evidence_profile,
203
+ "evidence_requirements": list(evidence_requirements),
141
204
  },
142
205
  }
143
206
 
@@ -160,6 +223,18 @@ def _normalize_claim(claim: dict[str, Any]) -> dict[str, Any]:
160
223
  claim_browser_evidence = claim.get("browser_evidence")
161
224
  browser_evidence = claim_browser_evidence if isinstance(claim_browser_evidence, list) else _as_non_empty_dict_list(evidence.get("browser_evidence"))
162
225
 
226
+ lock_verification = claim.get("lock_verification") if isinstance(claim.get("lock_verification"), dict) else _as_dict(evidence.get("lock_verification"))
227
+ causal_chain = {
228
+ "lock_id": str(claim.get("lock_id", evidence.get("lock_id", ""))).strip(),
229
+ "delta_summary": claim.get("delta_summary") if isinstance(claim.get("delta_summary"), dict) else _as_dict(evidence.get("delta_summary")),
230
+ "verification_status": str(claim.get("verification_status", evidence.get("verification_status", ""))).strip(),
231
+ "waiver_artifact_path": str(claim.get("waiver_artifact_path", evidence.get("waiver_artifact_path", ""))).strip(),
232
+ "lock_verification": lock_verification,
233
+ "context_checksum": str(claim.get("context_checksum", evidence.get("context_checksum", ""))).strip(),
234
+ "profile_version": str(claim.get("profile_version", evidence.get("profile_version", ""))).strip(),
235
+ "intent_gate_version": str(claim.get("intent_gate_version", evidence.get("intent_gate_version", ""))).strip(),
236
+ }
237
+
163
238
  return {
164
239
  "schema_version": claim.get("schema_version", 1),
165
240
  "claim_type": claim.get("claim_type", ""),
@@ -169,9 +244,62 @@ def _normalize_claim(claim: dict[str, Any]) -> dict[str, Any]:
169
244
  "lineage": lineage,
170
245
  "security_scans": security_scans,
171
246
  "browser_evidence": browser_evidence,
247
+ "causal_chain": causal_chain,
248
+ "evidence_profile": str(claim.get("evidence_profile", evidence.get("evidence_profile", ""))).strip(),
172
249
  }
173
250
 
174
251
 
252
+ def _validate_causal_chain(causal_chain: dict[str, Any], *, require_versions: bool) -> list[str]:
253
+ errors: list[str] = []
254
+ lock_id = str(causal_chain.get("lock_id", "")).strip()
255
+ delta_summary = causal_chain.get("delta_summary")
256
+ verification_status = str(causal_chain.get("verification_status", "")).strip()
257
+ waiver_artifact_path = str(causal_chain.get("waiver_artifact_path", "")).strip()
258
+ context_checksum = str(causal_chain.get("context_checksum", "")).strip()
259
+ profile_version = str(causal_chain.get("profile_version", "")).strip()
260
+ intent_gate_version = str(causal_chain.get("intent_gate_version", "")).strip()
261
+ lock_verification = _as_dict(causal_chain.get("lock_verification"))
262
+
263
+ if not lock_id:
264
+ errors.append("missing_lock_id")
265
+ if not isinstance(delta_summary, dict) or not delta_summary:
266
+ errors.append("missing_delta_summary")
267
+ if not verification_status:
268
+ errors.append("missing_verification_status")
269
+
270
+ lock_status = str(lock_verification.get("status", "")).strip().lower()
271
+ lock_satisfied = lock_status == "ok"
272
+ if not waiver_artifact_path and not lock_satisfied:
273
+ errors.append("missing_waiver_or_lock_satisfied_proof")
274
+
275
+ if require_versions:
276
+ if not context_checksum:
277
+ errors.append("missing_context_checksum")
278
+ if not profile_version:
279
+ errors.append("missing_profile_version")
280
+ if not intent_gate_version:
281
+ errors.append("missing_intent_gate_version")
282
+
283
+ return errors
284
+
285
+
286
+ def _claim_type_enforces_strict_causal_chain(*, claim_type: str, claim: dict[str, Any]) -> bool:
287
+ mode = str(claim.get("causal_chain_mode", "")).strip().lower()
288
+ if mode == "legacy":
289
+ return False
290
+ if mode == "strict":
291
+ return True
292
+
293
+ if isinstance(claim.get("require_causal_chain"), bool):
294
+ return bool(claim.get("require_causal_chain"))
295
+
296
+ normalized = claim_type.strip().lower()
297
+ if not normalized:
298
+ return False
299
+ tokens = {item for item in normalized.replace("-", "_").split("_") if item}
300
+ return bool(tokens & {"runtime", "council"})
301
+
302
+
175
303
  def _normalize_artifact_records(value: Any) -> list[str]:
176
304
  if not isinstance(value, list):
177
305
  return []
@@ -270,3 +398,35 @@ _PARSERS: dict[str, Any] = {
270
398
  def _sanitize_run_id(value: str) -> str:
271
399
  cleaned = "".join(ch if ch.isalnum() or ch in {"-", "_", "."} else "-" for ch in value.strip())
272
400
  return cleaned or "unknown"
401
+
402
+
403
+ def _load_council_reasons(project_dir: str, run_id: str) -> list[dict[str, Any]]:
404
+ if not run_id:
405
+ return []
406
+ path = Path(project_dir) / ".omg" / "state" / "council_verdicts" / f"{run_id}.json"
407
+ if not path.exists():
408
+ return []
409
+ try:
410
+ payload = json.loads(path.read_text(encoding="utf-8"))
411
+ except (OSError, json.JSONDecodeError):
412
+ return []
413
+ if not isinstance(payload, dict):
414
+ return []
415
+
416
+ verdicts = _as_dict(payload.get("verdicts"))
417
+ evidence_completeness = _as_dict(verdicts.get("evidence_completeness"))
418
+ verdict = str(evidence_completeness.get("verdict", "")).strip().lower()
419
+ if verdict not in {"fail", "block", "blocked", "error"}:
420
+ return []
421
+ findings = evidence_completeness.get("findings")
422
+ finding_items = findings if isinstance(findings, list) else []
423
+ message = "council evidence completeness failed"
424
+ if finding_items:
425
+ message = "; ".join(str(item).strip() for item in finding_items if str(item).strip()) or message
426
+ return [
427
+ {
428
+ "code": "council_evidence_incomplete",
429
+ "message": message,
430
+ "field": "council_verdicts.evidence_completeness",
431
+ }
432
+ ]
package/runtime/compat.py CHANGED
@@ -17,6 +17,7 @@ from hooks.policy_engine import evaluate_bash_command
17
17
  from lab.pipeline import run_pipeline
18
18
  from runtime.adoption import CANONICAL_VERSION
19
19
  from runtime.dispatcher import dispatch_runtime
20
+ from runtime.plugin_diagnostics import run_plugin_diagnostics
20
21
  from runtime.security_check import run_security_check
21
22
  from runtime.team_router import TeamDispatchRequest, dispatch_team
22
23
 
@@ -603,7 +604,21 @@ def _init_bootstrap(project_dir: str, reason: str) -> list[str]:
603
604
  "name: omg-project\n"
604
605
  "description: initialized by OMG standalone compat bootstrap\n"
605
606
  "language: unknown\n"
606
- "framework: unknown\n",
607
+ "framework: unknown\n"
608
+ "stack: []\n"
609
+ "conventions: {}\n"
610
+ "ai_behavior: {}\n"
611
+ "preferences:\n"
612
+ " architecture_requests: []\n"
613
+ " constraints: {}\n"
614
+ " routing:\n"
615
+ " prefer_clarification: false\n"
616
+ "user_vector:\n"
617
+ " tags: []\n"
618
+ " summary: \"\"\n"
619
+ " confidence: 0.0\n"
620
+ "profile_provenance:\n"
621
+ " recent_updates: []\n",
607
622
  )
608
623
  _write_if_missing(
609
624
  idea_path,
@@ -684,6 +699,34 @@ def _doctor_check(name: str, *, ok: bool, message: str, required: bool = True) -
684
699
  return {"name": name, "status": status, "message": message, "required": required}
685
700
 
686
701
 
702
+ def _check_plugin_compat(root_dir: Path) -> dict[str, Any]:
703
+ try:
704
+ result = run_plugin_diagnostics(str(root_dir))
705
+ except Exception as exc:
706
+ return _doctor_check(
707
+ "plugin_compatibility",
708
+ ok=False,
709
+ message=f"plugin diagnostics error: {exc}",
710
+ required=False,
711
+ )
712
+
713
+ status = str(result.get("status", "error"))
714
+ summary = result.get("summary", {})
715
+ summary = summary if isinstance(summary, dict) else {}
716
+ total_records = int(summary.get("total_records", 0))
717
+ total_conflicts = int(summary.get("total_conflicts", 0))
718
+ blockers = int(summary.get("blockers", 0))
719
+ return _doctor_check(
720
+ "plugin_compatibility",
721
+ ok=status in {"ok", "warn"},
722
+ message=(
723
+ f"plugin compatibility: {total_records} records, "
724
+ f"{total_conflicts} conflicts, {blockers} blockers"
725
+ ),
726
+ required=False,
727
+ )
728
+
729
+
687
730
  def run_doctor(*, root_dir: Path | None = None) -> dict[str, Any]:
688
731
  """Canonical install/runtime verification engine.
689
732
 
@@ -790,11 +833,15 @@ def run_doctor(*, root_dir: Path | None = None) -> dict[str, Any]:
790
833
  venv_msg = f"managed venv at {managed_venv_path}" if venv_ok else f"managed venv not found at {managed_venv_path} (install via OMG-setup.sh)"
791
834
  checks.append(_doctor_check("managed_runtime", ok=venv_ok, message=venv_msg, required=False))
792
835
 
836
+ plugin_check = _check_plugin_compat(repo_root)
837
+ checks.append(plugin_check)
838
+
793
839
  has_blocker = any(c["status"] == "blocker" for c in checks)
794
840
  return {
795
841
  "schema": "DoctorResult",
796
842
  "status": "fail" if has_blocker else "pass",
797
843
  "checks": checks,
844
+ "plugin_compatibility": plugin_check,
798
845
  "version": CANONICAL_VERSION,
799
846
  }
800
847