@trac3er/oh-my-god 2.1.1 → 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 (351) 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 +5 -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/hooks/_agent_registry.py +2 -0
  143. package/build/lib/hooks/firewall.py +146 -2
  144. package/build/lib/hooks/intentgate-keyword-detector.py +15 -3
  145. package/build/lib/hooks/policy_engine.py +77 -0
  146. package/build/lib/hooks/prompt-enhancer.py +146 -0
  147. package/build/lib/hooks/session-end-capture.py +374 -6
  148. package/build/lib/hooks/session-start.py +13 -35
  149. package/build/lib/hooks/setup_wizard.py +333 -1
  150. package/build/lib/plugins/advanced/plugin.json +26 -9
  151. package/build/lib/plugins/core/plugin.json +44 -11
  152. package/build/lib/registry/bundles/algorithms.yaml +1 -1
  153. package/build/lib/registry/bundles/api-twin.yaml +1 -1
  154. package/build/lib/registry/bundles/claim-judge.yaml +1 -1
  155. package/build/lib/registry/bundles/control-plane.yaml +1 -1
  156. package/build/lib/registry/bundles/data-lineage.yaml +1 -1
  157. package/build/lib/registry/bundles/delta-classifier.yaml +1 -1
  158. package/build/lib/registry/bundles/eval-gate.yaml +1 -1
  159. package/build/lib/registry/bundles/health.yaml +1 -1
  160. package/build/lib/registry/bundles/hook-governor.yaml +1 -1
  161. package/build/lib/registry/bundles/incident-replay.yaml +1 -1
  162. package/build/lib/registry/bundles/lsp-pack.yaml +1 -1
  163. package/build/lib/registry/bundles/mcp-fabric.yaml +1 -1
  164. package/build/lib/registry/bundles/plan-council.yaml +1 -1
  165. package/build/lib/registry/bundles/preflight.yaml +1 -1
  166. package/build/lib/registry/bundles/proof-gate.yaml +1 -1
  167. package/build/lib/registry/bundles/remote-supervisor.yaml +1 -1
  168. package/build/lib/registry/bundles/robotics.yaml +1 -1
  169. package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  170. package/build/lib/registry/bundles/security-check.yaml +1 -1
  171. package/build/lib/registry/bundles/test-intent-lock.yaml +1 -1
  172. package/build/lib/registry/bundles/tracebank.yaml +1 -1
  173. package/build/lib/registry/bundles/vision.yaml +1 -1
  174. package/build/lib/registry/omg-capability.schema.json +1 -1
  175. package/build/lib/runtime/adoption.py +1 -1
  176. package/build/lib/runtime/background_verification.py +62 -0
  177. package/build/lib/runtime/claim_judge.py +79 -9
  178. package/build/lib/runtime/compat.py +15 -1
  179. package/build/lib/runtime/context_engine.py +242 -0
  180. package/build/lib/runtime/contract_compiler.py +133 -78
  181. package/build/lib/runtime/defense_state.py +79 -8
  182. package/build/lib/runtime/delta_classifier.py +80 -2
  183. package/build/lib/runtime/evidence_query.py +56 -4
  184. package/build/lib/runtime/evidence_registry.py +16 -0
  185. package/build/lib/runtime/evidence_requirements.py +47 -0
  186. package/build/lib/runtime/forge_agents.py +163 -25
  187. package/build/lib/runtime/forge_contracts.py +164 -2
  188. package/build/lib/runtime/memory_store.py +134 -1
  189. package/build/lib/runtime/omg_compat_contract_snapshot.json +2 -2
  190. package/build/lib/runtime/preflight.py +14 -0
  191. package/build/lib/runtime/profile_io.py +294 -0
  192. package/build/lib/runtime/proof_gate.py +43 -7
  193. package/build/lib/runtime/release_surfaces.py +243 -0
  194. package/build/lib/runtime/runtime_contracts.py +90 -0
  195. package/build/lib/runtime/security_check.py +16 -0
  196. package/build/lib/runtime/session_health.py +49 -16
  197. package/build/lib/runtime/team_router.py +65 -6
  198. package/build/lib/runtime/tool_plan_gate.py +114 -6
  199. package/build/lib/runtime/validate.py +194 -0
  200. package/build/lib/runtime/verification_controller.py +52 -2
  201. package/commands/OMG:diagnose-plugins.md +33 -0
  202. package/commands/OMG:profile-review.md +43 -0
  203. package/commands/OMG:setup.md +4 -1
  204. package/commands/OMG:validate.md +59 -0
  205. package/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
  206. package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  207. package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  208. package/dist/enterprise/bundle/plugins/advanced/plugin.json +26 -9
  209. package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  210. package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  211. package/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
  212. package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
  213. package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  214. package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  215. package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  216. package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  217. package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
  218. package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  219. package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  220. package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  221. package/dist/enterprise/bundle/registry/bundles/plan-council.yaml +1 -1
  222. package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  223. package/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +1 -1
  224. package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  225. package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  226. package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  227. package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  228. package/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  229. package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  230. package/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
  231. package/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
  232. package/dist/enterprise/bundle/settings.json +3 -3
  233. package/dist/enterprise/manifest.json +30 -40
  234. package/dist/oh_my_god-2.1.4-py3-none-any.whl +0 -0
  235. package/dist/oh_my_god-2.1.4.tar.gz +0 -0
  236. package/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
  237. package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  238. package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +1 -1
  239. package/dist/public/bundle/plugins/advanced/plugin.json +26 -9
  240. package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  241. package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  242. package/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
  243. package/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
  244. package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  245. package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  246. package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  247. package/dist/public/bundle/registry/bundles/health.yaml +1 -1
  248. package/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
  249. package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  250. package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  251. package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  252. package/dist/public/bundle/registry/bundles/plan-council.yaml +1 -1
  253. package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  254. package/dist/public/bundle/registry/bundles/proof-gate.yaml +1 -1
  255. package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  256. package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  257. package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  258. package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  259. package/dist/public/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  260. package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  261. package/dist/public/bundle/registry/bundles/vision.yaml +1 -1
  262. package/dist/public/bundle/registry/omg-capability.schema.json +1 -1
  263. package/dist/public/bundle/settings.json +3 -3
  264. package/dist/public/manifest.json +30 -40
  265. package/docs/install/opencode.md +30 -0
  266. package/docs/proof.md +3 -0
  267. package/docs/release-checklist.md +6 -1
  268. package/hooks/_agent_registry.py +2 -0
  269. package/hooks/firewall.py +146 -2
  270. package/hooks/intentgate-keyword-detector.py +15 -3
  271. package/hooks/policy_engine.py +77 -0
  272. package/hooks/prompt-enhancer.py +146 -0
  273. package/hooks/session-end-capture.py +374 -6
  274. package/hooks/session-start.py +13 -35
  275. package/hooks/setup_wizard.py +342 -2
  276. package/hud/omg-hud.mjs +16 -3
  277. package/lab/pipeline.py +195 -26
  278. package/package.json +1 -1
  279. package/plugins/advanced/plugin.json +26 -9
  280. package/plugins/core/plugin.json +51 -12
  281. package/pyproject.toml +10 -2
  282. package/registry/bundles/algorithms.yaml +1 -1
  283. package/registry/bundles/api-twin.yaml +1 -1
  284. package/registry/bundles/claim-judge.yaml +1 -1
  285. package/registry/bundles/control-plane.yaml +1 -1
  286. package/registry/bundles/data-lineage.yaml +1 -1
  287. package/registry/bundles/delta-classifier.yaml +1 -1
  288. package/registry/bundles/eval-gate.yaml +1 -1
  289. package/registry/bundles/health.yaml +1 -1
  290. package/registry/bundles/hook-governor.yaml +1 -1
  291. package/registry/bundles/incident-replay.yaml +1 -1
  292. package/registry/bundles/lsp-pack.yaml +1 -1
  293. package/registry/bundles/mcp-fabric.yaml +1 -1
  294. package/registry/bundles/plan-council.yaml +1 -1
  295. package/registry/bundles/preflight.yaml +1 -1
  296. package/registry/bundles/proof-gate.yaml +1 -1
  297. package/registry/bundles/remote-supervisor.yaml +1 -1
  298. package/registry/bundles/robotics.yaml +1 -1
  299. package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  300. package/registry/bundles/security-check.yaml +1 -1
  301. package/registry/bundles/test-intent-lock.yaml +1 -1
  302. package/registry/bundles/tracebank.yaml +1 -1
  303. package/registry/bundles/vision.yaml +1 -1
  304. package/registry/omg-capability.schema.json +1 -1
  305. package/runtime/adoption.py +7 -5
  306. package/runtime/background_verification.py +62 -0
  307. package/runtime/claim_judge.py +79 -9
  308. package/runtime/compat.py +48 -1
  309. package/runtime/context_engine.py +242 -0
  310. package/runtime/contract_compiler.py +133 -78
  311. package/runtime/defense_state.py +79 -8
  312. package/runtime/delta_classifier.py +80 -2
  313. package/runtime/evidence_query.py +56 -4
  314. package/runtime/evidence_registry.py +16 -0
  315. package/runtime/evidence_requirements.py +47 -0
  316. package/runtime/forge_agents.py +163 -25
  317. package/runtime/forge_contracts.py +164 -2
  318. package/runtime/hook_governor.py +19 -1
  319. package/runtime/memory_store.py +134 -1
  320. package/runtime/omg_compat_contract_snapshot.json +2 -2
  321. package/runtime/plugin_diagnostics.py +248 -0
  322. package/runtime/plugin_interop.py +1007 -0
  323. package/runtime/preflight.py +14 -0
  324. package/runtime/profile_io.py +294 -0
  325. package/runtime/proof_gate.py +43 -7
  326. package/runtime/providers/opencode_provider.py +94 -0
  327. package/runtime/release_surfaces.py +243 -0
  328. package/runtime/runtime_contracts.py +90 -0
  329. package/runtime/security_check.py +16 -0
  330. package/runtime/session_health.py +49 -16
  331. package/runtime/team_router.py +65 -6
  332. package/runtime/tool_plan_gate.py +82 -0
  333. package/runtime/validate.py +289 -0
  334. package/runtime/verification_controller.py +52 -2
  335. package/scripts/omg.py +262 -1
  336. package/scripts/prepare-release-proof-fixtures.py +89 -0
  337. package/scripts/print-canonical-version.py +80 -0
  338. package/scripts/sync-release-identity.py +476 -0
  339. package/scripts/validate-release-identity.py +246 -0
  340. package/scripts/verify-standalone.sh +3 -0
  341. package/settings.json +3 -3
  342. package/templates/plugins-allowlist.yaml +19 -0
  343. package/artifacts/release/dist/enterprise/bundle/.gemini/settings.json +0 -11
  344. package/artifacts/release/dist/enterprise/bundle/.kimi/mcp.json +0 -11
  345. package/artifacts/release/dist/public/bundle/.gemini/settings.json +0 -11
  346. package/artifacts/release/dist/public/bundle/.kimi/mcp.json +0 -11
  347. package/build/lib/yaml.py +0 -321
  348. package/dist/enterprise/bundle/.gemini/settings.json +0 -11
  349. package/dist/enterprise/bundle/.kimi/mcp.json +0 -11
  350. package/dist/public/bundle/.gemini/settings.json +0 -11
  351. package/dist/public/bundle/.kimi/mcp.json +0 -11
@@ -7,7 +7,9 @@ from __future__ import annotations
7
7
  import json
8
8
  import logging
9
9
  import os
10
+ import re
10
11
  import sys
12
+ from pathlib import Path
11
13
  from typing import Any, cast
12
14
 
13
15
  import yaml
@@ -35,6 +37,7 @@ from runtime.mcp_config_writers import ( # noqa: E402
35
37
  import runtime.providers.codex_provider # noqa: E402, F401
36
38
  import runtime.providers.gemini_provider # noqa: E402, F401
37
39
  import runtime.providers.kimi_provider # noqa: E402, F401
40
+ from runtime.validate import run_validate as _run_post_install_validate # noqa: E402
38
41
  from runtime.adoption import ( # noqa: E402
39
42
  CANONICAL_MODE_NAMES,
40
43
  CANONICAL_VERSION,
@@ -191,6 +194,28 @@ MCP_CATALOG: list[dict[str, Any]] = [
191
194
  "default": False,
192
195
  "category": "memory",
193
196
  },
197
+ {
198
+ "id": "notebooklm",
199
+ "name": "NotebookLM",
200
+ "description": "NotebookLM MCP server for AI-powered research and note-taking",
201
+ "command": "npx",
202
+ "args": ["-y", "notebooklm-mcp@latest"],
203
+ "default": False,
204
+ "category": "productivity",
205
+ "warning": (
206
+ "NOTEBOOKLM MCP WARNING\n\n"
207
+ "NotebookLM requires browser automation and has several important considerations:\n\n"
208
+ "BROWSER AUTOMATION: NotebookLM uses Puppeteer for browser automation. "
209
+ "This requires a Chromium/Chrome installation and may consume significant system resources.\n\n"
210
+ "FIRST-RUN DOWNLOAD: On first run, NotebookLM will download a full browser instance "
211
+ "(typically 100-300 MB). This is a one-time operation but may take several minutes.\n\n"
212
+ "DEDICATED ACCOUNT: It is strongly recommended to use a dedicated Google account "
213
+ "for NotebookLM MCP. Do NOT use your primary account, as the MCP will store credentials locally.\n\n"
214
+ "AUTH EXPIRY: Google authentication tokens expire periodically. "
215
+ "You may need to re-authenticate if the MCP fails with auth errors.\n\n"
216
+ "Enable NotebookLM only if you understand these requirements and accept the risks."
217
+ ),
218
+ },
194
219
  ]
195
220
 
196
221
  _MCP_ID_ALIASES: dict[str, str] = {
@@ -451,6 +476,12 @@ def check_auth() -> dict[str, Any]:
451
476
 
452
477
  _HTTP_MEMORY_MIN_LEVEL: int = _PRESET_LEVEL["interop"]
453
478
 
479
+ _PROFILE_ARCH_REQUEST_MAX = 8
480
+ _PROFILE_TAG_MAX = 12
481
+ _PROFILE_SUMMARY_MAX_CHARS = 240
482
+ _PROFILE_RECENT_UPDATES_MAX = 5
483
+ _PROFILE_GOVERNED_MAX = 24
484
+
454
485
 
455
486
  def get_mode_choices() -> list[str]:
456
487
  return list(CANONICAL_MODE_NAMES)
@@ -660,6 +691,8 @@ def set_preferences(project_dir: str, preferences: dict[str, Any]) -> dict[str,
660
691
  state_dir = os.path.join(project_dir, ".omg", "state")
661
692
  os.makedirs(state_dir, exist_ok=True)
662
693
 
694
+ _write_profile_learning_sections(state_dir, preferences)
695
+
663
696
  # Write config to YAML file
664
697
  config_path = os.path.join(state_dir, "cli-config.yaml")
665
698
  with open(config_path, "w") as f:
@@ -674,6 +707,260 @@ def set_preferences(project_dir: str, preferences: dict[str, Any]) -> dict[str,
674
707
  }
675
708
 
676
709
 
710
+ def _write_profile_learning_sections(state_dir: str, preferences: dict[str, Any]) -> None:
711
+ profile_path = os.path.join(state_dir, "profile.yaml")
712
+ profile_data = _load_profile_yaml(profile_path)
713
+ _ensure_profile_baseline(profile_data)
714
+
715
+ profile_data["preferences"] = _normalize_preferences_block(preferences.get("preferences"))
716
+ profile_data["user_vector"] = _normalize_user_vector_block(preferences.get("user_vector"))
717
+ profile_data["profile_provenance"] = _normalize_provenance_block(preferences.get("profile_provenance"))
718
+ profile_data["governed_preferences"] = _normalize_governed_preferences_block(preferences.get("governed_preferences"))
719
+
720
+ from runtime.profile_io import save_profile
721
+ save_profile(profile_path, profile_data)
722
+
723
+
724
+ def _render_explicit_empty_collections(dumped: str) -> str:
725
+ lines = dumped.splitlines()
726
+ output: list[str] = []
727
+
728
+ def _next_line(start: int) -> str:
729
+ if start + 1 < len(lines):
730
+ return lines[start + 1]
731
+ return ""
732
+
733
+ for idx, line in enumerate(lines):
734
+ next_line = _next_line(idx)
735
+ stripped = line.strip()
736
+
737
+ if stripped == "stack:" and (not next_line or not next_line.startswith("- ")):
738
+ output.append("stack: []")
739
+ continue
740
+ if stripped == "conventions:" and (not next_line or not next_line.startswith(" ")):
741
+ output.append("conventions: {}")
742
+ continue
743
+ if stripped == "ai_behavior:" and (not next_line or not next_line.startswith(" ")):
744
+ output.append("ai_behavior: {}")
745
+ continue
746
+ if stripped == "architecture_requests:" and (not next_line or not next_line.startswith(" - ")):
747
+ output.append(" architecture_requests: []")
748
+ continue
749
+ if stripped == "constraints:" and (not next_line or not next_line.startswith(" ")):
750
+ output.append(" constraints: {}")
751
+ continue
752
+ if stripped == "tags:" and (not next_line or not next_line.startswith(" - ")):
753
+ output.append(" tags: []")
754
+ continue
755
+ if stripped == "recent_updates:" and (not next_line or not next_line.startswith(" - ")):
756
+ output.append(" recent_updates: []")
757
+ continue
758
+
759
+ output.append(line)
760
+
761
+ return "\n".join(output) + "\n"
762
+
763
+
764
+ def _load_profile_yaml(profile_path: str) -> dict[str, Any]:
765
+ from runtime.profile_io import load_profile
766
+ return load_profile(profile_path)
767
+
768
+
769
+ def _ensure_profile_baseline(profile_data: dict[str, Any]) -> None:
770
+ profile_data.setdefault("name", "omg-project")
771
+ profile_data.setdefault("description", "initialized by OMG standalone compat bootstrap")
772
+ profile_data.setdefault("language", "unknown")
773
+ profile_data.setdefault("framework", "unknown")
774
+ profile_data.setdefault("stack", [])
775
+ profile_data.setdefault("conventions", {})
776
+ profile_data.setdefault("ai_behavior", {})
777
+ profile_data.setdefault("governed_preferences", {"style": [], "safety": []})
778
+
779
+
780
+ def _normalize_preferences_block(raw: Any) -> dict[str, Any]:
781
+ block = raw if isinstance(raw, dict) else {}
782
+
783
+ requests_obj = block.get("architecture_requests")
784
+ architecture_requests: list[str] = []
785
+ if isinstance(requests_obj, list):
786
+ for value in requests_obj:
787
+ text = str(value).strip()
788
+ if text:
789
+ architecture_requests.append(text)
790
+ if len(architecture_requests) >= _PROFILE_ARCH_REQUEST_MAX:
791
+ break
792
+
793
+ constraints_obj = block.get("constraints")
794
+ constraints: dict[str, Any] = {}
795
+ if isinstance(constraints_obj, dict):
796
+ for key, value in constraints_obj.items():
797
+ normalized_key = _normalize_constraint_key(str(key))
798
+ normalized_value = _normalize_constraint_value(value)
799
+ if normalized_key and normalized_value is not None:
800
+ constraints[normalized_key] = normalized_value
801
+
802
+ routing_obj = block.get("routing")
803
+ routing_map = routing_obj if isinstance(routing_obj, dict) else {}
804
+ routing = {
805
+ "prefer_clarification": bool(routing_map.get("prefer_clarification", False)),
806
+ }
807
+
808
+ return {
809
+ "architecture_requests": architecture_requests,
810
+ "constraints": constraints,
811
+ "routing": routing,
812
+ }
813
+
814
+
815
+ def _normalize_constraint_key(value: str) -> str:
816
+ normalized = value.strip().lower()
817
+ normalized = re.sub(r"\s+", "_", normalized)
818
+ normalized = re.sub(r"[^a-z0-9_]+", "", normalized)
819
+ return normalized
820
+
821
+
822
+ def _normalize_constraint_value(value: Any) -> str | int | float | bool | None:
823
+ if isinstance(value, bool):
824
+ return value
825
+ if isinstance(value, int):
826
+ return value
827
+ if isinstance(value, float):
828
+ return value
829
+ if value is None:
830
+ return None
831
+ text = str(value).strip().lower()
832
+ return text if text else None
833
+
834
+
835
+ def _normalize_user_vector_block(raw: Any) -> dict[str, Any]:
836
+ block = raw if isinstance(raw, dict) else {}
837
+
838
+ tags_obj = block.get("tags")
839
+ tags: list[str] = []
840
+ if isinstance(tags_obj, list):
841
+ for value in tags_obj:
842
+ token = _normalize_tag_token(str(value))
843
+ if token:
844
+ tags.append(token)
845
+ if len(tags) >= _PROFILE_TAG_MAX:
846
+ break
847
+
848
+ summary = ""
849
+ summary_obj = block.get("summary")
850
+ if isinstance(summary_obj, str):
851
+ summary = " ".join(summary_obj.strip().split())[:_PROFILE_SUMMARY_MAX_CHARS]
852
+
853
+ confidence = 0.0
854
+ confidence_obj = block.get("confidence")
855
+ if isinstance(confidence_obj, (int, float, str)):
856
+ try:
857
+ confidence = float(confidence_obj)
858
+ except (TypeError, ValueError):
859
+ confidence = 0.0
860
+ confidence = max(0.0, min(1.0, confidence))
861
+
862
+ return {
863
+ "tags": tags,
864
+ "summary": summary,
865
+ "confidence": confidence,
866
+ }
867
+
868
+
869
+ def _normalize_tag_token(value: str) -> str:
870
+ normalized = value.strip().lower()
871
+ normalized = re.sub(r"\s+", "_", normalized)
872
+ normalized = re.sub(r"[^a-z0-9_\-]+", "", normalized)
873
+ return normalized
874
+
875
+
876
+ def _normalize_provenance_block(raw: Any) -> dict[str, Any]:
877
+ block = raw if isinstance(raw, dict) else {}
878
+ updates_obj = block.get("recent_updates")
879
+ updates: list[dict[str, str]] = []
880
+ if isinstance(updates_obj, list):
881
+ for entry in updates_obj:
882
+ if not isinstance(entry, dict):
883
+ continue
884
+ run_id = str(entry.get("run_id", "")).strip()
885
+ source = str(entry.get("source", "")).strip()
886
+ field = str(entry.get("field", "")).strip()
887
+ updated_at = str(entry.get("updated_at", "")).strip()
888
+ if not (run_id and source and field and updated_at):
889
+ continue
890
+ updates.append(
891
+ {
892
+ "run_id": run_id,
893
+ "source": source,
894
+ "field": field,
895
+ "updated_at": updated_at,
896
+ }
897
+ )
898
+ if len(updates) >= _PROFILE_RECENT_UPDATES_MAX:
899
+ break
900
+ return {"recent_updates": updates}
901
+
902
+
903
+ def _normalize_governed_preferences_block(raw: Any) -> dict[str, list[dict[str, Any]]]:
904
+ block = raw if isinstance(raw, dict) else {}
905
+ style_raw = block.get("style")
906
+ safety_raw = block.get("safety")
907
+ return {
908
+ "style": _normalize_governed_section_entries(style_raw, section="style"),
909
+ "safety": _normalize_governed_section_entries(safety_raw, section="safety"),
910
+ }
911
+
912
+
913
+ def _normalize_governed_section_entries(raw: Any, *, section: str) -> list[dict[str, Any]]:
914
+ if not isinstance(raw, list):
915
+ return []
916
+ entries: list[dict[str, Any]] = []
917
+ for item in raw:
918
+ if not isinstance(item, dict):
919
+ continue
920
+ field = str(item.get("field", "")).strip()
921
+ value = " ".join(str(item.get("value", "")).strip().split())
922
+ source = str(item.get("source", "")).strip()
923
+ learned_at = str(item.get("learned_at", "")).strip()
924
+ updated_at = str(item.get("updated_at", "")).strip()
925
+ candidate_section = str(item.get("section", section)).strip().lower()
926
+ confirmation_state = str(item.get("confirmation_state", "")).strip().lower()
927
+
928
+ if not (field and value and source and learned_at and updated_at):
929
+ continue
930
+ if candidate_section != section:
931
+ continue
932
+ if confirmation_state not in ("confirmed", "pending_confirmation", "inferred"):
933
+ continue
934
+
935
+ entry: dict[str, Any] = {
936
+ "field": field,
937
+ "value": value,
938
+ "source": source,
939
+ "learned_at": learned_at,
940
+ "updated_at": updated_at,
941
+ "section": section,
942
+ "confirmation_state": confirmation_state,
943
+ }
944
+
945
+ if section == "style" and confirmation_state == "inferred":
946
+ decay_raw = item.get("decay_metadata")
947
+ decay = decay_raw if isinstance(decay_raw, dict) else {}
948
+ try:
949
+ score = float(decay.get("decay_score", 0.0))
950
+ except (TypeError, ValueError):
951
+ score = 0.0
952
+ entry["decay_metadata"] = {
953
+ "decay_score": max(0.0, min(1.0, score)),
954
+ "last_seen_at": str(decay.get("last_seen_at", updated_at)).strip() or updated_at,
955
+ "decay_reason": str(decay.get("decay_reason", "inferred_signal")).strip() or "inferred_signal",
956
+ }
957
+
958
+ entries.append(entry)
959
+ if len(entries) >= _PROFILE_GOVERNED_MAX:
960
+ break
961
+ return entries
962
+
963
+
677
964
  def _write_project_settings_preset(project_dir: str, preset: str) -> None:
678
965
  """Persist preset metadata into project settings when settings.json exists."""
679
966
  settings_path = os.path.join(project_dir, "settings.json")
@@ -760,7 +1047,7 @@ def run_setup_wizard(
760
1047
  report_path = write_adoption_report(project_dir, adoption)
761
1048
  adoption["report_path"] = report_path
762
1049
 
763
- return {
1050
+ result: dict[str, Any] = {
764
1051
  "status": "complete",
765
1052
  "setup_mode": {
766
1053
  "choices": get_mode_choices(),
@@ -773,3 +1060,48 @@ def run_setup_wizard(
773
1060
  "preferences": prefs,
774
1061
  "adoption": adoption,
775
1062
  }
1063
+
1064
+ # --- Post-install validation (runs AFTER all setup writes are complete) ---
1065
+ try:
1066
+ validation_result = _run_post_install_validate(root_dir=Path(_PROJECT_ROOT))
1067
+ except Exception as exc:
1068
+ validation_result = {
1069
+ "schema": "ValidateResult",
1070
+ "status": "fail",
1071
+ "checks": [
1072
+ {
1073
+ "name": "validation_error",
1074
+ "status": "blocker",
1075
+ "message": str(exc),
1076
+ "required": True,
1077
+ },
1078
+ ],
1079
+ "version": "",
1080
+ }
1081
+
1082
+ # Persist machine-readable validation artifact
1083
+ artifact_dir = os.path.join(project_dir, ".omg", "state")
1084
+ os.makedirs(artifact_dir, exist_ok=True)
1085
+ artifact_path = os.path.join(artifact_dir, "post-install-validation.json")
1086
+ try:
1087
+ with open(artifact_path, "w", encoding="utf-8") as f:
1088
+ json.dump(validation_result, f, indent=2, ensure_ascii=True)
1089
+ f.write("\n")
1090
+ except OSError:
1091
+ artifact_path = ""
1092
+
1093
+ blockers = [
1094
+ c for c in validation_result.get("checks", [])
1095
+ if c.get("status") == "blocker"
1096
+ ]
1097
+
1098
+ result["post_install_validation"] = {
1099
+ "status": validation_result.get("status", "fail"),
1100
+ "artifact_path": artifact_path,
1101
+ "blockers": [{"name": c["name"], "message": c["message"]} for c in blockers],
1102
+ }
1103
+
1104
+ if blockers:
1105
+ result["status"] = "validation_failed"
1106
+
1107
+ return result
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omg-advanced",
3
- "version": "2.1.0",
3
+ "version": "2.1.4",
4
4
  "description": "Advanced OMG commands - deep planning, learning, code review, and specialized workflows",
5
5
  "type": "omg-plugin",
6
6
  "commands": {
@@ -53,35 +53,52 @@
53
53
  "categories": {
54
54
  "planning": {
55
55
  "description": "Strategic planning and architecture",
56
- "commands": ["deep-plan"]
56
+ "commands": [
57
+ "deep-plan"
58
+ ]
57
59
  },
58
60
  "quality": {
59
61
  "description": "Code quality and review",
60
- "commands": ["code-review"]
62
+ "commands": [
63
+ "code-review"
64
+ ]
61
65
  },
62
66
  "knowledge": {
63
67
  "description": "Learning and skill creation",
64
- "commands": ["learn"]
68
+ "commands": [
69
+ "learn"
70
+ ]
65
71
  },
66
72
  "delivery": {
67
73
  "description": "Shipping and release workflows",
68
- "commands": ["ship"]
74
+ "commands": [
75
+ "ship"
76
+ ]
69
77
  },
70
78
  "collaboration": {
71
79
  "description": "Team collaboration and handoff",
72
- "commands": ["handoff"]
80
+ "commands": [
81
+ "handoff"
82
+ ]
73
83
  },
74
84
  "automation": {
75
85
  "description": "Autonomous execution modes",
76
- "commands": ["ralph-start", "ralph-stop"]
86
+ "commands": [
87
+ "ralph-start",
88
+ "ralph-stop"
89
+ ]
77
90
  },
78
91
  "thinking": {
79
92
  "description": "Structured thinking tools",
80
- "commands": ["sequential-thinking"]
93
+ "commands": [
94
+ "sequential-thinking"
95
+ ]
81
96
  },
82
97
  "oss": {
83
98
  "description": "Open source maintainer tools",
84
- "commands": ["maintainer"]
99
+ "commands": [
100
+ "maintainer"
101
+ ]
85
102
  }
86
103
  }
87
104
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omg-core",
3
- "version": "2.1.0",
3
+ "version": "2.1.4",
4
4
  "description": "Core OMG commands - native setup, routing, orchestration, and verification surfaces",
5
5
  "type": "omg-plugin",
6
6
  "commands": {
@@ -64,6 +64,11 @@
64
64
  "description": "Verify project setup and tool integration",
65
65
  "category": "setup"
66
66
  },
67
+ "profile-review": {
68
+ "path": "commands/OMG:profile-review.md",
69
+ "description": "Review governed profile state — preferences, confirmations, decay, provenance",
70
+ "category": "observability"
71
+ },
67
72
  "mode": {
68
73
  "path": "commands/OMG:mode.md",
69
74
  "description": "Set cognitive mode for the session",
@@ -106,43 +111,71 @@
106
111
  "categories": {
107
112
  "setup": {
108
113
  "description": "Project initialization and setup",
109
- "commands": ["setup", "init", "health-check"]
114
+ "commands": [
115
+ "setup",
116
+ "init",
117
+ "health-check"
118
+ ]
110
119
  },
111
120
  "routing": {
112
121
  "description": "Model routing and escalation",
113
- "commands": ["escalate", "teams", "ccg", "preflight"]
122
+ "commands": [
123
+ "escalate",
124
+ "teams",
125
+ "ccg",
126
+ "preflight"
127
+ ]
114
128
  },
115
129
  "verification": {
116
130
  "description": "Verification flows with normalized evidence",
117
- "commands": ["browser"]
131
+ "commands": [
132
+ "browser"
133
+ ]
118
134
  },
119
135
  "orchestration": {
120
136
  "description": "Multi-agent orchestration modes",
121
- "commands": ["crazy"]
137
+ "commands": [
138
+ "crazy"
139
+ ]
122
140
  },
123
141
  "compatibility": {
124
142
  "description": "Legacy compatibility",
125
- "commands": ["compat"]
143
+ "commands": [
144
+ "compat"
145
+ ]
126
146
  },
127
147
  "config": {
128
148
  "description": "Configuration and settings",
129
- "commands": ["mode"]
149
+ "commands": [
150
+ "mode"
151
+ ]
130
152
  },
131
153
  "observability": {
132
154
  "description": "Cost tracking and session observability",
133
- "commands": ["cost", "stats", "deps"]
155
+ "commands": [
156
+ "cost",
157
+ "stats",
158
+ "deps",
159
+ "profile-review"
160
+ ]
134
161
  },
135
162
  "security": {
136
163
  "description": "Canonical security and trust checks",
137
- "commands": ["security-check"]
164
+ "commands": [
165
+ "security-check"
166
+ ]
138
167
  },
139
168
  "contracts": {
140
169
  "description": "Contract replay and API simulation",
141
- "commands": ["api-twin"]
170
+ "commands": [
171
+ "api-twin"
172
+ ]
142
173
  },
143
174
  "visualization": {
144
175
  "description": "Codebase visualization and architecture diagrams",
145
- "commands": ["arch"]
176
+ "commands": [
177
+ "arch"
178
+ ]
146
179
  }
147
180
  },
148
181
  "roles": {
@@ -1,6 +1,6 @@
1
1
  id: algorithms
2
2
  kind: domain-pack
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Algorithms Pack
5
5
  description: Determinism and benchmark attachments for algorithm-heavy work.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: api-twin
2
2
  kind: simulation
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG API Twin
5
5
  description: Versioned endpoint cassette replay with latency, drift, and cost reporting.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: claim-judge
2
2
  kind: proof
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Claim Judge
5
5
  description: Evidence-backed claim validator for structured release and completion claims.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: control-plane
2
2
  kind: skill
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Control Plane
5
5
  description: Canonical production control plane bundle for Claude and Codex.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: data-lineage
2
2
  kind: provenance
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Data Lineage
5
5
  description: Provenance and privacy tracking for traces, fixtures, examples, and synthetic artifacts.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: delta-classifier
2
2
  kind: routing
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Delta Classifier
5
5
  description: Change classifier that attaches risk-aware checks, approvals, and packs.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: eval-gate
2
2
  kind: evaluation
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Eval Gate
5
5
  description: Reproducible evaluation gate that blocks regressions before release.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: health
2
2
  kind: domain-pack
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Health Pack
5
5
  description: Health-sensitive approvals, provenance, and replay attachments.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: hook-governor
2
2
  kind: governance
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Hook Governor
5
5
  description: Canonical hook ordering, policy reinjection, and protected-path governance.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: incident-replay
2
2
  kind: debugging
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Incident Replay
5
5
  description: Replayable bug packs built from logs, failing tests, traces, and diffs.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: lsp-pack
2
2
  kind: diagnostics
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG LSP Pack
5
5
  description: Optional LSP-backed diagnostics and navigation bundle for production verification.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: mcp-fabric
2
2
  kind: mcp
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG MCP Fabric
5
5
  description: Tools, prompts, resources, and server instructions for the OMG control plane.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: plan-council
2
2
  kind: planning
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Plan Council
5
5
  description: Canonical council-style planning bundle for explicit, evidence-backed deep plans.
6
6
  hosts:
@@ -1,6 +1,6 @@
1
1
  id: preflight
2
2
  kind: routing
3
- version: 2.1.0
3
+ version: 2.1.4
4
4
  title: OMG Preflight
5
5
  description: Repo-aware route selection based on diff, manifests, and classified risk.
6
6
  hosts: