@trac3er/oh-my-god 2.2.2 → 2.2.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 (1525) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.claude-plugin/scripts/install.sh +1 -1
  4. package/.gemini/settings.json +2 -2
  5. package/.kimi/mcp.json +2 -2
  6. package/CHANGELOG.md +16 -3
  7. package/CLI-ADAPTER-MAP.md +3 -3
  8. package/OMG-setup.sh +7 -6
  9. package/OMG_COMPAT_CONTRACT.md +2 -2
  10. package/README.md +4 -2
  11. package/artifacts/public/dist/public/manifest.json +2 -2
  12. package/commands/OMG:validate.md +1 -1
  13. package/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
  14. package/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +5 -5
  15. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
  16. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
  17. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
  18. package/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
  19. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
  20. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
  21. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
  22. package/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
  23. package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.minisig +3 -3
  24. package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.statement.json +5 -5
  25. package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.minisig +3 -3
  26. package/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.statement.json +5 -5
  27. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
  28. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
  29. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
  30. package/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
  31. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
  32. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
  33. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
  34. package/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +5 -5
  35. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
  36. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
  37. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
  38. package/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
  39. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
  40. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
  41. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
  42. package/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
  43. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
  44. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
  45. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
  46. package/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
  47. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
  48. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
  49. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
  50. package/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
  51. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.minisig +3 -3
  52. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.statement.json +5 -5
  53. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.minisig +3 -3
  54. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.statement.json +5 -5
  55. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
  56. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
  57. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
  58. package/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
  59. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
  60. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
  61. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
  62. package/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
  63. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
  64. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
  65. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
  66. package/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
  67. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
  68. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
  69. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
  70. package/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
  71. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
  72. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
  73. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
  74. package/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
  75. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
  76. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
  77. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
  78. package/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
  79. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
  80. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
  81. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
  82. package/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
  83. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
  84. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
  85. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
  86. package/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
  87. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
  88. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
  89. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
  90. package/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
  91. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
  92. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
  93. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
  94. package/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
  95. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
  96. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
  97. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
  98. package/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
  99. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
  100. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
  101. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
  102. package/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
  103. package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.minisig +3 -3
  104. package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.statement.json +5 -5
  105. package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.minisig +3 -3
  106. package/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.statement.json +5 -5
  107. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
  108. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
  109. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
  110. package/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
  111. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
  112. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
  113. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
  114. package/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
  115. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
  116. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +5 -5
  117. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
  118. package/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +5 -5
  119. package/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
  120. package/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
  121. package/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
  122. package/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
  123. package/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
  124. package/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
  125. package/dist/enterprise/attestations/bundle/.gemini/settings.json.minisig +3 -3
  126. package/dist/enterprise/attestations/bundle/.gemini/settings.json.statement.json +6 -6
  127. package/dist/enterprise/attestations/bundle/.kimi/mcp.json.minisig +3 -3
  128. package/dist/enterprise/attestations/bundle/.kimi/mcp.json.statement.json +6 -6
  129. package/dist/enterprise/attestations/bundle/.mcp.json.minisig +3 -3
  130. package/dist/enterprise/attestations/bundle/.mcp.json.statement.json +5 -5
  131. package/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
  132. package/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
  133. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +3 -3
  134. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +5 -5
  135. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +3 -3
  136. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +5 -5
  137. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +3 -3
  138. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +5 -5
  139. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +3 -3
  140. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +5 -5
  141. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +3 -3
  142. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +5 -5
  143. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +3 -3
  144. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +5 -5
  145. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +3 -3
  146. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +5 -5
  147. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +3 -3
  148. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +5 -5
  149. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +3 -3
  150. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +5 -5
  151. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +3 -3
  152. package/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +5 -5
  153. package/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
  154. package/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
  155. package/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
  156. package/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
  157. package/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
  158. package/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
  159. package/dist/enterprise/attestations/bundle/registry/bundles/ast-pack.yaml.minisig +3 -3
  160. package/dist/enterprise/attestations/bundle/registry/bundles/ast-pack.yaml.statement.json +6 -6
  161. package/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
  162. package/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
  163. package/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
  164. package/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
  165. package/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
  166. package/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
  167. package/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
  168. package/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
  169. package/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
  170. package/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
  171. package/dist/enterprise/attestations/bundle/registry/bundles/hash-edit.yaml.minisig +3 -3
  172. package/dist/enterprise/attestations/bundle/registry/bundles/hash-edit.yaml.statement.json +6 -6
  173. package/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
  174. package/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
  175. package/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
  176. package/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
  177. package/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
  178. package/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
  179. package/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
  180. package/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
  181. package/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
  182. package/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
  183. package/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
  184. package/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
  185. package/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
  186. package/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
  187. package/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
  188. package/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
  189. package/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
  190. package/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
  191. package/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
  192. package/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
  193. package/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
  194. package/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
  195. package/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
  196. package/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
  197. package/dist/enterprise/attestations/bundle/registry/bundles/terminal-lane.yaml.minisig +3 -3
  198. package/dist/enterprise/attestations/bundle/registry/bundles/terminal-lane.yaml.statement.json +6 -6
  199. package/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
  200. package/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
  201. package/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
  202. package/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
  203. package/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
  204. package/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
  205. package/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
  206. package/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
  207. package/dist/enterprise/attestations/bundle/settings.json.minisig +3 -3
  208. package/dist/enterprise/attestations/bundle/settings.json.statement.json +6 -6
  209. package/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
  210. package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
  211. package/dist/enterprise/bundle/.gemini/settings.json +2 -2
  212. package/dist/enterprise/bundle/.kimi/mcp.json +2 -2
  213. package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +2 -2
  214. package/dist/enterprise/bundle/plugins/advanced/plugin.json +1 -1
  215. package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
  216. package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
  217. package/dist/enterprise/bundle/registry/bundles/ast-pack.yaml +1 -1
  218. package/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +1 -1
  219. package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
  220. package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
  221. package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
  222. package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
  223. package/dist/enterprise/bundle/registry/bundles/hash-edit.yaml +1 -1
  224. package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
  225. package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
  226. package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
  227. package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
  228. package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  229. package/dist/enterprise/bundle/registry/bundles/plan-council.yaml +1 -1
  230. package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
  231. package/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +1 -1
  232. package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  233. package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
  234. package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  235. package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
  236. package/dist/enterprise/bundle/registry/bundles/terminal-lane.yaml +1 -1
  237. package/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  238. package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
  239. package/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
  240. package/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
  241. package/dist/enterprise/bundle/settings.json +3 -3
  242. package/dist/enterprise/manifest.json +133 -133
  243. package/dist/{oh_my_god-2.2.2-py3-none-any.whl → oh_my_god-2.2.3-py3-none-any.whl} +0 -0
  244. package/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +3 -3
  245. package/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +5 -5
  246. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +3 -3
  247. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +5 -5
  248. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +3 -3
  249. package/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +5 -5
  250. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +3 -3
  251. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +5 -5
  252. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +3 -3
  253. package/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +5 -5
  254. package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.minisig +3 -3
  255. package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.statement.json +5 -5
  256. package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.minisig +3 -3
  257. package/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.statement.json +5 -5
  258. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +3 -3
  259. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +5 -5
  260. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +3 -3
  261. package/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +5 -5
  262. package/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +3 -3
  263. package/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +5 -5
  264. package/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +3 -3
  265. package/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +5 -5
  266. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +3 -3
  267. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +5 -5
  268. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +3 -3
  269. package/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +5 -5
  270. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +3 -3
  271. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +5 -5
  272. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +3 -3
  273. package/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +5 -5
  274. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +3 -3
  275. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +5 -5
  276. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +3 -3
  277. package/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +5 -5
  278. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +3 -3
  279. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +5 -5
  280. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +3 -3
  281. package/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +5 -5
  282. package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.minisig +3 -3
  283. package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.statement.json +5 -5
  284. package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.minisig +3 -3
  285. package/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.statement.json +5 -5
  286. package/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +3 -3
  287. package/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +5 -5
  288. package/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +3 -3
  289. package/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +5 -5
  290. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +3 -3
  291. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +5 -5
  292. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +3 -3
  293. package/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +5 -5
  294. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +3 -3
  295. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +5 -5
  296. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +3 -3
  297. package/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +5 -5
  298. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +3 -3
  299. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +5 -5
  300. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +3 -3
  301. package/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +5 -5
  302. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +3 -3
  303. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +5 -5
  304. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +3 -3
  305. package/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +5 -5
  306. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +3 -3
  307. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +5 -5
  308. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +3 -3
  309. package/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +5 -5
  310. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +3 -3
  311. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +5 -5
  312. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +3 -3
  313. package/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +5 -5
  314. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +3 -3
  315. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +5 -5
  316. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +3 -3
  317. package/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +5 -5
  318. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +3 -3
  319. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +5 -5
  320. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +3 -3
  321. package/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +5 -5
  322. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +3 -3
  323. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +5 -5
  324. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +3 -3
  325. package/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +5 -5
  326. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +3 -3
  327. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +5 -5
  328. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +3 -3
  329. package/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +5 -5
  330. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +3 -3
  331. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +5 -5
  332. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +3 -3
  333. package/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +5 -5
  334. package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.minisig +3 -3
  335. package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.statement.json +5 -5
  336. package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.minisig +3 -3
  337. package/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.statement.json +5 -5
  338. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +3 -3
  339. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +5 -5
  340. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +3 -3
  341. package/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +5 -5
  342. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +3 -3
  343. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +5 -5
  344. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +3 -3
  345. package/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +5 -5
  346. package/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +3 -3
  347. package/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +5 -5
  348. package/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +3 -3
  349. package/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +5 -5
  350. package/dist/public/attestations/bundle/.claude-plugin/marketplace.json.minisig +3 -3
  351. package/dist/public/attestations/bundle/.claude-plugin/marketplace.json.statement.json +6 -6
  352. package/dist/public/attestations/bundle/.claude-plugin/mcp.json.minisig +3 -3
  353. package/dist/public/attestations/bundle/.claude-plugin/mcp.json.statement.json +5 -5
  354. package/dist/public/attestations/bundle/.claude-plugin/plugin.json.minisig +3 -3
  355. package/dist/public/attestations/bundle/.claude-plugin/plugin.json.statement.json +6 -6
  356. package/dist/public/attestations/bundle/.gemini/settings.json.minisig +3 -3
  357. package/dist/public/attestations/bundle/.gemini/settings.json.statement.json +6 -6
  358. package/dist/public/attestations/bundle/.kimi/mcp.json.minisig +3 -3
  359. package/dist/public/attestations/bundle/.kimi/mcp.json.statement.json +6 -6
  360. package/dist/public/attestations/bundle/.mcp.json.minisig +3 -3
  361. package/dist/public/attestations/bundle/.mcp.json.statement.json +5 -5
  362. package/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +3 -3
  363. package/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +6 -6
  364. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +3 -3
  365. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +5 -5
  366. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +3 -3
  367. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +5 -5
  368. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +3 -3
  369. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +5 -5
  370. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +3 -3
  371. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +5 -5
  372. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +3 -3
  373. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +5 -5
  374. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +3 -3
  375. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +5 -5
  376. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +3 -3
  377. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +5 -5
  378. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +3 -3
  379. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +5 -5
  380. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +3 -3
  381. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +5 -5
  382. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +3 -3
  383. package/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +5 -5
  384. package/dist/public/attestations/bundle/plugins/advanced/plugin.json.minisig +3 -3
  385. package/dist/public/attestations/bundle/plugins/advanced/plugin.json.statement.json +6 -6
  386. package/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.minisig +3 -3
  387. package/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +6 -6
  388. package/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.minisig +3 -3
  389. package/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +6 -6
  390. package/dist/public/attestations/bundle/registry/bundles/ast-pack.yaml.minisig +3 -3
  391. package/dist/public/attestations/bundle/registry/bundles/ast-pack.yaml.statement.json +6 -6
  392. package/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +3 -3
  393. package/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +6 -6
  394. package/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.minisig +3 -3
  395. package/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +6 -6
  396. package/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +3 -3
  397. package/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +6 -6
  398. package/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +3 -3
  399. package/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +6 -6
  400. package/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +3 -3
  401. package/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +6 -6
  402. package/dist/public/attestations/bundle/registry/bundles/hash-edit.yaml.minisig +3 -3
  403. package/dist/public/attestations/bundle/registry/bundles/hash-edit.yaml.statement.json +6 -6
  404. package/dist/public/attestations/bundle/registry/bundles/health.yaml.minisig +3 -3
  405. package/dist/public/attestations/bundle/registry/bundles/health.yaml.statement.json +6 -6
  406. package/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +3 -3
  407. package/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +6 -6
  408. package/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +3 -3
  409. package/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +6 -6
  410. package/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +3 -3
  411. package/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +6 -6
  412. package/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +3 -3
  413. package/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +6 -6
  414. package/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.minisig +3 -3
  415. package/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +6 -6
  416. package/dist/public/attestations/bundle/registry/bundles/preflight.yaml.minisig +3 -3
  417. package/dist/public/attestations/bundle/registry/bundles/preflight.yaml.statement.json +6 -6
  418. package/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +3 -3
  419. package/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +6 -6
  420. package/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +3 -3
  421. package/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +6 -6
  422. package/dist/public/attestations/bundle/registry/bundles/robotics.yaml.minisig +3 -3
  423. package/dist/public/attestations/bundle/registry/bundles/robotics.yaml.statement.json +6 -6
  424. package/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +3 -3
  425. package/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +6 -6
  426. package/dist/public/attestations/bundle/registry/bundles/security-check.yaml.minisig +3 -3
  427. package/dist/public/attestations/bundle/registry/bundles/security-check.yaml.statement.json +6 -6
  428. package/dist/public/attestations/bundle/registry/bundles/terminal-lane.yaml.minisig +3 -3
  429. package/dist/public/attestations/bundle/registry/bundles/terminal-lane.yaml.statement.json +6 -6
  430. package/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +3 -3
  431. package/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +6 -6
  432. package/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.minisig +3 -3
  433. package/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +6 -6
  434. package/dist/public/attestations/bundle/registry/bundles/vision.yaml.minisig +3 -3
  435. package/dist/public/attestations/bundle/registry/bundles/vision.yaml.statement.json +6 -6
  436. package/dist/public/attestations/bundle/registry/omg-capability.schema.json.minisig +3 -3
  437. package/dist/public/attestations/bundle/registry/omg-capability.schema.json.statement.json +6 -6
  438. package/dist/public/attestations/bundle/settings.json.minisig +3 -3
  439. package/dist/public/attestations/bundle/settings.json.statement.json +6 -6
  440. package/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
  441. package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
  442. package/dist/public/bundle/.gemini/settings.json +2 -2
  443. package/dist/public/bundle/.kimi/mcp.json +2 -2
  444. package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +2 -2
  445. package/dist/public/bundle/plugins/advanced/plugin.json +1 -1
  446. package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
  447. package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
  448. package/dist/public/bundle/registry/bundles/ast-pack.yaml +1 -1
  449. package/dist/public/bundle/registry/bundles/claim-judge.yaml +1 -1
  450. package/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
  451. package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
  452. package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
  453. package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
  454. package/dist/public/bundle/registry/bundles/hash-edit.yaml +1 -1
  455. package/dist/public/bundle/registry/bundles/health.yaml +1 -1
  456. package/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
  457. package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
  458. package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
  459. package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
  460. package/dist/public/bundle/registry/bundles/plan-council.yaml +1 -1
  461. package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
  462. package/dist/public/bundle/registry/bundles/proof-gate.yaml +1 -1
  463. package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
  464. package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
  465. package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  466. package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
  467. package/dist/public/bundle/registry/bundles/terminal-lane.yaml +1 -1
  468. package/dist/public/bundle/registry/bundles/test-intent-lock.yaml +1 -1
  469. package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
  470. package/dist/public/bundle/registry/bundles/vision.yaml +1 -1
  471. package/dist/public/bundle/registry/omg-capability.schema.json +1 -1
  472. package/dist/public/bundle/settings.json +3 -3
  473. package/dist/public/manifest.json +133 -133
  474. package/docs/install/github-app.md +81 -0
  475. package/hooks/_common.py +20 -6
  476. package/hooks/context_pressure.py +45 -11
  477. package/hooks/pre-compact.py +21 -21
  478. package/hooks/secret-guard.py +3 -2
  479. package/hooks/stop_dispatcher.py +20 -2
  480. package/hooks/terms-guard.py +96 -0
  481. package/hooks/test-validator.py +36 -4
  482. package/hud/omg-hud.mjs +1 -1
  483. package/package.json +1 -1
  484. package/plugins/advanced/plugin.json +1 -1
  485. package/plugins/core/plugin.json +1 -1
  486. package/pyproject.toml +6 -2
  487. package/registry/bundles/algorithms.yaml +1 -1
  488. package/registry/bundles/api-twin.yaml +1 -1
  489. package/registry/bundles/ast-pack.yaml +1 -1
  490. package/registry/bundles/claim-judge.yaml +1 -1
  491. package/registry/bundles/control-plane.yaml +1 -1
  492. package/registry/bundles/data-lineage.yaml +1 -1
  493. package/registry/bundles/delta-classifier.yaml +1 -1
  494. package/registry/bundles/eval-gate.yaml +1 -1
  495. package/registry/bundles/hash-edit.yaml +1 -1
  496. package/registry/bundles/health.yaml +1 -1
  497. package/registry/bundles/hook-governor.yaml +1 -1
  498. package/registry/bundles/incident-replay.yaml +1 -1
  499. package/registry/bundles/lsp-pack.yaml +1 -1
  500. package/registry/bundles/mcp-fabric.yaml +1 -1
  501. package/registry/bundles/plan-council.yaml +1 -1
  502. package/registry/bundles/preflight.yaml +1 -1
  503. package/registry/bundles/proof-gate.yaml +1 -1
  504. package/registry/bundles/remote-supervisor.yaml +1 -1
  505. package/registry/bundles/robotics.yaml +1 -1
  506. package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
  507. package/registry/bundles/security-check.yaml +1 -1
  508. package/registry/bundles/terminal-lane.yaml +1 -1
  509. package/registry/bundles/test-intent-lock.yaml +1 -1
  510. package/registry/bundles/tracebank.yaml +1 -1
  511. package/registry/bundles/vision.yaml +1 -1
  512. package/registry/omg-capability.schema.json +1 -1
  513. package/runtime/adoption.py +3 -2
  514. package/runtime/background_verification.py +44 -2
  515. package/runtime/canonical_surface.py +3 -2
  516. package/runtime/claim_judge.py +37 -3
  517. package/runtime/compliance_governor.py +83 -2
  518. package/runtime/context_compiler.py +131 -0
  519. package/runtime/context_limits.py +15 -3
  520. package/runtime/contract_compiler.py +291 -28
  521. package/runtime/delta_classifier.py +68 -0
  522. package/runtime/evidence_query.py +14 -3
  523. package/runtime/evidence_requirements.py +44 -5
  524. package/runtime/github_integration.py +255 -0
  525. package/runtime/github_review_bot.py +290 -0
  526. package/runtime/github_review_contract.py +65 -0
  527. package/runtime/github_review_formatter.py +179 -0
  528. package/runtime/guide_assert.py +90 -0
  529. package/runtime/host_parity.py +53 -1
  530. package/runtime/merge_writer.py +89 -1
  531. package/runtime/music_omr_testbed.py +3 -0
  532. package/runtime/mutation_gate.py +84 -5
  533. package/runtime/omg_compat_contract_snapshot.json +1 -1
  534. package/runtime/proof_gate.py +62 -0
  535. package/runtime/provider_parity_eval.py +109 -0
  536. package/runtime/providers/codex_provider.py +2 -1
  537. package/runtime/providers/gemini_provider.py +2 -1
  538. package/runtime/providers/kimi_provider.py +2 -1
  539. package/runtime/release_run_coordinator.py +60 -1
  540. package/runtime/release_surfaces.py +31 -0
  541. package/runtime/team_router.py +3 -3
  542. package/runtime/test_intent_lock.py +49 -2
  543. package/runtime/tool_plan_gate.py +33 -1
  544. package/runtime/vision_jobs.py +4 -1
  545. package/scripts/github_review_helpers.py +241 -0
  546. package/scripts/omg.py +63 -6
  547. package/scripts/prepare-release-proof-fixtures.py +85 -12
  548. package/settings.json +13 -3
  549. package/artifacts/release/.agents/skills/omg/AGENTS.fragment.md +0 -75
  550. package/artifacts/release/.agents/skills/omg/algorithms/SKILL.md +0 -11
  551. package/artifacts/release/.agents/skills/omg/algorithms/openai.yaml +0 -11
  552. package/artifacts/release/.agents/skills/omg/api-twin/SKILL.md +0 -11
  553. package/artifacts/release/.agents/skills/omg/api-twin/openai.yaml +0 -12
  554. package/artifacts/release/.agents/skills/omg/ast-pack/SKILL.md +0 -11
  555. package/artifacts/release/.agents/skills/omg/ast-pack/openai.yaml +0 -12
  556. package/artifacts/release/.agents/skills/omg/claim-judge/SKILL.md +0 -11
  557. package/artifacts/release/.agents/skills/omg/claim-judge/openai.yaml +0 -13
  558. package/artifacts/release/.agents/skills/omg/codex-mcp.toml +0 -4
  559. package/artifacts/release/.agents/skills/omg/codex-rules.md +0 -38
  560. package/artifacts/release/.agents/skills/omg/control-plane/SKILL.md +0 -11
  561. package/artifacts/release/.agents/skills/omg/control-plane/openai.yaml +0 -14
  562. package/artifacts/release/.agents/skills/omg/data-lineage/SKILL.md +0 -11
  563. package/artifacts/release/.agents/skills/omg/data-lineage/openai.yaml +0 -12
  564. package/artifacts/release/.agents/skills/omg/delta-classifier/SKILL.md +0 -11
  565. package/artifacts/release/.agents/skills/omg/delta-classifier/openai.yaml +0 -12
  566. package/artifacts/release/.agents/skills/omg/eval-gate/SKILL.md +0 -11
  567. package/artifacts/release/.agents/skills/omg/eval-gate/openai.yaml +0 -12
  568. package/artifacts/release/.agents/skills/omg/hash-edit/SKILL.md +0 -11
  569. package/artifacts/release/.agents/skills/omg/hash-edit/openai.yaml +0 -11
  570. package/artifacts/release/.agents/skills/omg/health/SKILL.md +0 -11
  571. package/artifacts/release/.agents/skills/omg/health/openai.yaml +0 -11
  572. package/artifacts/release/.agents/skills/omg/hook-governor/SKILL.md +0 -11
  573. package/artifacts/release/.agents/skills/omg/hook-governor/openai.yaml +0 -11
  574. package/artifacts/release/.agents/skills/omg/incident-replay/SKILL.md +0 -11
  575. package/artifacts/release/.agents/skills/omg/incident-replay/openai.yaml +0 -12
  576. package/artifacts/release/.agents/skills/omg/lsp-pack/SKILL.md +0 -11
  577. package/artifacts/release/.agents/skills/omg/lsp-pack/openai.yaml +0 -12
  578. package/artifacts/release/.agents/skills/omg/mcp-fabric/SKILL.md +0 -11
  579. package/artifacts/release/.agents/skills/omg/mcp-fabric/openai.yaml +0 -13
  580. package/artifacts/release/.agents/skills/omg/plan-council/SKILL.md +0 -11
  581. package/artifacts/release/.agents/skills/omg/plan-council/openai.yaml +0 -12
  582. package/artifacts/release/.agents/skills/omg/preflight/SKILL.md +0 -11
  583. package/artifacts/release/.agents/skills/omg/preflight/openai.yaml +0 -12
  584. package/artifacts/release/.agents/skills/omg/proof-gate/SKILL.md +0 -11
  585. package/artifacts/release/.agents/skills/omg/proof-gate/openai.yaml +0 -13
  586. package/artifacts/release/.agents/skills/omg/remote-supervisor/SKILL.md +0 -11
  587. package/artifacts/release/.agents/skills/omg/remote-supervisor/openai.yaml +0 -12
  588. package/artifacts/release/.agents/skills/omg/robotics/SKILL.md +0 -11
  589. package/artifacts/release/.agents/skills/omg/robotics/openai.yaml +0 -11
  590. package/artifacts/release/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +0 -11
  591. package/artifacts/release/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +0 -12
  592. package/artifacts/release/.agents/skills/omg/security-check/SKILL.md +0 -11
  593. package/artifacts/release/.agents/skills/omg/security-check/openai.yaml +0 -13
  594. package/artifacts/release/.agents/skills/omg/terminal-lane/SKILL.md +0 -11
  595. package/artifacts/release/.agents/skills/omg/terminal-lane/openai.yaml +0 -11
  596. package/artifacts/release/.agents/skills/omg/test-intent-lock/SKILL.md +0 -11
  597. package/artifacts/release/.agents/skills/omg/test-intent-lock/openai.yaml +0 -13
  598. package/artifacts/release/.agents/skills/omg/tracebank/SKILL.md +0 -11
  599. package/artifacts/release/.agents/skills/omg/tracebank/openai.yaml +0 -12
  600. package/artifacts/release/.agents/skills/omg/vision/SKILL.md +0 -11
  601. package/artifacts/release/.agents/skills/omg/vision/openai.yaml +0 -11
  602. package/artifacts/release/.claude-plugin/marketplace.json +0 -36
  603. package/artifacts/release/.claude-plugin/mcp.json +0 -11
  604. package/artifacts/release/.claude-plugin/plugin.json +0 -23
  605. package/artifacts/release/.gemini/settings.json +0 -72
  606. package/artifacts/release/.kimi/mcp.json +0 -72
  607. package/artifacts/release/.mcp.json +0 -18
  608. package/artifacts/release/OMG_COMPAT_CONTRACT.md +0 -111
  609. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +0 -4
  610. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +0 -35
  611. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +0 -4
  612. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +0 -35
  613. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +0 -4
  614. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +0 -35
  615. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +0 -4
  616. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +0 -35
  617. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +0 -4
  618. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +0 -35
  619. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.minisig +0 -4
  620. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.statement.json +0 -35
  621. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.minisig +0 -4
  622. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.statement.json +0 -35
  623. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +0 -4
  624. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +0 -35
  625. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +0 -4
  626. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +0 -35
  627. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +0 -4
  628. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +0 -35
  629. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +0 -4
  630. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +0 -35
  631. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +0 -4
  632. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +0 -35
  633. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +0 -4
  634. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +0 -35
  635. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +0 -4
  636. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +0 -35
  637. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +0 -4
  638. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +0 -35
  639. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +0 -4
  640. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +0 -35
  641. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +0 -4
  642. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +0 -35
  643. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +0 -4
  644. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +0 -35
  645. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +0 -4
  646. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +0 -35
  647. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.minisig +0 -4
  648. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.statement.json +0 -35
  649. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.minisig +0 -4
  650. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.statement.json +0 -35
  651. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +0 -4
  652. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +0 -35
  653. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +0 -4
  654. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +0 -35
  655. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +0 -4
  656. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +0 -35
  657. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +0 -4
  658. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +0 -35
  659. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +0 -4
  660. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +0 -35
  661. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +0 -4
  662. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +0 -35
  663. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +0 -4
  664. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +0 -35
  665. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +0 -4
  666. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +0 -35
  667. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +0 -4
  668. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +0 -35
  669. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +0 -4
  670. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +0 -35
  671. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +0 -4
  672. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +0 -35
  673. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +0 -4
  674. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +0 -35
  675. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +0 -4
  676. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +0 -35
  677. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +0 -4
  678. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +0 -35
  679. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +0 -4
  680. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +0 -35
  681. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +0 -4
  682. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +0 -35
  683. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +0 -4
  684. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +0 -35
  685. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +0 -4
  686. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +0 -35
  687. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +0 -4
  688. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +0 -35
  689. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +0 -4
  690. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +0 -35
  691. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +0 -4
  692. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +0 -35
  693. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +0 -4
  694. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +0 -35
  695. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +0 -4
  696. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +0 -35
  697. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +0 -4
  698. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +0 -35
  699. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.minisig +0 -4
  700. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.statement.json +0 -35
  701. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.minisig +0 -4
  702. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.statement.json +0 -35
  703. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +0 -4
  704. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +0 -35
  705. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +0 -4
  706. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +0 -35
  707. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +0 -4
  708. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +0 -35
  709. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +0 -4
  710. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +0 -35
  711. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +0 -4
  712. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +0 -35
  713. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +0 -4
  714. package/artifacts/release/dist/enterprise/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +0 -35
  715. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.minisig +0 -4
  716. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/marketplace.json.statement.json +0 -35
  717. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.minisig +0 -4
  718. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/mcp.json.statement.json +0 -35
  719. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.minisig +0 -4
  720. package/artifacts/release/dist/enterprise/attestations/bundle/.claude-plugin/plugin.json.statement.json +0 -35
  721. package/artifacts/release/dist/enterprise/attestations/bundle/.gemini/settings.json.minisig +0 -4
  722. package/artifacts/release/dist/enterprise/attestations/bundle/.gemini/settings.json.statement.json +0 -35
  723. package/artifacts/release/dist/enterprise/attestations/bundle/.kimi/mcp.json.minisig +0 -4
  724. package/artifacts/release/dist/enterprise/attestations/bundle/.kimi/mcp.json.statement.json +0 -35
  725. package/artifacts/release/dist/enterprise/attestations/bundle/.mcp.json.minisig +0 -4
  726. package/artifacts/release/dist/enterprise/attestations/bundle/.mcp.json.statement.json +0 -35
  727. package/artifacts/release/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +0 -4
  728. package/artifacts/release/dist/enterprise/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +0 -35
  729. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +0 -4
  730. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +0 -35
  731. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +0 -4
  732. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +0 -35
  733. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +0 -4
  734. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +0 -35
  735. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +0 -4
  736. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +0 -35
  737. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +0 -4
  738. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +0 -35
  739. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +0 -4
  740. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +0 -35
  741. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +0 -4
  742. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +0 -35
  743. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +0 -4
  744. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +0 -35
  745. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +0 -4
  746. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +0 -35
  747. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +0 -4
  748. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +0 -35
  749. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.minisig +0 -4
  750. package/artifacts/release/dist/enterprise/attestations/bundle/plugins/advanced/plugin.json.statement.json +0 -35
  751. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.minisig +0 -4
  752. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +0 -35
  753. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.minisig +0 -4
  754. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +0 -35
  755. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/ast-pack.yaml.minisig +0 -4
  756. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/ast-pack.yaml.statement.json +0 -35
  757. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +0 -4
  758. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +0 -35
  759. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.minisig +0 -4
  760. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +0 -35
  761. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +0 -4
  762. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +0 -35
  763. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +0 -4
  764. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +0 -35
  765. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +0 -4
  766. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +0 -35
  767. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/hash-edit.yaml.minisig +0 -4
  768. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/hash-edit.yaml.statement.json +0 -35
  769. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.minisig +0 -4
  770. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/health.yaml.statement.json +0 -35
  771. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +0 -4
  772. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +0 -35
  773. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +0 -4
  774. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +0 -35
  775. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +0 -4
  776. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +0 -35
  777. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +0 -4
  778. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +0 -35
  779. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.minisig +0 -4
  780. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +0 -35
  781. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.minisig +0 -4
  782. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/preflight.yaml.statement.json +0 -35
  783. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +0 -4
  784. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +0 -35
  785. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +0 -4
  786. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +0 -35
  787. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.minisig +0 -4
  788. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/robotics.yaml.statement.json +0 -35
  789. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +0 -4
  790. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +0 -35
  791. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.minisig +0 -4
  792. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/security-check.yaml.statement.json +0 -35
  793. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/terminal-lane.yaml.minisig +0 -4
  794. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/terminal-lane.yaml.statement.json +0 -35
  795. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +0 -4
  796. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +0 -35
  797. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.minisig +0 -4
  798. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +0 -35
  799. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.minisig +0 -4
  800. package/artifacts/release/dist/enterprise/attestations/bundle/registry/bundles/vision.yaml.statement.json +0 -35
  801. package/artifacts/release/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.minisig +0 -4
  802. package/artifacts/release/dist/enterprise/attestations/bundle/registry/omg-capability.schema.json.statement.json +0 -35
  803. package/artifacts/release/dist/enterprise/attestations/bundle/settings.json.minisig +0 -4
  804. package/artifacts/release/dist/enterprise/attestations/bundle/settings.json.statement.json +0 -35
  805. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +0 -75
  806. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/algorithms/SKILL.md +0 -11
  807. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/algorithms/openai.yaml +0 -11
  808. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/api-twin/SKILL.md +0 -11
  809. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/api-twin/openai.yaml +0 -12
  810. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/ast-pack/SKILL.md +0 -11
  811. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/ast-pack/openai.yaml +0 -12
  812. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/claim-judge/SKILL.md +0 -11
  813. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/claim-judge/openai.yaml +0 -13
  814. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-mcp.toml +0 -4
  815. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +0 -38
  816. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/control-plane/SKILL.md +0 -11
  817. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/control-plane/openai.yaml +0 -14
  818. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/data-lineage/SKILL.md +0 -11
  819. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/data-lineage/openai.yaml +0 -12
  820. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/delta-classifier/SKILL.md +0 -11
  821. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/delta-classifier/openai.yaml +0 -12
  822. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/eval-gate/SKILL.md +0 -11
  823. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/eval-gate/openai.yaml +0 -12
  824. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hash-edit/SKILL.md +0 -11
  825. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hash-edit/openai.yaml +0 -11
  826. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/health/SKILL.md +0 -11
  827. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/health/openai.yaml +0 -11
  828. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hook-governor/SKILL.md +0 -11
  829. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/hook-governor/openai.yaml +0 -11
  830. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/incident-replay/SKILL.md +0 -11
  831. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/incident-replay/openai.yaml +0 -12
  832. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/lsp-pack/SKILL.md +0 -11
  833. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/lsp-pack/openai.yaml +0 -12
  834. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +0 -11
  835. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +0 -13
  836. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/plan-council/SKILL.md +0 -11
  837. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/plan-council/openai.yaml +0 -12
  838. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/preflight/SKILL.md +0 -11
  839. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/preflight/openai.yaml +0 -12
  840. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/proof-gate/SKILL.md +0 -11
  841. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/proof-gate/openai.yaml +0 -13
  842. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +0 -11
  843. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +0 -12
  844. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/robotics/SKILL.md +0 -11
  845. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/robotics/openai.yaml +0 -11
  846. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +0 -11
  847. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +0 -12
  848. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/security-check/SKILL.md +0 -11
  849. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/security-check/openai.yaml +0 -13
  850. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/terminal-lane/SKILL.md +0 -11
  851. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/terminal-lane/openai.yaml +0 -11
  852. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/test-intent-lock/SKILL.md +0 -11
  853. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/test-intent-lock/openai.yaml +0 -13
  854. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/tracebank/SKILL.md +0 -11
  855. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/tracebank/openai.yaml +0 -12
  856. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/SKILL.md +0 -11
  857. package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/vision/openai.yaml +0 -11
  858. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/marketplace.json +0 -36
  859. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/mcp.json +0 -11
  860. package/artifacts/release/dist/enterprise/bundle/.claude-plugin/plugin.json +0 -23
  861. package/artifacts/release/dist/enterprise/bundle/.gemini/settings.json +0 -72
  862. package/artifacts/release/dist/enterprise/bundle/.kimi/mcp.json +0 -72
  863. package/artifacts/release/dist/enterprise/bundle/.mcp.json +0 -18
  864. package/artifacts/release/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +0 -111
  865. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:code-review.md +0 -114
  866. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:deep-plan.md +0 -266
  867. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:handoff.md +0 -115
  868. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:learn.md +0 -110
  869. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:maintainer.md +0 -31
  870. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-start.md +0 -43
  871. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-stop.md +0 -23
  872. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:security-review.md +0 -16
  873. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +0 -20
  874. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:ship.md +0 -46
  875. package/artifacts/release/dist/enterprise/bundle/plugins/advanced/plugin.json +0 -104
  876. package/artifacts/release/dist/enterprise/bundle/registry/bundles/algorithms.yaml +0 -45
  877. package/artifacts/release/dist/enterprise/bundle/registry/bundles/api-twin.yaml +0 -48
  878. package/artifacts/release/dist/enterprise/bundle/registry/bundles/ast-pack.yaml +0 -80
  879. package/artifacts/release/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +0 -49
  880. package/artifacts/release/dist/enterprise/bundle/registry/bundles/control-plane.yaml +0 -192
  881. package/artifacts/release/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +0 -47
  882. package/artifacts/release/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +0 -47
  883. package/artifacts/release/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +0 -47
  884. package/artifacts/release/dist/enterprise/bundle/registry/bundles/hash-edit.yaml +0 -73
  885. package/artifacts/release/dist/enterprise/bundle/registry/bundles/health.yaml +0 -45
  886. package/artifacts/release/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +0 -101
  887. package/artifacts/release/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +0 -47
  888. package/artifacts/release/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +0 -80
  889. package/artifacts/release/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +0 -53
  890. package/artifacts/release/dist/enterprise/bundle/registry/bundles/plan-council.yaml +0 -56
  891. package/artifacts/release/dist/enterprise/bundle/registry/bundles/preflight.yaml +0 -48
  892. package/artifacts/release/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +0 -49
  893. package/artifacts/release/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +0 -49
  894. package/artifacts/release/dist/enterprise/bundle/registry/bundles/robotics.yaml +0 -45
  895. package/artifacts/release/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +0 -69
  896. package/artifacts/release/dist/enterprise/bundle/registry/bundles/security-check.yaml +0 -50
  897. package/artifacts/release/dist/enterprise/bundle/registry/bundles/terminal-lane.yaml +0 -61
  898. package/artifacts/release/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +0 -49
  899. package/artifacts/release/dist/enterprise/bundle/registry/bundles/tracebank.yaml +0 -47
  900. package/artifacts/release/dist/enterprise/bundle/registry/bundles/vision.yaml +0 -45
  901. package/artifacts/release/dist/enterprise/bundle/registry/omg-capability.schema.json +0 -378
  902. package/artifacts/release/dist/enterprise/bundle/settings.json +0 -694
  903. package/artifacts/release/dist/enterprise/manifest.json +0 -1093
  904. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.minisig +0 -4
  905. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/AGENTS.fragment.md.statement.json +0 -35
  906. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.minisig +0 -4
  907. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/SKILL.md.statement.json +0 -35
  908. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.minisig +0 -4
  909. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/algorithms/openai.yaml.statement.json +0 -35
  910. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.minisig +0 -4
  911. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/SKILL.md.statement.json +0 -35
  912. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.minisig +0 -4
  913. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/api-twin/openai.yaml.statement.json +0 -35
  914. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.minisig +0 -4
  915. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/SKILL.md.statement.json +0 -35
  916. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.minisig +0 -4
  917. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/ast-pack/openai.yaml.statement.json +0 -35
  918. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.minisig +0 -4
  919. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/SKILL.md.statement.json +0 -35
  920. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.minisig +0 -4
  921. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/claim-judge/openai.yaml.statement.json +0 -35
  922. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.minisig +0 -4
  923. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-mcp.toml.statement.json +0 -35
  924. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.minisig +0 -4
  925. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/codex-rules.md.statement.json +0 -35
  926. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.minisig +0 -4
  927. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/SKILL.md.statement.json +0 -35
  928. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.minisig +0 -4
  929. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/control-plane/openai.yaml.statement.json +0 -35
  930. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.minisig +0 -4
  931. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/SKILL.md.statement.json +0 -35
  932. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.minisig +0 -4
  933. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/data-lineage/openai.yaml.statement.json +0 -35
  934. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.minisig +0 -4
  935. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/SKILL.md.statement.json +0 -35
  936. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.minisig +0 -4
  937. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/delta-classifier/openai.yaml.statement.json +0 -35
  938. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.minisig +0 -4
  939. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/SKILL.md.statement.json +0 -35
  940. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.minisig +0 -4
  941. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/eval-gate/openai.yaml.statement.json +0 -35
  942. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.minisig +0 -4
  943. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/SKILL.md.statement.json +0 -35
  944. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.minisig +0 -4
  945. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hash-edit/openai.yaml.statement.json +0 -35
  946. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.minisig +0 -4
  947. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/SKILL.md.statement.json +0 -35
  948. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.minisig +0 -4
  949. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/health/openai.yaml.statement.json +0 -35
  950. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.minisig +0 -4
  951. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/SKILL.md.statement.json +0 -35
  952. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.minisig +0 -4
  953. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/hook-governor/openai.yaml.statement.json +0 -35
  954. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.minisig +0 -4
  955. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/SKILL.md.statement.json +0 -35
  956. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.minisig +0 -4
  957. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/incident-replay/openai.yaml.statement.json +0 -35
  958. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.minisig +0 -4
  959. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/SKILL.md.statement.json +0 -35
  960. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.minisig +0 -4
  961. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/lsp-pack/openai.yaml.statement.json +0 -35
  962. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.minisig +0 -4
  963. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/SKILL.md.statement.json +0 -35
  964. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.minisig +0 -4
  965. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/mcp-fabric/openai.yaml.statement.json +0 -35
  966. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.minisig +0 -4
  967. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/SKILL.md.statement.json +0 -35
  968. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.minisig +0 -4
  969. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/plan-council/openai.yaml.statement.json +0 -35
  970. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.minisig +0 -4
  971. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/SKILL.md.statement.json +0 -35
  972. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.minisig +0 -4
  973. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/preflight/openai.yaml.statement.json +0 -35
  974. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.minisig +0 -4
  975. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/SKILL.md.statement.json +0 -35
  976. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.minisig +0 -4
  977. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/proof-gate/openai.yaml.statement.json +0 -35
  978. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.minisig +0 -4
  979. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/SKILL.md.statement.json +0 -35
  980. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.minisig +0 -4
  981. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/remote-supervisor/openai.yaml.statement.json +0 -35
  982. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.minisig +0 -4
  983. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/SKILL.md.statement.json +0 -35
  984. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.minisig +0 -4
  985. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/robotics/openai.yaml.statement.json +0 -35
  986. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.minisig +0 -4
  987. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md.statement.json +0 -35
  988. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.minisig +0 -4
  989. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml.statement.json +0 -35
  990. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.minisig +0 -4
  991. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/SKILL.md.statement.json +0 -35
  992. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.minisig +0 -4
  993. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/security-check/openai.yaml.statement.json +0 -35
  994. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.minisig +0 -4
  995. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/SKILL.md.statement.json +0 -35
  996. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.minisig +0 -4
  997. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/terminal-lane/openai.yaml.statement.json +0 -35
  998. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.minisig +0 -4
  999. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/SKILL.md.statement.json +0 -35
  1000. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.minisig +0 -4
  1001. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/test-intent-lock/openai.yaml.statement.json +0 -35
  1002. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.minisig +0 -4
  1003. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/SKILL.md.statement.json +0 -35
  1004. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.minisig +0 -4
  1005. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/tracebank/openai.yaml.statement.json +0 -35
  1006. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.minisig +0 -4
  1007. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/SKILL.md.statement.json +0 -35
  1008. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.minisig +0 -4
  1009. package/artifacts/release/dist/public/attestations/bundle/.agents/skills/omg/vision/openai.yaml.statement.json +0 -35
  1010. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/marketplace.json.minisig +0 -4
  1011. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/marketplace.json.statement.json +0 -35
  1012. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/mcp.json.minisig +0 -4
  1013. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/mcp.json.statement.json +0 -35
  1014. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/plugin.json.minisig +0 -4
  1015. package/artifacts/release/dist/public/attestations/bundle/.claude-plugin/plugin.json.statement.json +0 -35
  1016. package/artifacts/release/dist/public/attestations/bundle/.gemini/settings.json.minisig +0 -4
  1017. package/artifacts/release/dist/public/attestations/bundle/.gemini/settings.json.statement.json +0 -35
  1018. package/artifacts/release/dist/public/attestations/bundle/.kimi/mcp.json.minisig +0 -4
  1019. package/artifacts/release/dist/public/attestations/bundle/.kimi/mcp.json.statement.json +0 -35
  1020. package/artifacts/release/dist/public/attestations/bundle/.mcp.json.minisig +0 -4
  1021. package/artifacts/release/dist/public/attestations/bundle/.mcp.json.statement.json +0 -35
  1022. package/artifacts/release/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.minisig +0 -4
  1023. package/artifacts/release/dist/public/attestations/bundle/OMG_COMPAT_CONTRACT.md.statement.json +0 -35
  1024. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.minisig +0 -4
  1025. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:code-review.md.statement.json +0 -35
  1026. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.minisig +0 -4
  1027. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:deep-plan.md.statement.json +0 -35
  1028. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.minisig +0 -4
  1029. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:handoff.md.statement.json +0 -35
  1030. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.minisig +0 -4
  1031. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:learn.md.statement.json +0 -35
  1032. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.minisig +0 -4
  1033. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:maintainer.md.statement.json +0 -35
  1034. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.minisig +0 -4
  1035. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-start.md.statement.json +0 -35
  1036. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.minisig +0 -4
  1037. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ralph-stop.md.statement.json +0 -35
  1038. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.minisig +0 -4
  1039. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:security-review.md.statement.json +0 -35
  1040. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.minisig +0 -4
  1041. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:sequential-thinking.md.statement.json +0 -35
  1042. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.minisig +0 -4
  1043. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/commands/OMG:ship.md.statement.json +0 -35
  1044. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/plugin.json.minisig +0 -4
  1045. package/artifacts/release/dist/public/attestations/bundle/plugins/advanced/plugin.json.statement.json +0 -35
  1046. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.minisig +0 -4
  1047. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/algorithms.yaml.statement.json +0 -35
  1048. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.minisig +0 -4
  1049. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/api-twin.yaml.statement.json +0 -35
  1050. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/ast-pack.yaml.minisig +0 -4
  1051. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/ast-pack.yaml.statement.json +0 -35
  1052. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.minisig +0 -4
  1053. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/claim-judge.yaml.statement.json +0 -35
  1054. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.minisig +0 -4
  1055. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/control-plane.yaml.statement.json +0 -35
  1056. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.minisig +0 -4
  1057. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/data-lineage.yaml.statement.json +0 -35
  1058. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.minisig +0 -4
  1059. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/delta-classifier.yaml.statement.json +0 -35
  1060. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.minisig +0 -4
  1061. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/eval-gate.yaml.statement.json +0 -35
  1062. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/hash-edit.yaml.minisig +0 -4
  1063. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/hash-edit.yaml.statement.json +0 -35
  1064. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/health.yaml.minisig +0 -4
  1065. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/health.yaml.statement.json +0 -35
  1066. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.minisig +0 -4
  1067. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/hook-governor.yaml.statement.json +0 -35
  1068. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.minisig +0 -4
  1069. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/incident-replay.yaml.statement.json +0 -35
  1070. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.minisig +0 -4
  1071. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/lsp-pack.yaml.statement.json +0 -35
  1072. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.minisig +0 -4
  1073. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/mcp-fabric.yaml.statement.json +0 -35
  1074. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.minisig +0 -4
  1075. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/plan-council.yaml.statement.json +0 -35
  1076. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/preflight.yaml.minisig +0 -4
  1077. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/preflight.yaml.statement.json +0 -35
  1078. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.minisig +0 -4
  1079. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/proof-gate.yaml.statement.json +0 -35
  1080. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.minisig +0 -4
  1081. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/remote-supervisor.yaml.statement.json +0 -35
  1082. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/robotics.yaml.minisig +0 -4
  1083. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/robotics.yaml.statement.json +0 -35
  1084. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.minisig +0 -4
  1085. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/secure-worktree-pipeline.yaml.statement.json +0 -35
  1086. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/security-check.yaml.minisig +0 -4
  1087. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/security-check.yaml.statement.json +0 -35
  1088. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/terminal-lane.yaml.minisig +0 -4
  1089. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/terminal-lane.yaml.statement.json +0 -35
  1090. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.minisig +0 -4
  1091. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/test-intent-lock.yaml.statement.json +0 -35
  1092. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.minisig +0 -4
  1093. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/tracebank.yaml.statement.json +0 -35
  1094. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/vision.yaml.minisig +0 -4
  1095. package/artifacts/release/dist/public/attestations/bundle/registry/bundles/vision.yaml.statement.json +0 -35
  1096. package/artifacts/release/dist/public/attestations/bundle/registry/omg-capability.schema.json.minisig +0 -4
  1097. package/artifacts/release/dist/public/attestations/bundle/registry/omg-capability.schema.json.statement.json +0 -35
  1098. package/artifacts/release/dist/public/attestations/bundle/settings.json.minisig +0 -4
  1099. package/artifacts/release/dist/public/attestations/bundle/settings.json.statement.json +0 -35
  1100. package/artifacts/release/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +0 -75
  1101. package/artifacts/release/dist/public/bundle/.agents/skills/omg/algorithms/SKILL.md +0 -11
  1102. package/artifacts/release/dist/public/bundle/.agents/skills/omg/algorithms/openai.yaml +0 -11
  1103. package/artifacts/release/dist/public/bundle/.agents/skills/omg/api-twin/SKILL.md +0 -11
  1104. package/artifacts/release/dist/public/bundle/.agents/skills/omg/api-twin/openai.yaml +0 -12
  1105. package/artifacts/release/dist/public/bundle/.agents/skills/omg/ast-pack/SKILL.md +0 -11
  1106. package/artifacts/release/dist/public/bundle/.agents/skills/omg/ast-pack/openai.yaml +0 -12
  1107. package/artifacts/release/dist/public/bundle/.agents/skills/omg/claim-judge/SKILL.md +0 -11
  1108. package/artifacts/release/dist/public/bundle/.agents/skills/omg/claim-judge/openai.yaml +0 -13
  1109. package/artifacts/release/dist/public/bundle/.agents/skills/omg/codex-mcp.toml +0 -4
  1110. package/artifacts/release/dist/public/bundle/.agents/skills/omg/codex-rules.md +0 -38
  1111. package/artifacts/release/dist/public/bundle/.agents/skills/omg/control-plane/SKILL.md +0 -11
  1112. package/artifacts/release/dist/public/bundle/.agents/skills/omg/control-plane/openai.yaml +0 -14
  1113. package/artifacts/release/dist/public/bundle/.agents/skills/omg/data-lineage/SKILL.md +0 -11
  1114. package/artifacts/release/dist/public/bundle/.agents/skills/omg/data-lineage/openai.yaml +0 -12
  1115. package/artifacts/release/dist/public/bundle/.agents/skills/omg/delta-classifier/SKILL.md +0 -11
  1116. package/artifacts/release/dist/public/bundle/.agents/skills/omg/delta-classifier/openai.yaml +0 -12
  1117. package/artifacts/release/dist/public/bundle/.agents/skills/omg/eval-gate/SKILL.md +0 -11
  1118. package/artifacts/release/dist/public/bundle/.agents/skills/omg/eval-gate/openai.yaml +0 -12
  1119. package/artifacts/release/dist/public/bundle/.agents/skills/omg/hash-edit/SKILL.md +0 -11
  1120. package/artifacts/release/dist/public/bundle/.agents/skills/omg/hash-edit/openai.yaml +0 -11
  1121. package/artifacts/release/dist/public/bundle/.agents/skills/omg/health/SKILL.md +0 -11
  1122. package/artifacts/release/dist/public/bundle/.agents/skills/omg/health/openai.yaml +0 -11
  1123. package/artifacts/release/dist/public/bundle/.agents/skills/omg/hook-governor/SKILL.md +0 -11
  1124. package/artifacts/release/dist/public/bundle/.agents/skills/omg/hook-governor/openai.yaml +0 -11
  1125. package/artifacts/release/dist/public/bundle/.agents/skills/omg/incident-replay/SKILL.md +0 -11
  1126. package/artifacts/release/dist/public/bundle/.agents/skills/omg/incident-replay/openai.yaml +0 -12
  1127. package/artifacts/release/dist/public/bundle/.agents/skills/omg/lsp-pack/SKILL.md +0 -11
  1128. package/artifacts/release/dist/public/bundle/.agents/skills/omg/lsp-pack/openai.yaml +0 -12
  1129. package/artifacts/release/dist/public/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +0 -11
  1130. package/artifacts/release/dist/public/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +0 -13
  1131. package/artifacts/release/dist/public/bundle/.agents/skills/omg/plan-council/SKILL.md +0 -11
  1132. package/artifacts/release/dist/public/bundle/.agents/skills/omg/plan-council/openai.yaml +0 -12
  1133. package/artifacts/release/dist/public/bundle/.agents/skills/omg/preflight/SKILL.md +0 -11
  1134. package/artifacts/release/dist/public/bundle/.agents/skills/omg/preflight/openai.yaml +0 -12
  1135. package/artifacts/release/dist/public/bundle/.agents/skills/omg/proof-gate/SKILL.md +0 -11
  1136. package/artifacts/release/dist/public/bundle/.agents/skills/omg/proof-gate/openai.yaml +0 -13
  1137. package/artifacts/release/dist/public/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +0 -11
  1138. package/artifacts/release/dist/public/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +0 -12
  1139. package/artifacts/release/dist/public/bundle/.agents/skills/omg/robotics/SKILL.md +0 -11
  1140. package/artifacts/release/dist/public/bundle/.agents/skills/omg/robotics/openai.yaml +0 -11
  1141. package/artifacts/release/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +0 -11
  1142. package/artifacts/release/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +0 -12
  1143. package/artifacts/release/dist/public/bundle/.agents/skills/omg/security-check/SKILL.md +0 -11
  1144. package/artifacts/release/dist/public/bundle/.agents/skills/omg/security-check/openai.yaml +0 -13
  1145. package/artifacts/release/dist/public/bundle/.agents/skills/omg/terminal-lane/SKILL.md +0 -11
  1146. package/artifacts/release/dist/public/bundle/.agents/skills/omg/terminal-lane/openai.yaml +0 -11
  1147. package/artifacts/release/dist/public/bundle/.agents/skills/omg/test-intent-lock/SKILL.md +0 -11
  1148. package/artifacts/release/dist/public/bundle/.agents/skills/omg/test-intent-lock/openai.yaml +0 -13
  1149. package/artifacts/release/dist/public/bundle/.agents/skills/omg/tracebank/SKILL.md +0 -11
  1150. package/artifacts/release/dist/public/bundle/.agents/skills/omg/tracebank/openai.yaml +0 -12
  1151. package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/SKILL.md +0 -11
  1152. package/artifacts/release/dist/public/bundle/.agents/skills/omg/vision/openai.yaml +0 -11
  1153. package/artifacts/release/dist/public/bundle/.claude-plugin/marketplace.json +0 -36
  1154. package/artifacts/release/dist/public/bundle/.claude-plugin/mcp.json +0 -11
  1155. package/artifacts/release/dist/public/bundle/.claude-plugin/plugin.json +0 -23
  1156. package/artifacts/release/dist/public/bundle/.gemini/settings.json +0 -72
  1157. package/artifacts/release/dist/public/bundle/.kimi/mcp.json +0 -72
  1158. package/artifacts/release/dist/public/bundle/.mcp.json +0 -18
  1159. package/artifacts/release/dist/public/bundle/OMG_COMPAT_CONTRACT.md +0 -111
  1160. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:code-review.md +0 -114
  1161. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:deep-plan.md +0 -266
  1162. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:handoff.md +0 -115
  1163. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:learn.md +0 -110
  1164. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:maintainer.md +0 -31
  1165. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:ralph-start.md +0 -43
  1166. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:ralph-stop.md +0 -23
  1167. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:security-review.md +0 -16
  1168. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +0 -20
  1169. package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:ship.md +0 -46
  1170. package/artifacts/release/dist/public/bundle/plugins/advanced/plugin.json +0 -104
  1171. package/artifacts/release/dist/public/bundle/registry/bundles/algorithms.yaml +0 -45
  1172. package/artifacts/release/dist/public/bundle/registry/bundles/api-twin.yaml +0 -48
  1173. package/artifacts/release/dist/public/bundle/registry/bundles/ast-pack.yaml +0 -80
  1174. package/artifacts/release/dist/public/bundle/registry/bundles/claim-judge.yaml +0 -49
  1175. package/artifacts/release/dist/public/bundle/registry/bundles/control-plane.yaml +0 -192
  1176. package/artifacts/release/dist/public/bundle/registry/bundles/data-lineage.yaml +0 -47
  1177. package/artifacts/release/dist/public/bundle/registry/bundles/delta-classifier.yaml +0 -47
  1178. package/artifacts/release/dist/public/bundle/registry/bundles/eval-gate.yaml +0 -47
  1179. package/artifacts/release/dist/public/bundle/registry/bundles/hash-edit.yaml +0 -73
  1180. package/artifacts/release/dist/public/bundle/registry/bundles/health.yaml +0 -45
  1181. package/artifacts/release/dist/public/bundle/registry/bundles/hook-governor.yaml +0 -101
  1182. package/artifacts/release/dist/public/bundle/registry/bundles/incident-replay.yaml +0 -47
  1183. package/artifacts/release/dist/public/bundle/registry/bundles/lsp-pack.yaml +0 -80
  1184. package/artifacts/release/dist/public/bundle/registry/bundles/mcp-fabric.yaml +0 -53
  1185. package/artifacts/release/dist/public/bundle/registry/bundles/plan-council.yaml +0 -56
  1186. package/artifacts/release/dist/public/bundle/registry/bundles/preflight.yaml +0 -48
  1187. package/artifacts/release/dist/public/bundle/registry/bundles/proof-gate.yaml +0 -49
  1188. package/artifacts/release/dist/public/bundle/registry/bundles/remote-supervisor.yaml +0 -49
  1189. package/artifacts/release/dist/public/bundle/registry/bundles/robotics.yaml +0 -45
  1190. package/artifacts/release/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +0 -69
  1191. package/artifacts/release/dist/public/bundle/registry/bundles/security-check.yaml +0 -50
  1192. package/artifacts/release/dist/public/bundle/registry/bundles/terminal-lane.yaml +0 -61
  1193. package/artifacts/release/dist/public/bundle/registry/bundles/test-intent-lock.yaml +0 -49
  1194. package/artifacts/release/dist/public/bundle/registry/bundles/tracebank.yaml +0 -47
  1195. package/artifacts/release/dist/public/bundle/registry/bundles/vision.yaml +0 -45
  1196. package/artifacts/release/dist/public/bundle/registry/omg-capability.schema.json +0 -378
  1197. package/artifacts/release/dist/public/bundle/settings.json +0 -694
  1198. package/artifacts/release/dist/public/manifest.json +0 -1093
  1199. package/artifacts/release/plugins/advanced/commands/OMG:code-review.md +0 -114
  1200. package/artifacts/release/plugins/advanced/commands/OMG:deep-plan.md +0 -266
  1201. package/artifacts/release/plugins/advanced/commands/OMG:handoff.md +0 -115
  1202. package/artifacts/release/plugins/advanced/commands/OMG:learn.md +0 -110
  1203. package/artifacts/release/plugins/advanced/commands/OMG:maintainer.md +0 -31
  1204. package/artifacts/release/plugins/advanced/commands/OMG:ralph-start.md +0 -43
  1205. package/artifacts/release/plugins/advanced/commands/OMG:ralph-stop.md +0 -23
  1206. package/artifacts/release/plugins/advanced/commands/OMG:security-review.md +0 -16
  1207. package/artifacts/release/plugins/advanced/commands/OMG:sequential-thinking.md +0 -20
  1208. package/artifacts/release/plugins/advanced/commands/OMG:ship.md +0 -46
  1209. package/artifacts/release/plugins/advanced/plugin.json +0 -104
  1210. package/artifacts/release/registry/bundles/algorithms.yaml +0 -45
  1211. package/artifacts/release/registry/bundles/api-twin.yaml +0 -48
  1212. package/artifacts/release/registry/bundles/ast-pack.yaml +0 -80
  1213. package/artifacts/release/registry/bundles/claim-judge.yaml +0 -49
  1214. package/artifacts/release/registry/bundles/control-plane.yaml +0 -192
  1215. package/artifacts/release/registry/bundles/data-lineage.yaml +0 -47
  1216. package/artifacts/release/registry/bundles/delta-classifier.yaml +0 -47
  1217. package/artifacts/release/registry/bundles/eval-gate.yaml +0 -47
  1218. package/artifacts/release/registry/bundles/hash-edit.yaml +0 -73
  1219. package/artifacts/release/registry/bundles/health.yaml +0 -45
  1220. package/artifacts/release/registry/bundles/hook-governor.yaml +0 -101
  1221. package/artifacts/release/registry/bundles/incident-replay.yaml +0 -47
  1222. package/artifacts/release/registry/bundles/lsp-pack.yaml +0 -80
  1223. package/artifacts/release/registry/bundles/mcp-fabric.yaml +0 -53
  1224. package/artifacts/release/registry/bundles/plan-council.yaml +0 -56
  1225. package/artifacts/release/registry/bundles/preflight.yaml +0 -48
  1226. package/artifacts/release/registry/bundles/proof-gate.yaml +0 -49
  1227. package/artifacts/release/registry/bundles/remote-supervisor.yaml +0 -49
  1228. package/artifacts/release/registry/bundles/robotics.yaml +0 -45
  1229. package/artifacts/release/registry/bundles/secure-worktree-pipeline.yaml +0 -69
  1230. package/artifacts/release/registry/bundles/security-check.yaml +0 -50
  1231. package/artifacts/release/registry/bundles/terminal-lane.yaml +0 -61
  1232. package/artifacts/release/registry/bundles/test-intent-lock.yaml +0 -49
  1233. package/artifacts/release/registry/bundles/tracebank.yaml +0 -47
  1234. package/artifacts/release/registry/bundles/vision.yaml +0 -45
  1235. package/artifacts/release/registry/omg-capability.schema.json +0 -378
  1236. package/artifacts/release/settings.json +0 -694
  1237. package/build/lib/agents/__init__.py +0 -1
  1238. package/build/lib/agents/designer.md +0 -67
  1239. package/build/lib/agents/explore.md +0 -60
  1240. package/build/lib/agents/model_roles.py +0 -196
  1241. package/build/lib/agents/omg-api-builder.md +0 -23
  1242. package/build/lib/agents/omg-architect-mode.md +0 -41
  1243. package/build/lib/agents/omg-architect.md +0 -13
  1244. package/build/lib/agents/omg-backend-engineer.md +0 -41
  1245. package/build/lib/agents/omg-critic.md +0 -16
  1246. package/build/lib/agents/omg-database-engineer.md +0 -41
  1247. package/build/lib/agents/omg-escalation-router.md +0 -17
  1248. package/build/lib/agents/omg-executor.md +0 -12
  1249. package/build/lib/agents/omg-frontend-designer.md +0 -41
  1250. package/build/lib/agents/omg-implement-mode.md +0 -49
  1251. package/build/lib/agents/omg-infra-engineer.md +0 -41
  1252. package/build/lib/agents/omg-qa-tester.md +0 -16
  1253. package/build/lib/agents/omg-research-mode.md +0 -41
  1254. package/build/lib/agents/omg-security-auditor.md +0 -41
  1255. package/build/lib/agents/omg-testing-engineer.md +0 -41
  1256. package/build/lib/agents/plan.md +0 -80
  1257. package/build/lib/agents/quick_task.md +0 -64
  1258. package/build/lib/agents/reviewer.md +0 -83
  1259. package/build/lib/agents/task.md +0 -71
  1260. package/build/lib/commands/OMG:ai-commit.md +0 -113
  1261. package/build/lib/commands/OMG:api-twin.md +0 -22
  1262. package/build/lib/commands/OMG:arch.md +0 -313
  1263. package/build/lib/commands/OMG:browser.md +0 -29
  1264. package/build/lib/commands/OMG:ccg.md +0 -22
  1265. package/build/lib/commands/OMG:compat.md +0 -57
  1266. package/build/lib/commands/OMG:cost.md +0 -181
  1267. package/build/lib/commands/OMG:crazy.md +0 -125
  1268. package/build/lib/commands/OMG:create-agent.md +0 -183
  1269. package/build/lib/commands/OMG:deep-plan.md +0 -18
  1270. package/build/lib/commands/OMG:deps.md +0 -248
  1271. package/build/lib/commands/OMG:diagnose-plugins.md +0 -33
  1272. package/build/lib/commands/OMG:doctor.md +0 -37
  1273. package/build/lib/commands/OMG:domain-init.md +0 -11
  1274. package/build/lib/commands/OMG:escalate.md +0 -52
  1275. package/build/lib/commands/OMG:forge.md +0 -103
  1276. package/build/lib/commands/OMG:health-check.md +0 -48
  1277. package/build/lib/commands/OMG:init.md +0 -134
  1278. package/build/lib/commands/OMG:issue.md +0 -56
  1279. package/build/lib/commands/OMG:mode.md +0 -44
  1280. package/build/lib/commands/OMG:playwright.md +0 -17
  1281. package/build/lib/commands/OMG:preflight.md +0 -26
  1282. package/build/lib/commands/OMG:preset.md +0 -49
  1283. package/build/lib/commands/OMG:profile-review.md +0 -58
  1284. package/build/lib/commands/OMG:project-init.md +0 -11
  1285. package/build/lib/commands/OMG:ralph-start.md +0 -43
  1286. package/build/lib/commands/OMG:ralph-stop.md +0 -23
  1287. package/build/lib/commands/OMG:security-check.md +0 -28
  1288. package/build/lib/commands/OMG:session-branch.md +0 -101
  1289. package/build/lib/commands/OMG:session-fork.md +0 -57
  1290. package/build/lib/commands/OMG:session-merge.md +0 -138
  1291. package/build/lib/commands/OMG:setup.md +0 -82
  1292. package/build/lib/commands/OMG:stats.md +0 -225
  1293. package/build/lib/commands/OMG:teams.md +0 -54
  1294. package/build/lib/commands/OMG:theme.md +0 -44
  1295. package/build/lib/commands/OMG:validate.md +0 -59
  1296. package/build/lib/commands/__init__.py +0 -1
  1297. package/build/lib/control_plane/__init__.py +0 -2
  1298. package/build/lib/control_plane/openapi.yaml +0 -277
  1299. package/build/lib/control_plane/server.py +0 -155
  1300. package/build/lib/control_plane/service.py +0 -456
  1301. package/build/lib/hooks/__init__.py +0 -0
  1302. package/build/lib/hooks/_agent_registry.py +0 -479
  1303. package/build/lib/hooks/_analytics.py +0 -291
  1304. package/build/lib/hooks/_budget.py +0 -31
  1305. package/build/lib/hooks/_common.py +0 -647
  1306. package/build/lib/hooks/_compression_optimizer.py +0 -119
  1307. package/build/lib/hooks/_cost_ledger.py +0 -176
  1308. package/build/lib/hooks/_learnings.py +0 -126
  1309. package/build/lib/hooks/_memory.py +0 -103
  1310. package/build/lib/hooks/_protected_context.py +0 -150
  1311. package/build/lib/hooks/_token_counter.py +0 -221
  1312. package/build/lib/hooks/branch_manager.py +0 -253
  1313. package/build/lib/hooks/budget_governor.py +0 -257
  1314. package/build/lib/hooks/circuit-breaker.py +0 -270
  1315. package/build/lib/hooks/compression_feedback.py +0 -254
  1316. package/build/lib/hooks/config-guard.py +0 -216
  1317. package/build/lib/hooks/context_pressure.py +0 -85
  1318. package/build/lib/hooks/credential_store.py +0 -970
  1319. package/build/lib/hooks/fetch-rate-limits.py +0 -212
  1320. package/build/lib/hooks/firewall.py +0 -301
  1321. package/build/lib/hooks/hashline-formatter-bridge.py +0 -224
  1322. package/build/lib/hooks/hashline-injector.py +0 -273
  1323. package/build/lib/hooks/hashline-validator.py +0 -216
  1324. package/build/lib/hooks/idle-detector.py +0 -95
  1325. package/build/lib/hooks/instructions-loaded.py +0 -26
  1326. package/build/lib/hooks/intentgate-keyword-detector.py +0 -200
  1327. package/build/lib/hooks/magic-keyword-router.py +0 -195
  1328. package/build/lib/hooks/policy_engine.py +0 -718
  1329. package/build/lib/hooks/post-tool-failure.py +0 -19
  1330. package/build/lib/hooks/post-write.py +0 -219
  1331. package/build/lib/hooks/post_write.py +0 -46
  1332. package/build/lib/hooks/pre-compact.py +0 -470
  1333. package/build/lib/hooks/pre-tool-inject.py +0 -98
  1334. package/build/lib/hooks/prompt-enhancer.py +0 -877
  1335. package/build/lib/hooks/quality-runner.py +0 -191
  1336. package/build/lib/hooks/query.py +0 -512
  1337. package/build/lib/hooks/secret-guard.py +0 -99
  1338. package/build/lib/hooks/secret_audit.py +0 -144
  1339. package/build/lib/hooks/security_validators.py +0 -75
  1340. package/build/lib/hooks/session-end-capture.py +0 -505
  1341. package/build/lib/hooks/session-start.py +0 -259
  1342. package/build/lib/hooks/setup_wizard.py +0 -1132
  1343. package/build/lib/hooks/shadow_manager.py +0 -476
  1344. package/build/lib/hooks/state_migration.py +0 -228
  1345. package/build/lib/hooks/stop-gate.py +0 -7
  1346. package/build/lib/hooks/stop_dispatcher.py +0 -1130
  1347. package/build/lib/hooks/tdd-gate.py +0 -10
  1348. package/build/lib/hooks/test-validator.py +0 -430
  1349. package/build/lib/hooks/test_generator_hook.py +0 -123
  1350. package/build/lib/hooks/todo-state-tracker.py +0 -114
  1351. package/build/lib/hooks/tool-ledger.py +0 -165
  1352. package/build/lib/hooks/trust_review.py +0 -585
  1353. package/build/lib/hooks/user-prompt-submit.py +0 -12
  1354. package/build/lib/plugins/README.md +0 -64
  1355. package/build/lib/plugins/__init__.py +0 -1
  1356. package/build/lib/plugins/advanced/commands/OMG:code-review.md +0 -114
  1357. package/build/lib/plugins/advanced/commands/OMG:deep-plan.md +0 -266
  1358. package/build/lib/plugins/advanced/commands/OMG:handoff.md +0 -115
  1359. package/build/lib/plugins/advanced/commands/OMG:learn.md +0 -110
  1360. package/build/lib/plugins/advanced/commands/OMG:maintainer.md +0 -31
  1361. package/build/lib/plugins/advanced/commands/OMG:ralph-start.md +0 -43
  1362. package/build/lib/plugins/advanced/commands/OMG:ralph-stop.md +0 -23
  1363. package/build/lib/plugins/advanced/commands/OMG:security-review.md +0 -16
  1364. package/build/lib/plugins/advanced/commands/OMG:sequential-thinking.md +0 -20
  1365. package/build/lib/plugins/advanced/commands/OMG:ship.md +0 -46
  1366. package/build/lib/plugins/advanced/plugin.json +0 -104
  1367. package/build/lib/plugins/core/plugin.json +0 -199
  1368. package/build/lib/plugins/dephealth/__init__.py +0 -0
  1369. package/build/lib/plugins/dephealth/cve_scanner.py +0 -279
  1370. package/build/lib/plugins/dephealth/license_checker.py +0 -135
  1371. package/build/lib/plugins/dephealth/manifest_detector.py +0 -423
  1372. package/build/lib/plugins/dephealth/vuln_analyzer.py +0 -176
  1373. package/build/lib/plugins/testgen/__init__.py +0 -0
  1374. package/build/lib/plugins/testgen/codamosa_engine.py +0 -402
  1375. package/build/lib/plugins/testgen/edge_case_synthesizer.py +0 -184
  1376. package/build/lib/plugins/testgen/framework_detector.py +0 -271
  1377. package/build/lib/plugins/testgen/skeleton_generator.py +0 -219
  1378. package/build/lib/plugins/viz/__init__.py +0 -0
  1379. package/build/lib/plugins/viz/ast_parser.py +0 -139
  1380. package/build/lib/plugins/viz/diagram_generator.py +0 -192
  1381. package/build/lib/plugins/viz/graph_builder.py +0 -444
  1382. package/build/lib/plugins/viz/native_parsers.py +0 -259
  1383. package/build/lib/plugins/viz/regex_parser.py +0 -112
  1384. package/build/lib/registry/__init__.py +0 -1
  1385. package/build/lib/registry/approval_artifact.py +0 -236
  1386. package/build/lib/registry/bundles/algorithms.yaml +0 -45
  1387. package/build/lib/registry/bundles/api-twin.yaml +0 -48
  1388. package/build/lib/registry/bundles/ast-pack.yaml +0 -80
  1389. package/build/lib/registry/bundles/claim-judge.yaml +0 -49
  1390. package/build/lib/registry/bundles/control-plane.yaml +0 -192
  1391. package/build/lib/registry/bundles/data-lineage.yaml +0 -47
  1392. package/build/lib/registry/bundles/delta-classifier.yaml +0 -47
  1393. package/build/lib/registry/bundles/eval-gate.yaml +0 -47
  1394. package/build/lib/registry/bundles/hash-edit.yaml +0 -73
  1395. package/build/lib/registry/bundles/health.yaml +0 -45
  1396. package/build/lib/registry/bundles/hook-governor.yaml +0 -101
  1397. package/build/lib/registry/bundles/incident-replay.yaml +0 -47
  1398. package/build/lib/registry/bundles/lsp-pack.yaml +0 -80
  1399. package/build/lib/registry/bundles/mcp-fabric.yaml +0 -53
  1400. package/build/lib/registry/bundles/plan-council.yaml +0 -56
  1401. package/build/lib/registry/bundles/preflight.yaml +0 -48
  1402. package/build/lib/registry/bundles/proof-gate.yaml +0 -49
  1403. package/build/lib/registry/bundles/remote-supervisor.yaml +0 -49
  1404. package/build/lib/registry/bundles/robotics.yaml +0 -45
  1405. package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +0 -69
  1406. package/build/lib/registry/bundles/security-check.yaml +0 -50
  1407. package/build/lib/registry/bundles/terminal-lane.yaml +0 -61
  1408. package/build/lib/registry/bundles/test-intent-lock.yaml +0 -49
  1409. package/build/lib/registry/bundles/tracebank.yaml +0 -47
  1410. package/build/lib/registry/bundles/vision.yaml +0 -45
  1411. package/build/lib/registry/omg-capability.schema.json +0 -378
  1412. package/build/lib/registry/trusted_signers.json +0 -19
  1413. package/build/lib/registry/verify_artifact.py +0 -493
  1414. package/build/lib/runtime/__init__.py +0 -36
  1415. package/build/lib/runtime/adapters/__init__.py +0 -13
  1416. package/build/lib/runtime/adapters/claude.py +0 -63
  1417. package/build/lib/runtime/adapters/gpt.py +0 -56
  1418. package/build/lib/runtime/adapters/local.py +0 -56
  1419. package/build/lib/runtime/adoption.py +0 -276
  1420. package/build/lib/runtime/api_twin.py +0 -450
  1421. package/build/lib/runtime/architecture_signal.py +0 -226
  1422. package/build/lib/runtime/artifact_parsers.py +0 -161
  1423. package/build/lib/runtime/asset_loader.py +0 -62
  1424. package/build/lib/runtime/background_verification.py +0 -136
  1425. package/build/lib/runtime/budget_envelopes.py +0 -358
  1426. package/build/lib/runtime/business_workflow.py +0 -234
  1427. package/build/lib/runtime/canonical_surface.py +0 -52
  1428. package/build/lib/runtime/claim_judge.py +0 -614
  1429. package/build/lib/runtime/cli_provider.py +0 -105
  1430. package/build/lib/runtime/compat.py +0 -1515
  1431. package/build/lib/runtime/complexity_scorer.py +0 -148
  1432. package/build/lib/runtime/compliance_governor.py +0 -424
  1433. package/build/lib/runtime/context_engine.py +0 -708
  1434. package/build/lib/runtime/context_limits.py +0 -351
  1435. package/build/lib/runtime/contract_compiler.py +0 -3099
  1436. package/build/lib/runtime/custom_agent_loader.py +0 -366
  1437. package/build/lib/runtime/data_lineage.py +0 -244
  1438. package/build/lib/runtime/defense_state.py +0 -261
  1439. package/build/lib/runtime/delta_classifier.py +0 -163
  1440. package/build/lib/runtime/dispatcher.py +0 -47
  1441. package/build/lib/runtime/domain_packs.py +0 -75
  1442. package/build/lib/runtime/ecosystem.py +0 -371
  1443. package/build/lib/runtime/equalizer.py +0 -265
  1444. package/build/lib/runtime/eval_gate.py +0 -96
  1445. package/build/lib/runtime/evidence_query.py +0 -292
  1446. package/build/lib/runtime/evidence_registry.py +0 -16
  1447. package/build/lib/runtime/evidence_requirements.py +0 -118
  1448. package/build/lib/runtime/exec_kernel.py +0 -267
  1449. package/build/lib/runtime/feature_registry.py +0 -109
  1450. package/build/lib/runtime/forge_agents.py +0 -915
  1451. package/build/lib/runtime/forge_contracts.py +0 -519
  1452. package/build/lib/runtime/forge_domains.py +0 -68
  1453. package/build/lib/runtime/forge_run_id.py +0 -86
  1454. package/build/lib/runtime/guide_assert.py +0 -45
  1455. package/build/lib/runtime/hook_governor.py +0 -156
  1456. package/build/lib/runtime/host_parity.py +0 -321
  1457. package/build/lib/runtime/incident_replay.py +0 -310
  1458. package/build/lib/runtime/interaction_journal.py +0 -503
  1459. package/build/lib/runtime/issue_surface.py +0 -362
  1460. package/build/lib/runtime/legacy_compat.py +0 -7
  1461. package/build/lib/runtime/mcp_config_writers.py +0 -233
  1462. package/build/lib/runtime/mcp_lifecycle.py +0 -175
  1463. package/build/lib/runtime/mcp_memory_server.py +0 -220
  1464. package/build/lib/runtime/memory_parsers/__init__.py +0 -0
  1465. package/build/lib/runtime/memory_parsers/chatgpt_parser.py +0 -257
  1466. package/build/lib/runtime/memory_parsers/claude_import.py +0 -107
  1467. package/build/lib/runtime/memory_parsers/export.py +0 -97
  1468. package/build/lib/runtime/memory_parsers/gemini_import.py +0 -91
  1469. package/build/lib/runtime/memory_parsers/kimi_import.py +0 -91
  1470. package/build/lib/runtime/memory_store.py +0 -1182
  1471. package/build/lib/runtime/merge_writer.py +0 -320
  1472. package/build/lib/runtime/music_omr_testbed.py +0 -333
  1473. package/build/lib/runtime/mutation_gate.py +0 -215
  1474. package/build/lib/runtime/omc_compat.py +0 -7
  1475. package/build/lib/runtime/omg_browser_cli.py +0 -95
  1476. package/build/lib/runtime/omg_compat_contract_snapshot.json +0 -916
  1477. package/build/lib/runtime/omg_contract_snapshot.json +0 -916
  1478. package/build/lib/runtime/omg_mcp_server.py +0 -304
  1479. package/build/lib/runtime/playwright_adapter.py +0 -39
  1480. package/build/lib/runtime/playwright_pack.py +0 -253
  1481. package/build/lib/runtime/plugin_diagnostics.py +0 -248
  1482. package/build/lib/runtime/plugin_interop.py +0 -1035
  1483. package/build/lib/runtime/preflight.py +0 -135
  1484. package/build/lib/runtime/profile_io.py +0 -328
  1485. package/build/lib/runtime/proof_chain.py +0 -472
  1486. package/build/lib/runtime/proof_gate.py +0 -380
  1487. package/build/lib/runtime/providers/__init__.py +0 -0
  1488. package/build/lib/runtime/providers/codex_provider.py +0 -127
  1489. package/build/lib/runtime/providers/gemini_provider.py +0 -141
  1490. package/build/lib/runtime/providers/kimi_provider.py +0 -166
  1491. package/build/lib/runtime/providers/opencode_provider.py +0 -99
  1492. package/build/lib/runtime/release_run_coordinator.py +0 -515
  1493. package/build/lib/runtime/release_surfaces.py +0 -282
  1494. package/build/lib/runtime/remote_supervisor.py +0 -79
  1495. package/build/lib/runtime/repro_pack.py +0 -398
  1496. package/build/lib/runtime/rollback_manifest.py +0 -136
  1497. package/build/lib/runtime/router_critics.py +0 -229
  1498. package/build/lib/runtime/router_executor.py +0 -142
  1499. package/build/lib/runtime/router_selector.py +0 -99
  1500. package/build/lib/runtime/runtime_contracts.py +0 -292
  1501. package/build/lib/runtime/runtime_profile.py +0 -133
  1502. package/build/lib/runtime/security_check.py +0 -1064
  1503. package/build/lib/runtime/session_health.py +0 -524
  1504. package/build/lib/runtime/skill_evolution.py +0 -221
  1505. package/build/lib/runtime/skill_registry.py +0 -53
  1506. package/build/lib/runtime/subagent_dispatcher.py +0 -604
  1507. package/build/lib/runtime/team_router.py +0 -1374
  1508. package/build/lib/runtime/test_intent_lock.py +0 -496
  1509. package/build/lib/runtime/tmux_session_manager.py +0 -172
  1510. package/build/lib/runtime/tool_fabric.py +0 -570
  1511. package/build/lib/runtime/tool_plan_gate.py +0 -428
  1512. package/build/lib/runtime/tracebank.py +0 -125
  1513. package/build/lib/runtime/untrusted_content.py +0 -307
  1514. package/build/lib/runtime/validate.py +0 -293
  1515. package/build/lib/runtime/verification_controller.py +0 -235
  1516. package/build/lib/runtime/verification_loop.py +0 -73
  1517. package/build/lib/runtime/vision_artifacts.py +0 -31
  1518. package/build/lib/runtime/vision_cache.py +0 -38
  1519. package/build/lib/runtime/vision_jobs.py +0 -89
  1520. package/build/lib/runtime/worker_watchdog.py +0 -482
  1521. package/dist/oh_my_god-2.1.4-py3-none-any.whl +0 -0
  1522. package/dist/oh_my_god-2.1.4.tar.gz +0 -0
  1523. package/dist/oh_my_god-2.1.7-py3-none-any.whl +0 -0
  1524. package/dist/oh_my_god-2.1.8-py3-none-any.whl +0 -0
  1525. package/dist/oh_my_god-2.1.9-py3-none-any.whl +0 -0
@@ -1,3099 +0,0 @@
1
- """Canonical OMG contract registry, compiler, and release-readiness checks."""
2
- from __future__ import annotations
3
-
4
- import hashlib
5
- import asyncio
6
- import importlib
7
- import importlib.util
8
- import json
9
- import os
10
- from datetime import datetime, timezone
11
- from pathlib import Path
12
- import re
13
- import shutil
14
- import subprocess
15
- import sys
16
- import tempfile
17
- from typing import Any, Iterable
18
- from urllib.parse import urlparse
19
- import zipfile
20
-
21
- import yaml
22
-
23
- from runtime.asset_loader import resolve_asset, resolve_assets
24
- from runtime.proof_chain import _normalize_evidence_pack
25
- from runtime.evidence_requirements import requirements_for_profile
26
- from runtime.runtime_contracts import schema_versions
27
- from runtime.compliance_governor import evaluate_release_compliance
28
- from runtime.release_run_coordinator import get_active_coordinator_run_id
29
- from runtime.release_surfaces import get_runtime_behavior_surfaces
30
- from runtime.adoption import (
31
- CANONICAL_MARKETPLACE_ID,
32
- CANONICAL_PACKAGE_NAME,
33
- CANONICAL_PLUGIN_ID,
34
- CANONICAL_REPO_URL,
35
- CANONICAL_VERSION,
36
- )
37
- from runtime.canonical_surface import get_canonical_hosts, get_compat_hosts
38
- from registry.verify_artifact import sign_artifact_statement, verify_artifact_statement
39
-
40
-
41
- CONTRACT_DOC_PATH = Path("OMG_COMPAT_CONTRACT.md")
42
- SCHEMA_PATH = Path("registry") / "omg-capability.schema.json"
43
- BUNDLES_DIR = Path("registry") / "bundles"
44
- SUPPORTED_HOSTS = tuple(get_canonical_hosts())
45
- RELEASE_BLOCKING_HOSTS = tuple(get_canonical_hosts())
46
- # Compatibility-only hosts (for example, OpenCode) are intentionally excluded from
47
- # release-blocking parity and compile-readiness requirements.
48
- COMPATIBILITY_ONLY_HOSTS = tuple(get_compat_hosts())
49
- SUPPORTED_CHANNELS = ("public", "enterprise")
50
- DEFAULT_REQUIRED_BUNDLES = (
51
- "control-plane",
52
- "plan-council",
53
- "claim-judge",
54
- "test-intent-lock",
55
- "proof-gate",
56
- "hook-governor",
57
- "mcp-fabric",
58
- "lsp-pack",
59
- "secure-worktree-pipeline",
60
- "security-check",
61
- "api-twin",
62
- "preflight",
63
- "robotics",
64
- "vision",
65
- "algorithms",
66
- "health",
67
- "tracebank",
68
- "eval-gate",
69
- "delta-classifier",
70
- "incident-replay",
71
- "data-lineage",
72
- "remote-supervisor",
73
- )
74
- TRUTH_COUNCIL_BUNDLES = (
75
- "plan-council",
76
- "claim-judge",
77
- "test-intent-lock",
78
- "proof-gate",
79
- )
80
- def _get_required_advanced_plugin_artifacts(root: Path) -> tuple[str, ...]:
81
- manifest_path = root / "plugins" / "advanced" / "plugin.json"
82
- try:
83
- manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
84
- except (OSError, json.JSONDecodeError):
85
- return ()
86
-
87
- required: list[str] = ["bundle/plugins/advanced/plugin.json"]
88
- seen = set(required)
89
- commands = manifest.get("commands", {})
90
- if not isinstance(commands, dict):
91
- return tuple(required)
92
-
93
- for command in commands.values():
94
- if not isinstance(command, dict):
95
- continue
96
- command_path = command.get("path")
97
- if not isinstance(command_path, str) or not command_path:
98
- continue
99
- bundled_path = f"bundle/plugins/advanced/{command_path}"
100
- if bundled_path in seen:
101
- continue
102
- required.append(bundled_path)
103
- seen.add(bundled_path)
104
- return tuple(required)
105
- REQUIRED_DOC_TOKENS = (
106
- "execution_contract",
107
- "tool_policy",
108
- "invocation_policy",
109
- "host_compilation_rules",
110
- "local_supervisor",
111
- )
112
- REQUIRED_BUNDLE_FIELDS = (
113
- "id",
114
- "kind",
115
- "version",
116
- "title",
117
- "description",
118
- "hosts",
119
- "assets",
120
- "invocation_policy",
121
- "tool_policy",
122
- "lifecycle_hooks",
123
- "mcp_contract",
124
- "lsp_contract",
125
- "evidence_outputs",
126
- "execution_contract",
127
- "channel_overrides",
128
- )
129
- REQUIRED_POLICY_MODEL_FIELDS = (
130
- "trust_tiers",
131
- "tool_policies",
132
- "protected_paths",
133
- "evidence_contract",
134
- "host_rules",
135
- )
136
- REQUIRED_CLAUDE_HOOK_EVENTS = (
137
- "UserPromptSubmit",
138
- "PreToolUse",
139
- "PostToolUse",
140
- "PostToolUseFailure",
141
- "InstructionsLoaded",
142
- )
143
- REQUIRED_CLAUDE_SUBAGENT_NAMES = ("security-reviewer", "release-manager")
144
- REQUIRED_CODEX_AGENTS_SECTIONS = (
145
- "## Build & Test",
146
- "## Protected Paths",
147
- "## Evidence Contract",
148
- "## Release Audit",
149
- "## Required Skills",
150
- "## Web Search Policy",
151
- "## Approval Constraints",
152
- )
153
- REQUIRED_CODEX_OUTPUTS = (
154
- "AGENTS.fragment.md",
155
- "codex-rules.md",
156
- "codex-mcp.toml",
157
- )
158
- HOST_COMPILED_ARTIFACTS = {
159
- "claude": (
160
- ".claude-plugin/plugin.json",
161
- ".claude-plugin/marketplace.json",
162
- ".mcp.json",
163
- "settings.json",
164
- ),
165
- "codex": (
166
- ".agents/skills/omg/AGENTS.fragment.md",
167
- ".agents/skills/omg/codex-rules.md",
168
- ".agents/skills/omg/codex-mcp.toml",
169
- ),
170
- "gemini": (
171
- ".gemini/settings.json",
172
- ),
173
- "kimi": (
174
- ".kimi/mcp.json",
175
- ),
176
- }
177
-
178
- _HOST_POLICY_REQUIRED_FIELDS: dict[str, tuple[str, ...]] = {
179
- "claude": ("compilation_targets", "hooks", "subagents", "skills"),
180
- "codex": ("compilation_targets", "skills", "agents_fragments", "rules", "automations"),
181
- "gemini": ("compilation_targets", "mcp", "skills", "automations"),
182
- "kimi": ("compilation_targets", "mcp", "skills", "automations"),
183
- }
184
-
185
- _REQUIRED_EXECUTION_PRIMITIVES = (
186
- "release_run_coordinator_state",
187
- "tdd_proof_chain_lock",
188
- "rollback_manifest",
189
- "intent_gate_state",
190
- "profile_digest",
191
- "session_health_state",
192
- "council_verdicts",
193
- "forge_starter_proof",
194
- "claim_judge_outcome",
195
- "compliance_governor_outcome",
196
- "exec_kernel_state",
197
- "worker_watchdog_replay",
198
- "merge_writer_provenance",
199
- "tool_fabric_ledger",
200
- "budget_envelope_state",
201
- "issue_report",
202
- "host_parity_report",
203
- "music_omr_testbed_evidence",
204
- )
205
-
206
- _PHASE1_FORGE_SPECIALIST_SURFACES = (
207
- "forge-profile-review",
208
- "forge-release-audit",
209
- "forge-validate",
210
- )
211
-
212
- _PHASE1_RELEASE_SURFACES = (
213
- "OMG:profile-review",
214
- "OMG:release-audit",
215
- "OMG:validate",
216
- )
217
-
218
- _PHASE1_ATTESTATION_REQUIREMENTS = (
219
- "registry.verify_artifact.sign_artifact_statement",
220
- "registry.verify_artifact.verify_artifact_statement",
221
- )
222
-
223
- _PHASE1_COMPLIANCE_EXPECTATIONS = (
224
- "runtime.compliance_governor.evaluate_release_compliance",
225
- "runtime.compliance_governor.evaluate_tool_compliance",
226
- )
227
-
228
- _PHASE1_RELEASE_READINESS_CHECKS = (
229
- "claim_judge",
230
- "compliance_governor",
231
- "execution_primitives",
232
- )
233
-
234
- _PHASE1_RUNTIME_BEHAVIOR_SURFACES = tuple(get_runtime_behavior_surfaces())
235
-
236
- _REQUIRED_CONTEXT_METADATA = (
237
- "context_checksum",
238
- "profile_version",
239
- "intent_gate_version",
240
- )
241
-
242
- _DEFAULT_EXECUTION_PRIMITIVE_MAX_AGE_SECONDS = 3600.0
243
-
244
-
245
- def _ensure_list(
246
- *,
247
- bundle_id: str,
248
- path: str,
249
- value: Any,
250
- errors: list[str],
251
- min_items: int = 1,
252
- ) -> list[Any]:
253
- if not isinstance(value, list):
254
- errors.append(f"{bundle_id}: {path} must be a list")
255
- return []
256
- if len(value) < min_items:
257
- errors.append(f"{bundle_id}: {path} must contain at least {min_items} item(s)")
258
- return value
259
-
260
-
261
- def _ensure_dict(*, bundle_id: str, path: str, value: Any, errors: list[str]) -> dict[str, Any]:
262
- if not isinstance(value, dict):
263
- errors.append(f"{bundle_id}: {path} must be an object")
264
- return {}
265
- return value
266
-
267
-
268
- def _validate_host_rule(
269
- *,
270
- bundle_id: str,
271
- host_name: str,
272
- host_rule: Any,
273
- required_fields: tuple[str, ...],
274
- errors: list[str],
275
- ) -> None:
276
- path = f"policy_model.host_rules.{host_name}"
277
- host_payload = _ensure_dict(bundle_id=bundle_id, path=path, value=host_rule, errors=errors)
278
- if not host_payload:
279
- return
280
- for field in required_fields:
281
- if field not in host_payload:
282
- errors.append(f"{bundle_id}: malformed host_rules entry for {host_name}: missing '{field}'")
283
- continue
284
- _ensure_list(
285
- bundle_id=bundle_id,
286
- path=f"{path}.{field}",
287
- value=host_payload[field],
288
- errors=errors,
289
- min_items=1,
290
- )
291
-
292
-
293
- def _validate_policy_model(
294
- bundle_id: str,
295
- policy_model: Any,
296
- *,
297
- bundle_hosts: Iterable[str] = (),
298
- ) -> list[str]:
299
- errors: list[str] = []
300
- payload = _ensure_dict(bundle_id=bundle_id, path="policy_model", value=policy_model, errors=errors)
301
- if not payload:
302
- return errors
303
-
304
- for field in REQUIRED_POLICY_MODEL_FIELDS:
305
- if field not in payload:
306
- errors.append(f"{bundle_id}: policy_model missing field {field}")
307
-
308
- tier_names: set[str] = set()
309
- for index, tier in enumerate(
310
- _ensure_list(
311
- bundle_id=bundle_id,
312
- path="policy_model.trust_tiers",
313
- value=payload.get("trust_tiers", []),
314
- errors=errors,
315
- )
316
- ):
317
- tier_payload = _ensure_dict(
318
- bundle_id=bundle_id,
319
- path=f"policy_model.trust_tiers[{index}]",
320
- value=tier,
321
- errors=errors,
322
- )
323
- if not tier_payload:
324
- continue
325
- for field in ("name", "level", "label", "allowed_sources"):
326
- if field not in tier_payload:
327
- errors.append(f"{bundle_id}: policy_model.trust_tiers[{index}] missing field {field}")
328
- if isinstance(tier_payload.get("name"), str) and tier_payload["name"].strip():
329
- tier_names.add(tier_payload["name"].strip())
330
- if "allowed_sources" in tier_payload:
331
- _ensure_list(
332
- bundle_id=bundle_id,
333
- path=f"policy_model.trust_tiers[{index}].allowed_sources",
334
- value=tier_payload.get("allowed_sources"),
335
- errors=errors,
336
- min_items=1,
337
- )
338
-
339
- for index, tool in enumerate(
340
- _ensure_list(
341
- bundle_id=bundle_id,
342
- path="policy_model.tool_policies",
343
- value=payload.get("tool_policies", []),
344
- errors=errors,
345
- )
346
- ):
347
- tool_payload = _ensure_dict(
348
- bundle_id=bundle_id,
349
- path=f"policy_model.tool_policies[{index}]",
350
- value=tool,
351
- errors=errors,
352
- )
353
- if not tool_payload:
354
- continue
355
- for field in ("tool_name", "allowed_tiers", "requires_approval"):
356
- if field not in tool_payload:
357
- errors.append(f"{bundle_id}: policy_model.tool_policies[{index}] missing field {field}")
358
- allowed_tiers = _ensure_list(
359
- bundle_id=bundle_id,
360
- path=f"policy_model.tool_policies[{index}].allowed_tiers",
361
- value=tool_payload.get("allowed_tiers", []),
362
- errors=errors,
363
- min_items=1,
364
- )
365
- if tier_names:
366
- unknown_tiers = sorted(
367
- tier_name
368
- for tier_name in allowed_tiers
369
- if isinstance(tier_name, str) and tier_name not in tier_names
370
- )
371
- if unknown_tiers:
372
- errors.append(
373
- f"{bundle_id}: policy_model.tool_policies[{index}] references unknown tiers {unknown_tiers}"
374
- )
375
-
376
- for index, item in enumerate(
377
- _ensure_list(
378
- bundle_id=bundle_id,
379
- path="policy_model.protected_paths",
380
- value=payload.get("protected_paths", []),
381
- errors=errors,
382
- )
383
- ):
384
- path_payload = _ensure_dict(
385
- bundle_id=bundle_id,
386
- path=f"policy_model.protected_paths[{index}]",
387
- value=item,
388
- errors=errors,
389
- )
390
- if not path_payload:
391
- continue
392
- for field in ("path_pattern", "required_tier"):
393
- if field not in path_payload:
394
- errors.append(f"{bundle_id}: policy_model.protected_paths[{index}] missing field {field}")
395
- required_tier = path_payload.get("required_tier")
396
- if tier_names and isinstance(required_tier, str) and required_tier not in tier_names:
397
- errors.append(
398
- f"{bundle_id}: policy_model.protected_paths[{index}] references unknown tier '{required_tier}'"
399
- )
400
-
401
- evidence_contract = _ensure_dict(
402
- bundle_id=bundle_id,
403
- path="policy_model.evidence_contract",
404
- value=payload.get("evidence_contract", {}),
405
- errors=errors,
406
- )
407
- for field in ("timestamp", "executor", "trace_id", "lineage"):
408
- if field not in evidence_contract:
409
- errors.append(f"{bundle_id}: policy_model.evidence_contract missing field {field}")
410
-
411
- host_rules = _ensure_dict(
412
- bundle_id=bundle_id,
413
- path="policy_model.host_rules",
414
- value=payload.get("host_rules", {}),
415
- errors=errors,
416
- )
417
- declared_hosts = {str(host).strip() for host in bundle_hosts if str(host).strip()}
418
-
419
- for host_name in get_canonical_hosts():
420
- if host_name not in host_rules and host_name not in declared_hosts:
421
- continue
422
- required_fields = _HOST_POLICY_REQUIRED_FIELDS.get(host_name)
423
- if required_fields is None:
424
- continue
425
- _validate_host_rule(
426
- bundle_id=bundle_id,
427
- host_name=host_name,
428
- host_rule=host_rules.get(host_name),
429
- required_fields=required_fields,
430
- errors=errors,
431
- )
432
- return errors
433
-
434
-
435
- def _policy_model_for_bundle(bundles: Iterable[dict[str, Any]], bundle_id: str) -> dict[str, Any] | None:
436
- for bundle in bundles:
437
- if str(bundle.get("id", "")) == bundle_id and isinstance(bundle.get("policy_model"), dict):
438
- return dict(bundle["policy_model"])
439
- return None
440
-
441
-
442
- def _policy_protected_paths(policy_model: dict[str, Any] | None, *, channel: str) -> list[str]:
443
- if not policy_model:
444
- return _protected_paths_for_channel(channel)
445
- values: list[str] = []
446
- for item in policy_model.get("protected_paths", []):
447
- if isinstance(item, dict):
448
- pattern = str(item.get("path_pattern", "")).strip()
449
- if pattern:
450
- values.append(pattern)
451
- return values or _protected_paths_for_channel(channel)
452
-
453
-
454
- def _resolve_root(root_dir: str | Path | None) -> Path:
455
- if root_dir is None:
456
- return Path(__file__).resolve().parents[1]
457
- return Path(root_dir).resolve()
458
-
459
-
460
- def _resolve_output_root(root_dir: Path, output_root: str | Path | None) -> Path:
461
- if output_root is None or str(output_root).strip() == "":
462
- return root_dir
463
- return Path(output_root).resolve()
464
-
465
-
466
- def _load_json(path: Path) -> dict[str, Any]:
467
- parsed = json.loads(path.read_text(encoding="utf-8"))
468
- if not isinstance(parsed, dict):
469
- raise ValueError(f"Expected JSON object in {path}")
470
- return parsed
471
-
472
-
473
- def _write_json(path: Path, payload: dict[str, Any]) -> None:
474
- path.parent.mkdir(parents=True, exist_ok=True)
475
- path.write_text(json.dumps(payload, indent=2, ensure_ascii=True) + "\n", encoding="utf-8")
476
-
477
-
478
- def _write_text(path: Path, content: str) -> None:
479
- path.parent.mkdir(parents=True, exist_ok=True)
480
- path.write_text(content, encoding="utf-8")
481
-
482
-
483
- def _build_phase1_release_contract() -> dict[str, list[str]]:
484
- return {
485
- "forge_specialist_surfaces": list(_PHASE1_FORGE_SPECIALIST_SURFACES),
486
- "release_surfaces": list(_PHASE1_RELEASE_SURFACES),
487
- "attestation_requirements": list(_PHASE1_ATTESTATION_REQUIREMENTS),
488
- "compliance_governor_expectations": list(_PHASE1_COMPLIANCE_EXPECTATIONS),
489
- "release_readiness_checks": list(_PHASE1_RELEASE_READINESS_CHECKS),
490
- "runtime_behavior_surfaces": list(_PHASE1_RUNTIME_BEHAVIOR_SURFACES),
491
- }
492
-
493
-
494
- def _sha256_file(path: Path) -> str:
495
- digest = hashlib.sha256()
496
- with path.open("rb") as handle:
497
- for chunk in iter(lambda: handle.read(65536), b""):
498
- digest.update(chunk)
499
- return digest.hexdigest()
500
-
501
-
502
- def load_contract_doc(root_dir: str | Path | None = None) -> str:
503
- if root_dir is not None:
504
- root = _resolve_root(root_dir)
505
- candidate = root / CONTRACT_DOC_PATH
506
- if candidate.exists():
507
- return candidate.read_text(encoding="utf-8")
508
- return resolve_asset(CONTRACT_DOC_PATH).read_text(encoding="utf-8")
509
-
510
-
511
- def load_contract_schema(root_dir: str | Path | None = None) -> dict[str, Any]:
512
- if root_dir is not None:
513
- root = _resolve_root(root_dir)
514
- candidate = root / SCHEMA_PATH
515
- if candidate.exists():
516
- return _load_json(candidate)
517
- return _load_json(resolve_asset(SCHEMA_PATH))
518
-
519
-
520
- def load_contract_bundles(root_dir: str | Path | None = None) -> list[dict[str, Any]]:
521
- root = _resolve_root(root_dir)
522
- bundles: list[dict[str, Any]] = []
523
- paths = sorted((root / BUNDLES_DIR).glob("*.yaml")) if (root / BUNDLES_DIR).exists() else resolve_assets(BUNDLES_DIR, suffix=".yaml")
524
- for path in paths:
525
- parsed = yaml.safe_load(path.read_text(encoding="utf-8"))
526
- if not isinstance(parsed, dict):
527
- raise ValueError(f"Expected mapping bundle manifest in {path}")
528
- bundle = dict(parsed)
529
- try:
530
- bundle["_path"] = str(path.relative_to(root))
531
- except ValueError:
532
- bundle["_path"] = str(Path(BUNDLES_DIR) / path.name)
533
- bundles.append(bundle)
534
- return bundles
535
-
536
-
537
- def _bundle_summary(bundle: dict[str, Any]) -> dict[str, Any]:
538
- return {
539
- "id": bundle.get("id", ""),
540
- "kind": bundle.get("kind", ""),
541
- "version": bundle.get("version", ""),
542
- "title": bundle.get("title", ""),
543
- "hosts": list(bundle.get("hosts", [])),
544
- "path": bundle.get("_path", ""),
545
- }
546
-
547
-
548
- def validate_contract_registry(root_dir: str | Path | None = None) -> dict[str, Any]:
549
- root = _resolve_root(root_dir)
550
- errors: list[str] = []
551
-
552
- try:
553
- doc_text = load_contract_doc(root)
554
- except FileNotFoundError:
555
- errors.append(f"missing contract doc: {CONTRACT_DOC_PATH}")
556
- doc_text = ""
557
- else:
558
- for token in REQUIRED_DOC_TOKENS:
559
- if token not in doc_text:
560
- errors.append(f"contract doc missing token: {token}")
561
- if CANONICAL_VERSION not in doc_text:
562
- errors.append(f"contract doc missing version: {CANONICAL_VERSION}")
563
-
564
- try:
565
- schema_payload = load_contract_schema(root)
566
- except FileNotFoundError:
567
- errors.append(f"missing contract schema: {SCHEMA_PATH}")
568
- schema_payload: dict[str, Any] = {}
569
- else:
570
- if str(schema_payload.get("version", "")) != CANONICAL_VERSION:
571
- errors.append(f"contract schema version drift: {schema_payload.get('version')!r}")
572
-
573
- bundles = load_contract_bundles(root)
574
- if not bundles:
575
- errors.append(f"missing bundles directory: {BUNDLES_DIR}")
576
-
577
- bundle_ids = set()
578
- bundle_summaries: list[dict[str, Any]] = []
579
- for bundle in bundles:
580
- bundle_summaries.append(_bundle_summary(bundle))
581
- bundle_id = str(bundle.get("id", "")).strip()
582
- if not bundle_id:
583
- errors.append(f"bundle missing id: {bundle.get('_path', '<unknown>')}")
584
- continue
585
- if bundle_id in bundle_ids:
586
- errors.append(f"duplicate bundle id: {bundle_id}")
587
- bundle_ids.add(bundle_id)
588
- for field in REQUIRED_BUNDLE_FIELDS:
589
- if field not in bundle:
590
- errors.append(f"{bundle_id}: missing field {field}")
591
- if bundle.get("version") != CANONICAL_VERSION:
592
- errors.append(f"{bundle_id}: version drift {bundle.get('version')!r}")
593
- hosts = bundle.get("hosts", [])
594
- if not isinstance(hosts, list) or not hosts:
595
- errors.append(f"{bundle_id}: hosts must be a non-empty list")
596
- else:
597
- bad_hosts = [host for host in hosts if host not in SUPPORTED_HOSTS]
598
- if bad_hosts:
599
- errors.append(f"{bundle_id}: unsupported hosts {bad_hosts}")
600
- if "policy_model" in bundle:
601
- errors.extend(_validate_policy_model(bundle_id, bundle.get("policy_model"), bundle_hosts=hosts))
602
-
603
- missing_bundles = [bundle_id for bundle_id in DEFAULT_REQUIRED_BUNDLES if bundle_id not in bundle_ids]
604
- for bundle_id in missing_bundles:
605
- errors.append(f"missing required bundle: {bundle_id}")
606
-
607
- contract = {
608
- "path": str(CONTRACT_DOC_PATH),
609
- "schema_path": str(SCHEMA_PATH),
610
- "version": CANONICAL_VERSION,
611
- "bundle_count": len(bundle_summaries),
612
- }
613
- return {
614
- "schema": "OmgContractValidationResult",
615
- "status": "ok" if not errors else "error",
616
- "contract": contract,
617
- "bundles": bundle_summaries,
618
- "errors": errors,
619
- }
620
-
621
-
622
- def _copy_contract_inputs(root: Path, output_root: Path) -> list[Path]:
623
- copied: list[Path] = []
624
- for rel_path in [CONTRACT_DOC_PATH, SCHEMA_PATH]:
625
- src = resolve_asset(rel_path)
626
- dst = output_root / rel_path
627
- _write_text(dst, src.read_text(encoding="utf-8"))
628
- copied.append(dst)
629
- for bundle in load_contract_bundles(root):
630
- rel_path = Path(str(bundle["_path"]))
631
- src = resolve_asset(rel_path)
632
- dst = output_root / rel_path
633
- _write_text(dst, src.read_text(encoding="utf-8"))
634
- copied.append(dst)
635
-
636
- # Copy advanced plugin artifacts (plugin.json + all command markdown files)
637
- advanced_plugin_json = Path("plugins") / "advanced" / "plugin.json"
638
- try:
639
- src = resolve_asset(advanced_plugin_json)
640
- dst = output_root / advanced_plugin_json
641
- _write_text(dst, src.read_text(encoding="utf-8"))
642
- copied.append(dst)
643
- except FileNotFoundError:
644
- pass
645
-
646
- advanced_commands = resolve_assets(Path("plugins") / "advanced" / "commands", suffix=".md")
647
- for src in advanced_commands:
648
- rel = Path("plugins") / "advanced" / "commands" / src.name
649
- dst = output_root / rel
650
- _write_text(dst, src.read_text(encoding="utf-8"))
651
- copied.append(dst)
652
-
653
- return copied
654
-
655
-
656
- def _base_mcp_servers() -> dict[str, Any]:
657
- return {
658
- "filesystem": {
659
- "command": "npx",
660
- "args": ["@modelcontextprotocol/server-filesystem@2026.1.14", "."],
661
- },
662
- "omg-control": {
663
- "command": "python3",
664
- "args": ["-m", "runtime.omg_mcp_server"],
665
- },
666
- }
667
-
668
-
669
- def _plugin_mcp_servers() -> dict[str, Any]:
670
- return {
671
- "omg-control": {
672
- "command": "python3",
673
- "args": ["-m", "runtime.omg_mcp_server"],
674
- },
675
- }
676
-
677
-
678
- def _build_claude_plugin() -> dict[str, Any]:
679
- return {
680
- "name": CANONICAL_PLUGIN_ID,
681
- "version": CANONICAL_VERSION,
682
- "description": "OMG plugin layer for Claude Code with native setup, orchestration, and interop.",
683
- "author": {"name": "trac3er00"},
684
- "repository": CANONICAL_REPO_URL,
685
- "homepage": CANONICAL_REPO_URL,
686
- "license": "MIT",
687
- "keywords": [
688
- "claude-code",
689
- "plugin",
690
- "orchestration",
691
- "multi-agent",
692
- "omg",
693
- "codex",
694
- "gemini",
695
- "crazy-mode",
696
- "escalation",
697
- ],
698
- "mcpServers": "./.claude-plugin/mcp.json",
699
- }
700
-
701
-
702
- def _build_claude_marketplace() -> dict[str, Any]:
703
- return {
704
- "name": CANONICAL_MARKETPLACE_ID,
705
- "description": "Marketplace metadata for the OMG Claude plugin",
706
- "owner": {"name": "trac3er00"},
707
- "metadata": {
708
- "description": "OMG - Oh-My-God for Claude Code and supported agent hosts",
709
- "version": CANONICAL_VERSION,
710
- "homepage": CANONICAL_REPO_URL,
711
- "repository": CANONICAL_REPO_URL,
712
- },
713
- "plugins": [
714
- {
715
- "name": CANONICAL_PLUGIN_ID,
716
- "description": "OMG plugin layer for Claude Code and supported agent hosts with native setup, orchestration, and interop.",
717
- "version": CANONICAL_VERSION,
718
- "source": "./",
719
- "author": {"name": "trac3er00"},
720
- "license": "MIT",
721
- "category": "productivity",
722
- "tags": [
723
- "orchestration",
724
- "automation",
725
- "multi-agent",
726
- "omg",
727
- "codex",
728
- "gemini",
729
- "crazy-mode",
730
- ],
731
- }
732
- ],
733
- "version": CANONICAL_VERSION,
734
- }
735
-
736
-
737
- def _bundle_map(bundles: Iterable[dict[str, Any]]) -> dict[str, dict[str, Any]]:
738
- return {str(bundle["id"]): bundle for bundle in bundles}
739
-
740
-
741
- def _compile_hook_settings(bundle: dict[str, Any]) -> dict[str, Any]:
742
- events = bundle.get("compiled_hooks", {})
743
- if not isinstance(events, dict):
744
- return {}
745
-
746
- compiled: dict[str, Any] = {}
747
- for event_name, items in events.items():
748
- if not isinstance(items, list):
749
- continue
750
- compiled_entries: list[dict[str, Any]] = []
751
- for item in items:
752
- if not isinstance(item, dict):
753
- continue
754
- command = str(item.get("command", "")).strip()
755
- if not command:
756
- continue
757
- hook_payload: dict[str, Any] = {"type": "command", "command": command}
758
- timeout = item.get("timeout")
759
- if isinstance(timeout, int):
760
- hook_payload["timeout"] = timeout
761
- entry: dict[str, Any] = {"hooks": [hook_payload]}
762
- if "matcher" in item:
763
- entry["matcher"] = str(item.get("matcher", ""))
764
- compiled_entries.append(entry)
765
- if compiled_entries:
766
- compiled[str(event_name)] = compiled_entries
767
- return compiled
768
-
769
-
770
- def _protected_paths_for_channel(channel: str) -> list[str]:
771
- paths = [".omg/**", ".agents/**", ".codex/**", ".claude/**"]
772
- if channel == "enterprise":
773
- paths.extend(["registry/**", "dist/**"])
774
- return paths
775
-
776
-
777
- def _default_claude_hook_registrations() -> dict[str, list[dict[str, Any]]]:
778
- """Default OMG hook registrations for each required Claude event."""
779
- return {
780
- "UserPromptSubmit": [
781
- {
782
- "hooks": [
783
- {
784
- "type": "command",
785
- "command": '"$HOME/.claude/omg-runtime/.venv/bin/python" "$HOME/.claude/hooks/user-prompt-submit.py"',
786
- "timeout": 10,
787
- }
788
- ],
789
- }
790
- ],
791
- "PreToolUse": [
792
- {
793
- "hooks": [
794
- {
795
- "type": "command",
796
- "command": '"$HOME/.claude/omg-runtime/.venv/bin/python" "$HOME/.claude/hooks/firewall.py"',
797
- "timeout": 10,
798
- }
799
- ],
800
- "matcher": "Bash",
801
- },
802
- {
803
- "hooks": [
804
- {
805
- "type": "command",
806
- "command": '"$HOME/.claude/omg-runtime/.venv/bin/python" "$HOME/.claude/hooks/secret-guard.py"',
807
- "timeout": 10,
808
- }
809
- ],
810
- "matcher": "Read|Write|Edit|MultiEdit",
811
- },
812
- ],
813
- "PostToolUse": [
814
- {
815
- "hooks": [
816
- {
817
- "type": "command",
818
- "command": '"$HOME/.claude/omg-runtime/.venv/bin/python" "$HOME/.claude/hooks/tool-ledger.py"',
819
- "timeout": 10,
820
- }
821
- ],
822
- "matcher": "Write|Edit|MultiEdit",
823
- },
824
- ],
825
- "PostToolUseFailure": [
826
- {
827
- "hooks": [
828
- {
829
- "type": "command",
830
- "command": '"$HOME/.claude/omg-runtime/.venv/bin/python" "$HOME/.claude/hooks/post-tool-failure.py"',
831
- }
832
- ],
833
- }
834
- ],
835
- "InstructionsLoaded": [
836
- {
837
- "hooks": [
838
- {
839
- "type": "command",
840
- "command": '"$HOME/.claude/omg-runtime/.venv/bin/python" "$HOME/.claude/hooks/instructions-loaded.py"',
841
- "timeout": 10,
842
- }
843
- ],
844
- }
845
- ],
846
- }
847
-
848
-
849
- def _build_claude_subagents(protected_paths: list[str]) -> list[dict[str, Any]]:
850
- """Build narrow-tool Claude subagent definitions. No bypassPermissions allowed."""
851
- return [
852
- {
853
- "name": "security-reviewer",
854
- "description": "Read-only security review subagent with scoped tool access.",
855
- "tools": [
856
- "Read",
857
- "Grep",
858
- "Glob",
859
- "Bash(grep *)",
860
- "Bash(find *)",
861
- "Bash(git log *)",
862
- "Bash(git diff *)",
863
- ],
864
- "bypassPermissions": False,
865
- },
866
- {
867
- "name": "release-manager",
868
- "description": "Release management subagent with write access governed by protected-path policy.",
869
- "tools": [
870
- "Read",
871
- "Write",
872
- "Edit",
873
- "Grep",
874
- "Glob",
875
- "Bash(git *)",
876
- "Bash(python3 scripts/omg.py *)",
877
- ],
878
- "bypassPermissions": False,
879
- "protectedPaths": protected_paths,
880
- },
881
- ]
882
-
883
-
884
- def _build_claude_skills(policy_model: dict[str, Any] | None) -> list[dict[str, Any]]:
885
- """Build Claude skill definitions from the policy model host_rules."""
886
- skill_refs: list[str] = []
887
- if isinstance(policy_model, dict):
888
- host_rules = policy_model.get("host_rules", {})
889
- if isinstance(host_rules, dict):
890
- claude_rules = host_rules.get("claude", {})
891
- if isinstance(claude_rules, dict):
892
- skill_refs = [str(s) for s in claude_rules.get("skills", []) if str(s).strip()]
893
- skills: list[dict[str, Any]] = []
894
- for ref in skill_refs:
895
- skills.append({"name": ref, "source": f".agents/skills/{ref}/"})
896
- return skills
897
-
898
-
899
- def _validate_compiled_claude_output(output_root: Path) -> list[str]:
900
- """Validate compiled Claude settings.json contains required hooks and subagents."""
901
- settings_path = output_root / "settings.json"
902
- if not settings_path.exists():
903
- return ["claude: missing compiled settings.json"]
904
-
905
- settings = _load_json(settings_path)
906
- errors: list[str] = []
907
-
908
- hooks = settings.get("hooks", {})
909
- for event in REQUIRED_CLAUDE_HOOK_EVENTS:
910
- if event not in hooks or not hooks[event]:
911
- errors.append(f"claude: missing required hook event '{event}'")
912
-
913
- omg = settings.get("_omg", {})
914
- generated = omg.get("generated", {})
915
- subagents = generated.get("subagents", [])
916
- subagent_names = {sa.get("name") for sa in subagents if isinstance(sa, dict)}
917
- for name in REQUIRED_CLAUDE_SUBAGENT_NAMES:
918
- if name not in subagent_names:
919
- errors.append(f"claude: missing required subagent '{name}'")
920
-
921
- for sa in subagents:
922
- if isinstance(sa, dict) and sa.get("bypassPermissions"):
923
- errors.append(
924
- f"claude: subagent '{sa.get('name', '<unknown>')}' has bypassPermissions enabled"
925
- )
926
-
927
- return errors
928
-
929
-
930
- def _compile_claude_outputs(
931
- *,
932
- root: Path,
933
- output_root: Path,
934
- bundles: list[dict[str, Any]],
935
- channel: str,
936
- policy_model: dict[str, Any] | None,
937
- ) -> list[Path]:
938
- artifacts: list[Path] = []
939
-
940
- _write_json(output_root / ".claude-plugin" / "plugin.json", _build_claude_plugin())
941
- artifacts.append(output_root / ".claude-plugin" / "plugin.json")
942
-
943
- _write_json(output_root / ".claude-plugin" / "marketplace.json", _build_claude_marketplace())
944
- artifacts.append(output_root / ".claude-plugin" / "marketplace.json")
945
-
946
- _write_json(output_root / ".claude-plugin" / "mcp.json", {"mcpServers": _plugin_mcp_servers()})
947
- artifacts.append(output_root / ".claude-plugin" / "mcp.json")
948
-
949
- mcp_payload = {"mcpServers": _base_mcp_servers()}
950
- _write_json(output_root / ".mcp.json", mcp_payload)
951
- artifacts.append(output_root / ".mcp.json")
952
-
953
- settings_path = root / "settings.json"
954
- if not settings_path.exists():
955
- settings_path = resolve_asset("settings.json")
956
- settings = _load_json(settings_path)
957
- hook_bundle = _bundle_map(bundles)["hook-governor"]
958
- compiled_hooks = _compile_hook_settings(hook_bundle)
959
- defaults = _default_claude_hook_registrations()
960
- for event in REQUIRED_CLAUDE_HOOK_EVENTS:
961
- if event not in compiled_hooks or not compiled_hooks[event]:
962
- compiled_hooks[event] = defaults[event]
963
- settings["hooks"] = compiled_hooks
964
-
965
- protected_paths = _policy_protected_paths(policy_model, channel=channel)
966
- subagents = _build_claude_subagents(protected_paths)
967
- skills = _build_claude_skills(policy_model)
968
-
969
- omg_settings = dict(settings.get("_omg", {}))
970
- omg_settings["_version"] = CANONICAL_VERSION
971
- phase1_release_contract = _build_phase1_release_contract()
972
- omg_settings["generated"] = {
973
- "contract_version": CANONICAL_VERSION,
974
- "channel": channel,
975
- "required_bundles": list(DEFAULT_REQUIRED_BUNDLES),
976
- "protected_paths": protected_paths,
977
- "emulated_events": list(hook_bundle.get("lifecycle_hooks", {}).get("emulated", [])),
978
- "policy_model": policy_model or {},
979
- "subagents": subagents,
980
- "skills": skills,
981
- "phase1_release_contract": phase1_release_contract,
982
- }
983
- settings["_omg"] = omg_settings
984
- _write_json(output_root / "settings.json", settings)
985
- artifacts.append(output_root / "settings.json")
986
-
987
- return artifacts
988
-
989
-
990
- def _yaml_string(value: str) -> str:
991
- return json.dumps(value, ensure_ascii=True)
992
-
993
-
994
- def _render_codex_skill(bundle: dict[str, Any], channel: str) -> str:
995
- execution_modes = ", ".join(str(mode) for mode in bundle.get("execution_contract", {}).get("modes", []))
996
- mcp_servers = ", ".join(str(name) for name in bundle.get("mcp_contract", {}).get("servers", []))
997
- return (
998
- f"---\n"
999
- f"name: omg-{bundle['id']}\n"
1000
- f"description: {_yaml_string(str(bundle['description']))}\n"
1001
- f"---\n\n"
1002
- f"# {bundle['title']}\n\n"
1003
- f"- Channel: `{channel}`\n"
1004
- f"- Execution modes: `{execution_modes}`\n"
1005
- f"- MCP servers: `{mcp_servers}`\n"
1006
- f"- Evidence outputs: `{', '.join(bundle.get('evidence_outputs', {}).get('artifacts', []))}`\n"
1007
- )
1008
-
1009
-
1010
- def _render_openai_yaml(bundle: dict[str, Any], channel: str) -> str:
1011
- invocation = bundle.get("invocation_policy", {})
1012
- servers = bundle.get("mcp_contract", {}).get("servers", [])
1013
- tools = bundle.get("tool_policy", {}).get("allowed_tools", {}).get("codex", [])
1014
- lines = [
1015
- f"name: omg-{bundle['id']}",
1016
- f"description: {_yaml_string(str(bundle['description']))}",
1017
- f"allow_implicit_invocation: {'true' if invocation.get('allow_implicit_invocation') else 'false'}",
1018
- "metadata:",
1019
- f" channel: {channel}",
1020
- f" bundle_id: {bundle['id']}",
1021
- f" title: {_yaml_string(str(bundle['title']))}",
1022
- "mcp_servers:",
1023
- ]
1024
- for server in servers:
1025
- lines.append(f" - {server}")
1026
- lines.append("allowed_tools:")
1027
- for tool in tools:
1028
- lines.append(f" - {_yaml_string(str(tool))}")
1029
- return "\n".join(lines) + "\n"
1030
-
1031
-
1032
- def _codex_skill_refs(policy_model: dict[str, Any] | None) -> list[str]:
1033
- """Extract skill references from policy_model.host_rules.codex.skills."""
1034
- if not isinstance(policy_model, dict):
1035
- return []
1036
- host_rules = policy_model.get("host_rules", {})
1037
- if not isinstance(host_rules, dict):
1038
- return []
1039
- codex_rules = host_rules.get("codex", {})
1040
- if not isinstance(codex_rules, dict):
1041
- return []
1042
- return [str(s) for s in codex_rules.get("skills", []) if str(s).strip()]
1043
-
1044
-
1045
- def _codex_evidence_fields(policy_model: dict[str, Any] | None) -> list[str]:
1046
- """Extract required evidence contract fields from the policy model."""
1047
- if not isinstance(policy_model, dict):
1048
- return []
1049
- ec = policy_model.get("evidence_contract", {})
1050
- if not isinstance(ec, dict):
1051
- return []
1052
- return sorted(ec.keys())
1053
-
1054
-
1055
- def _codex_protected_planning_skills(bundles: Iterable[dict[str, Any]]) -> list[str]:
1056
- protected: list[str] = []
1057
- for bundle in bundles:
1058
- if "codex" not in bundle.get("hosts", []):
1059
- continue
1060
- if str(bundle.get("kind", "")).strip().lower() != "planning":
1061
- continue
1062
- invocation = bundle.get("invocation_policy", {})
1063
- if not isinstance(invocation, dict):
1064
- continue
1065
- if invocation.get("allow_implicit_invocation") is False:
1066
- protected.append(f"omg/{bundle['id']}")
1067
- return sorted(set(protected))
1068
-
1069
-
1070
- def _render_codex_agents_fragment(
1071
- *,
1072
- channel: str,
1073
- protected_paths: list[str],
1074
- codex_rules: list[str],
1075
- codex_automations: list[str],
1076
- codex_skills: list[str],
1077
- evidence_fields: list[str],
1078
- protected_planning_skills: list[str],
1079
- phase1_release_contract: dict[str, list[str]],
1080
- ) -> str:
1081
- """Render a comprehensive AGENTS.fragment.md for Codex host."""
1082
- sections: list[str] = []
1083
-
1084
- # Header
1085
- sections.append(f"# OMG Codex Governance (channel: {channel})\n")
1086
-
1087
- # Build & Test
1088
- sections.append("## Build & Test\n")
1089
- sections.append("```bash")
1090
- sections.append("python3 -m pytest tests -q")
1091
- sections.append("python3 scripts/omg.py contract validate")
1092
- sections.append(f"python3 scripts/omg.py contract compile --host codex --channel {channel}")
1093
- sections.append("```\n")
1094
-
1095
- # Protected Paths
1096
- sections.append("## Protected Paths\n")
1097
- sections.append("The following paths require tier-gated review before mutation:\n")
1098
- for path in protected_paths:
1099
- sections.append(f"- `{path}`")
1100
- sections.append("")
1101
-
1102
- sections.append("## Release Audit\n")
1103
- sections.append("Release readiness requires claim and compliance outcomes:\n")
1104
- for check in phase1_release_contract.get("release_readiness_checks", []):
1105
- sections.append(f"- `{check}`")
1106
- sections.append("Attestation requirements:")
1107
- for requirement in phase1_release_contract.get("attestation_requirements", []):
1108
- sections.append(f"- `{requirement}`")
1109
- sections.append("")
1110
-
1111
- # Evidence Contract
1112
- sections.append("## Evidence Contract\n")
1113
- sections.append("Every production action must emit evidence containing these fields:\n")
1114
- if evidence_fields:
1115
- for field in evidence_fields:
1116
- sections.append(f"- `{field}`")
1117
- else:
1118
- sections.append("- `timestamp`")
1119
- sections.append("- `executor`")
1120
- sections.append("- `trace_id`")
1121
- sections.append("- `lineage`")
1122
- sections.append("")
1123
-
1124
- # Required Skills
1125
- sections.append("## Required Skills\n")
1126
- if codex_skills:
1127
- for skill in codex_skills:
1128
- sections.append(f"- `{skill}`")
1129
- else:
1130
- sections.append("- `omg/control-plane`")
1131
- sections.append("")
1132
-
1133
- sections.append("## Protected Planning Surface\n")
1134
- if protected_planning_skills:
1135
- sections.append("Council planning skills are protected and explicit-invocation only:")
1136
- sections.append("")
1137
- for skill in protected_planning_skills:
1138
- sections.append(f"- `{skill}`")
1139
- else:
1140
- sections.append("- No protected planning skills configured.")
1141
- sections.append("")
1142
-
1143
- # Web Search Policy
1144
- sections.append("## Web Search Policy\n")
1145
- sections.append("- Prefer cached results over live network requests.")
1146
- sections.append("- Do NOT initiate live web searches unless explicitly instructed.")
1147
- sections.append("- Use `context7` or local documentation before external lookups.")
1148
- sections.append("- Set `cached_web_search: prefer_cached` as the default.\n")
1149
-
1150
- # Approval Constraints
1151
- sections.append("## Approval Constraints\n")
1152
- sections.append("- Destructive file operations require explicit user approval.")
1153
- sections.append("- `git push --force` and branch deletions require explicit approval.")
1154
- sections.append("- Production deployments require explicit approval.")
1155
- sections.append("- Mutations to protected paths require tier-gated approval.\n")
1156
-
1157
- # Rules & Automations (compact summary)
1158
- sections.append("## Rules & Automations\n")
1159
- rules_str = ", ".join(codex_rules) if codex_rules else "protected_paths, explicit_invocation"
1160
- auto_str = ", ".join(codex_automations) if codex_automations else "contract-compile"
1161
- sections.append(f"- Rules: `{rules_str}`")
1162
- sections.append(f"- Automations: `{auto_str}`")
1163
- sections.append("- Defer to the repo's `AGENTS.md` / `AGENTS.override.md` instruction hierarchy before OMG-specific guidance.")
1164
- sections.append("- Do not mirror or override Codex built-in slash commands; OMG guidance applies through MCP, skills, and generated rules.")
1165
- sections.append("- Require explicit invocation for protected production planning skills.")
1166
- sections.append("")
1167
-
1168
- return "\n".join(sections)
1169
-
1170
-
1171
- def _render_codex_rules(
1172
- *,
1173
- channel: str,
1174
- protected_paths: list[str],
1175
- codex_skills: list[str],
1176
- protected_planning_skills: list[str],
1177
- ) -> str:
1178
- """Render a codex-rules.md config fragment encoding defaults."""
1179
- lines: list[str] = []
1180
- lines.append(f"# OMG Codex Rules (channel: {channel})\n")
1181
-
1182
- lines.append("## Defaults\n")
1183
- lines.append("- `cached_web_search: prefer_cached`")
1184
- lines.append("- `live_network: deny_by_default`")
1185
- lines.append("- `destructive_approval: required`\n")
1186
-
1187
- lines.append("## Protected Paths\n")
1188
- for path in protected_paths:
1189
- lines.append(f"- `{path}`")
1190
- lines.append("")
1191
-
1192
- lines.append("## Required Skills\n")
1193
- for skill in (codex_skills or ["omg/control-plane"]):
1194
- lines.append(f"- `{skill}`")
1195
- lines.append("")
1196
-
1197
- lines.append("## Host Interop\n")
1198
- lines.append("- Respect the repo `AGENTS.md` / `AGENTS.override.md` chain before applying OMG-specific rules.")
1199
- lines.append("- Keep OMG guidance separate from Codex built-in slash commands.")
1200
- lines.append("")
1201
-
1202
- lines.append("## Protected Planning Surface\n")
1203
- if protected_planning_skills:
1204
- for skill in protected_planning_skills:
1205
- lines.append(f"- `{skill}` (explicit invocation only)")
1206
- else:
1207
- lines.append("- none")
1208
- lines.append("")
1209
-
1210
- lines.append("## Approval Matrix\n")
1211
- lines.append("| Action | Approval Required |")
1212
- lines.append("|--------|------------------|")
1213
- lines.append("| Read / Grep | No |")
1214
- lines.append("| Write to protected paths | Yes |")
1215
- lines.append("| Bash (python3:*) | Yes (balanced+ tier) |")
1216
- lines.append("| git push --force | Yes |")
1217
- lines.append("| Production deploy | Yes |")
1218
- lines.append("")
1219
-
1220
- return "\n".join(lines)
1221
-
1222
-
1223
- def _validate_compiled_codex_output(output_root: Path) -> list[str]:
1224
- """Validate compiled Codex output contains required AGENTS sections and artifacts."""
1225
- errors: list[str] = []
1226
- shared_dir = output_root / ".agents" / "skills" / "omg"
1227
-
1228
- for required_file in REQUIRED_CODEX_OUTPUTS:
1229
- path = shared_dir / required_file
1230
- if not path.exists():
1231
- errors.append(f"codex: missing required output '{required_file}'")
1232
-
1233
- agents_path = shared_dir / "AGENTS.fragment.md"
1234
- if agents_path.exists():
1235
- content = agents_path.read_text(encoding="utf-8")
1236
- for section in REQUIRED_CODEX_AGENTS_SECTIONS:
1237
- if section not in content:
1238
- errors.append(f"codex: AGENTS.fragment.md missing required section '{section}'")
1239
- else:
1240
- errors.append("codex: cannot validate AGENTS.fragment.md — file missing")
1241
-
1242
- return errors
1243
-
1244
-
1245
- def _compile_codex_outputs(
1246
- *,
1247
- output_root: Path,
1248
- bundles: list[dict[str, Any]],
1249
- channel: str,
1250
- policy_model: dict[str, Any] | None,
1251
- ) -> list[Path]:
1252
- artifacts: list[Path] = []
1253
- shared_dir = output_root / ".agents" / "skills" / "omg"
1254
- shared_dir.mkdir(parents=True, exist_ok=True)
1255
-
1256
- protected_paths = _policy_protected_paths(policy_model, channel=channel)
1257
- codex_rules: list[str] = []
1258
- codex_automations: list[str] = []
1259
- if isinstance(policy_model, dict):
1260
- host_rules = policy_model.get("host_rules", {})
1261
- if isinstance(host_rules, dict):
1262
- codex_policy = host_rules.get("codex", {})
1263
- if isinstance(codex_policy, dict):
1264
- codex_rules = [str(item) for item in codex_policy.get("rules", []) if str(item).strip()]
1265
- codex_automations = [
1266
- str(item) for item in codex_policy.get("automations", []) if str(item).strip()
1267
- ]
1268
-
1269
- codex_skills = _codex_skill_refs(policy_model)
1270
- evidence_fields = _codex_evidence_fields(policy_model)
1271
- protected_planning_skills = _codex_protected_planning_skills(bundles)
1272
- phase1_release_contract = _build_phase1_release_contract()
1273
-
1274
- agents_fragment = _render_codex_agents_fragment(
1275
- channel=channel,
1276
- protected_paths=protected_paths,
1277
- codex_rules=codex_rules,
1278
- codex_automations=codex_automations,
1279
- codex_skills=codex_skills,
1280
- evidence_fields=evidence_fields,
1281
- protected_planning_skills=protected_planning_skills,
1282
- phase1_release_contract=phase1_release_contract,
1283
- )
1284
- _write_text(shared_dir / "AGENTS.fragment.md", agents_fragment)
1285
- artifacts.append(shared_dir / "AGENTS.fragment.md")
1286
-
1287
- rules_content = _render_codex_rules(
1288
- channel=channel,
1289
- protected_paths=protected_paths,
1290
- codex_skills=codex_skills,
1291
- protected_planning_skills=protected_planning_skills,
1292
- )
1293
- _write_text(shared_dir / "codex-rules.md", rules_content)
1294
- artifacts.append(shared_dir / "codex-rules.md")
1295
-
1296
- from runtime.mcp_config_writers import write_codex_mcp_stdio_config
1297
-
1298
- codex_mcp_path = shared_dir / "codex-mcp.toml"
1299
- write_codex_mcp_stdio_config(
1300
- command="python3",
1301
- args=["-m", "runtime.omg_mcp_server"],
1302
- server_name="omg-control",
1303
- config_path=codex_mcp_path,
1304
- )
1305
- artifacts.append(codex_mcp_path)
1306
-
1307
- for bundle in bundles:
1308
- if "codex" not in bundle.get("hosts", []):
1309
- continue
1310
- skill_dir = shared_dir / str(bundle["id"])
1311
- _write_text(skill_dir / "SKILL.md", _render_codex_skill(bundle, channel))
1312
- _write_text(skill_dir / "openai.yaml", _render_openai_yaml(bundle, channel))
1313
- artifacts.extend([skill_dir / "SKILL.md", skill_dir / "openai.yaml"])
1314
-
1315
- return artifacts
1316
-
1317
-
1318
- def _compile_gemini_outputs(output_root: Path, channel: str) -> dict[str, Any]:
1319
- from runtime.mcp_config_writers import write_gemini_mcp_stdio_config
1320
-
1321
- config_path = output_root / ".gemini" / "settings.json"
1322
- write_gemini_mcp_stdio_config(
1323
- command="python3",
1324
- args=["-m", "runtime.omg_mcp_server"],
1325
- server_name="omg-control",
1326
- config_path=config_path,
1327
- )
1328
- payload = _load_json(config_path)
1329
- payload["_omg"] = {
1330
- "_version": CANONICAL_VERSION,
1331
- "generated": {
1332
- "contract_version": CANONICAL_VERSION,
1333
- "channel": channel,
1334
- "required_bundles": list(DEFAULT_REQUIRED_BUNDLES),
1335
- "phase1_release_contract": _build_phase1_release_contract(),
1336
- },
1337
- }
1338
- _write_json(config_path, payload)
1339
- return {"host": "gemini", "artifacts": [config_path]}
1340
-
1341
-
1342
- def _compile_kimi_outputs(output_root: Path, channel: str) -> dict[str, Any]:
1343
- from runtime.mcp_config_writers import write_kimi_mcp_stdio_config
1344
-
1345
- config_path = output_root / ".kimi" / "mcp.json"
1346
- write_kimi_mcp_stdio_config(
1347
- command="python3",
1348
- args=["-m", "runtime.omg_mcp_server"],
1349
- server_name="omg-control",
1350
- config_path=config_path,
1351
- )
1352
- payload = _load_json(config_path)
1353
- payload["_omg"] = {
1354
- "_version": CANONICAL_VERSION,
1355
- "generated": {
1356
- "contract_version": CANONICAL_VERSION,
1357
- "channel": channel,
1358
- "required_bundles": list(DEFAULT_REQUIRED_BUNDLES),
1359
- "phase1_release_contract": _build_phase1_release_contract(),
1360
- },
1361
- }
1362
- _write_json(config_path, payload)
1363
- return {"host": "kimi", "artifacts": [config_path]}
1364
-
1365
-
1366
- def _copy_release_bundle(
1367
- *,
1368
- output_root: Path,
1369
- channel: str,
1370
- artifacts: list[Path],
1371
- ) -> list[Path]:
1372
- bundle_root = output_root / "dist" / channel / "bundle"
1373
- if bundle_root.exists():
1374
- shutil.rmtree(bundle_root)
1375
- copied: list[Path] = []
1376
- for path in sorted(set(artifacts)):
1377
- rel_path = path.relative_to(output_root)
1378
- dst = bundle_root / rel_path
1379
- dst.parent.mkdir(parents=True, exist_ok=True)
1380
- shutil.copy2(path, dst)
1381
- copied.append(dst)
1382
- return copied
1383
-
1384
-
1385
- def _build_dist_manifest(output_root: Path, *, channel: str, hosts: list[str], artifacts: list[Path]) -> Path:
1386
- dist_root = output_root / "dist" / channel
1387
- artifact_entries: list[dict[str, str]] = []
1388
- attestation_rows: list[dict[str, str]] = []
1389
-
1390
- for path in sorted(set(artifacts)):
1391
- rel_path = str(path.relative_to(dist_root))
1392
- digest = _sha256_file(path)
1393
- artifact_entries.append({"path": rel_path, "sha256": digest})
1394
-
1395
- statement = sign_artifact_statement(
1396
- artifact_path=rel_path,
1397
- subject_digest=digest,
1398
- )
1399
-
1400
- statement_rel = f"attestations/{rel_path}.statement.json"
1401
- statement_abs = dist_root / statement_rel
1402
- _write_json(statement_abs, statement)
1403
-
1404
- sig_rel = f"attestations/{rel_path}.minisig"
1405
- sig_abs = dist_root / sig_rel
1406
- sig_value = statement.get("signature", {}).get("value", "")
1407
- _write_text(sig_abs, sig_value + "\n")
1408
-
1409
- attestation_rows.append({
1410
- "artifact_path": rel_path,
1411
- "statement_path": statement_rel,
1412
- "signature_path": sig_rel,
1413
- "signer_key_id": statement.get("signature", {}).get("keyid", ""),
1414
- "algorithm": "ed25519-minisign",
1415
- })
1416
-
1417
- payload = {
1418
- "schema": "OmgCompiledArtifactManifest",
1419
- "channel": channel,
1420
- "hosts": list(hosts),
1421
- "contract_version": CANONICAL_VERSION,
1422
- "artifacts": artifact_entries,
1423
- "attestations": attestation_rows,
1424
- }
1425
- out_path = dist_root / "manifest.json"
1426
- _write_json(out_path, payload)
1427
- return out_path
1428
-
1429
-
1430
- def compile_contract_outputs(
1431
- *,
1432
- root_dir: str | Path | None = None,
1433
- output_root: str | Path | None = None,
1434
- hosts: list[str] | tuple[str, ...] | None = None,
1435
- channel: str = "public",
1436
- ) -> dict[str, Any]:
1437
- root = _resolve_root(root_dir)
1438
- output = _resolve_output_root(root, output_root)
1439
- validation = validate_contract_registry(root)
1440
- if validation["status"] != "ok":
1441
- return {
1442
- "schema": "OmgContractCompileResult",
1443
- "status": "error",
1444
- "channel": channel,
1445
- "hosts": list(hosts or SUPPORTED_HOSTS),
1446
- "errors": validation["errors"],
1447
- "artifacts": [],
1448
- }
1449
-
1450
- if channel not in SUPPORTED_CHANNELS:
1451
- return {
1452
- "schema": "OmgContractCompileResult",
1453
- "status": "error",
1454
- "channel": channel,
1455
- "hosts": list(hosts or SUPPORTED_HOSTS),
1456
- "errors": [f"unsupported channel: {channel}"],
1457
- "artifacts": [],
1458
- }
1459
-
1460
- selected_hosts = list(hosts or SUPPORTED_HOSTS)
1461
- bad_hosts = [host for host in selected_hosts if host not in SUPPORTED_HOSTS]
1462
- if bad_hosts:
1463
- return {
1464
- "schema": "OmgContractCompileResult",
1465
- "status": "error",
1466
- "channel": channel,
1467
- "hosts": selected_hosts,
1468
- "errors": [f"unsupported hosts: {bad_hosts}"],
1469
- "artifacts": [],
1470
- }
1471
-
1472
- bundles = load_contract_bundles(root)
1473
- policy_model = _policy_model_for_bundle(bundles, "control-plane")
1474
- artifacts = _copy_contract_inputs(root, output)
1475
-
1476
- if "claude" in selected_hosts:
1477
- artifacts.extend(
1478
- _compile_claude_outputs(
1479
- root=root,
1480
- output_root=output,
1481
- bundles=bundles,
1482
- channel=channel,
1483
- policy_model=policy_model,
1484
- )
1485
- )
1486
- claude_errors = _validate_compiled_claude_output(output)
1487
- if claude_errors:
1488
- return {
1489
- "schema": "OmgContractCompileResult",
1490
- "status": "error",
1491
- "channel": channel,
1492
- "hosts": selected_hosts,
1493
- "errors": claude_errors,
1494
- "artifacts": [],
1495
- }
1496
- if "codex" in selected_hosts:
1497
- artifacts.extend(
1498
- _compile_codex_outputs(
1499
- output_root=output,
1500
- bundles=bundles,
1501
- channel=channel,
1502
- policy_model=policy_model,
1503
- )
1504
- )
1505
- codex_errors = _validate_compiled_codex_output(output)
1506
- if codex_errors:
1507
- return {
1508
- "schema": "OmgContractCompileResult",
1509
- "status": "error",
1510
- "channel": channel,
1511
- "hosts": selected_hosts,
1512
- "errors": codex_errors,
1513
- "artifacts": [],
1514
- }
1515
-
1516
- if "gemini" in selected_hosts:
1517
- artifacts.extend(_compile_gemini_outputs(output, channel)["artifacts"])
1518
-
1519
- if "kimi" in selected_hosts:
1520
- artifacts.extend(_compile_kimi_outputs(output, channel)["artifacts"])
1521
-
1522
- bundled_artifacts = _copy_release_bundle(output_root=output, channel=channel, artifacts=artifacts)
1523
- manifest_path = _build_dist_manifest(output, channel=channel, hosts=selected_hosts, artifacts=bundled_artifacts)
1524
- artifacts.append(manifest_path)
1525
-
1526
- return {
1527
- "schema": "OmgContractCompileResult",
1528
- "status": "ok",
1529
- "channel": channel,
1530
- "hosts": selected_hosts,
1531
- "artifacts": [str(path.relative_to(output)) for path in artifacts],
1532
- "manifest": str(manifest_path.relative_to(output)),
1533
- }
1534
-
1535
-
1536
- def _provider_statuses() -> dict[str, dict[str, Any]]:
1537
- ready_override = {
1538
- item.strip()
1539
- for item in os.environ.get("OMG_RELEASE_READY_PROVIDERS", "").split(",")
1540
- if item.strip()
1541
- }
1542
- statuses: dict[str, dict[str, Any]] = {}
1543
-
1544
- for provider_name in SUPPORTED_HOSTS:
1545
- if provider_name in ready_override:
1546
- statuses[provider_name] = {"ready": True, "source": "env"}
1547
- continue
1548
-
1549
- if provider_name == "claude":
1550
- claude_bin = os.environ.get("OMG_CLAUDE_BIN", "claude")
1551
- cmd = os.environ.get("OMG_CLAUDE_WORKER_CMD", "").strip()
1552
- ready = bool(cmd) or shutil.which(claude_bin) is not None
1553
- statuses[provider_name] = {
1554
- "ready": ready,
1555
- "source": "env-cmd" if cmd else "path",
1556
- "detail": cmd or claude_bin,
1557
- }
1558
- continue
1559
-
1560
- if provider_name == "gemini":
1561
- import runtime.providers.gemini_provider # noqa: F401
1562
- elif provider_name == "kimi":
1563
- import runtime.providers.kimi_provider # noqa: F401
1564
- else:
1565
- import runtime.providers.codex_provider # noqa: F401
1566
- from runtime.cli_provider import get_provider
1567
-
1568
- provider = get_provider(provider_name)
1569
- ready = bool(provider and provider.detect())
1570
- statuses[provider_name] = {"ready": ready, "source": "provider"}
1571
-
1572
- return statuses
1573
-
1574
-
1575
- def _check_mcp_fabric() -> dict[str, Any]:
1576
- import runtime.omg_mcp_server as omg_mcp_server
1577
-
1578
- prompts = asyncio.run(omg_mcp_server.mcp.list_prompts())
1579
- resources = asyncio.run(omg_mcp_server.mcp.list_resources())
1580
- instructions = getattr(omg_mcp_server.mcp, "instructions", "")
1581
- return {
1582
- "ready": isinstance(instructions, str) and bool(instructions.strip()) and len(prompts) >= 1 and len(resources) >= 1,
1583
- "prompt_count": len(prompts),
1584
- "resource_count": len(resources),
1585
- }
1586
-
1587
-
1588
- def _check_plugin_command_paths(root: Path) -> dict[str, Any]:
1589
- blockers: list[str] = []
1590
- details: dict[str, Any] = {}
1591
-
1592
- plugin_specs: list[tuple[str, Path, Path]] = [
1593
- ("core", root / "plugins" / "core" / "plugin.json", root),
1594
- ("advanced", root / "plugins" / "advanced" / "plugin.json", root / "plugins" / "advanced"),
1595
- ]
1596
-
1597
- for plugin_name, manifest_path, resolve_root in plugin_specs:
1598
- plugin_detail: dict[str, Any] = {"manifest": str(manifest_path), "commands": {}}
1599
- if not manifest_path.exists():
1600
- blockers.append(f"plugin_command_paths: missing manifest {manifest_path.relative_to(root)}")
1601
- plugin_detail["status"] = "error"
1602
- details[plugin_name] = plugin_detail
1603
- continue
1604
-
1605
- try:
1606
- manifest = json.loads(manifest_path.read_text(encoding="utf-8"))
1607
- except (json.JSONDecodeError, OSError) as exc:
1608
- blockers.append(f"plugin_command_paths: unreadable manifest {manifest_path.relative_to(root)}: {exc}")
1609
- plugin_detail["status"] = "error"
1610
- details[plugin_name] = plugin_detail
1611
- continue
1612
-
1613
- commands = manifest.get("commands", {})
1614
- missing: list[str] = []
1615
- for cmd_name, cmd_config in commands.items():
1616
- cmd_path = cmd_config.get("path", "")
1617
- resolved = resolve_root / cmd_path
1618
- plugin_detail["commands"][cmd_name] = str(cmd_path)
1619
- if not resolved.exists():
1620
- missing.append(cmd_path)
1621
- blockers.append(
1622
- f"plugin_command_paths: {plugin_name} command '{cmd_name}' missing source {cmd_path}"
1623
- )
1624
-
1625
- plugin_detail["missing"] = missing
1626
- plugin_detail["status"] = "ok" if not missing else "error"
1627
- details[plugin_name] = plugin_detail
1628
-
1629
- return {
1630
- "status": "ok" if not blockers else "error",
1631
- "blockers": blockers,
1632
- "details": details,
1633
- }
1634
-
1635
-
1636
- def _check_version_identity_drift(root: Path) -> dict[str, Any]:
1637
- canonical_version = CANONICAL_VERSION
1638
- blockers: list[str] = []
1639
- drift_details: dict[str, str] = {}
1640
-
1641
- from runtime.release_surfaces import AUTHORED_SURFACES
1642
-
1643
- sync_script = Path(__file__).resolve().parents[1] / "scripts" / "sync-release-identity.py"
1644
- if not sync_script.exists():
1645
- return {
1646
- "status": "error",
1647
- "canonical_version": canonical_version,
1648
- "blockers": ["version_drift: missing scripts/sync-release-identity.py"],
1649
- "drift_details": {},
1650
- }
1651
-
1652
- spec = importlib.util.spec_from_file_location("sync_release_identity", sync_script)
1653
- if spec is None or spec.loader is None:
1654
- return {
1655
- "status": "error",
1656
- "canonical_version": canonical_version,
1657
- "blockers": ["version_drift: unable to load scripts/sync-release-identity.py"],
1658
- "drift_details": {},
1659
- }
1660
-
1661
- module = importlib.util.module_from_spec(spec)
1662
- spec.loader.exec_module(module)
1663
- check_surface = getattr(module, "check_surface", None)
1664
- if not callable(check_surface):
1665
- return {
1666
- "status": "error",
1667
- "canonical_version": canonical_version,
1668
- "blockers": ["version_drift: scripts/sync-release-identity.py missing check_surface"],
1669
- "drift_details": {},
1670
- }
1671
-
1672
- for surface in AUTHORED_SURFACES:
1673
- raw_drifts = check_surface(root, surface, canonical_version)
1674
- if not isinstance(raw_drifts, list):
1675
- blockers.append(
1676
- f"version_drift: {surface.file_path} has version <invalid drift payload>, expected {canonical_version}"
1677
- )
1678
- continue
1679
- for drift in raw_drifts:
1680
- if not isinstance(drift, (tuple, list)) or len(drift) != 2:
1681
- continue
1682
- label, found = drift
1683
- found_value = "<not found>" if found is None else str(found)
1684
- blockers.append(
1685
- f"version_drift: {label} has version {found_value}, expected {canonical_version}"
1686
- )
1687
- drift_details[str(label)] = found_value
1688
-
1689
- return {
1690
- "status": "ok" if not blockers else "error",
1691
- "canonical_version": canonical_version,
1692
- "blockers": blockers,
1693
- "drift_details": drift_details,
1694
- }
1695
-
1696
-
1697
- def _check_doctor_output(output_root: Path) -> dict[str, Any]:
1698
- evidence_dir = output_root / ".omg" / "evidence"
1699
- doctor_path = evidence_dir / "doctor.json"
1700
- if not doctor_path.exists():
1701
- return {
1702
- "status": "error",
1703
- "path": "",
1704
- "doctor": {},
1705
- "blockers": ["doctor_check_missing: missing .omg/evidence/doctor.json"],
1706
- }
1707
- try:
1708
- payload = _load_json(doctor_path)
1709
- except Exception as exc:
1710
- return {
1711
- "status": "error",
1712
- "path": str(doctor_path.relative_to(output_root)),
1713
- "doctor": {},
1714
- "blockers": [f"doctor_check_missing: invalid doctor output ({exc})"],
1715
- }
1716
-
1717
- blockers: list[str] = []
1718
- if payload.get("schema") != "DoctorResult":
1719
- blockers.append("doctor_check_missing: doctor evidence schema mismatch")
1720
- if payload.get("status") != "pass":
1721
- blockers.append("doctor_check_missing: doctor status is not pass")
1722
- checks = payload.get("checks", [])
1723
- if not isinstance(checks, list) or not checks:
1724
- blockers.append("doctor_check_missing: doctor checks missing")
1725
-
1726
- return {
1727
- "status": "ok" if not blockers else "error",
1728
- "path": str(doctor_path.relative_to(output_root)),
1729
- "doctor": payload,
1730
- "blockers": blockers,
1731
- }
1732
-
1733
-
1734
- def _check_proof_surface(root: Path) -> dict[str, Any]:
1735
- proof_path = root / "docs" / "proof.md"
1736
- if not proof_path.exists():
1737
- return {
1738
- "status": "error",
1739
- "path": "docs/proof.md",
1740
- "blockers": ["prose_only_proof: docs/proof.md missing"],
1741
- }
1742
-
1743
- content = proof_path.read_text(encoding="utf-8")
1744
- lowered = content.lower()
1745
- hardcoded_counts = bool(
1746
- re.search(r"\b\d+\s*/\s*\d+\b", lowered)
1747
- or re.search(r"\b\d+\s+(tests?|checks?|providers?)\s+(passed|pass|green|successful)\b", lowered)
1748
- or re.search(r"\ball\s+tests?\s+passed\b", lowered)
1749
- )
1750
- artifact_refs = (
1751
- ".omg/evidence/",
1752
- ".omg/tracebank/",
1753
- ".omg/evals/",
1754
- ".omg/lineage/",
1755
- )
1756
- has_artifact_refs = any(token in content for token in artifact_refs)
1757
-
1758
- blockers: list[str] = []
1759
- if hardcoded_counts and not has_artifact_refs:
1760
- blockers.append("prose_only_proof: hardcoded proof counts without machine artifact references")
1761
-
1762
- return {
1763
- "status": "ok" if not blockers else "error",
1764
- "path": str(proof_path.relative_to(root)),
1765
- "hardcoded_counts": hardcoded_counts,
1766
- "has_artifact_refs": has_artifact_refs,
1767
- "blockers": blockers,
1768
- }
1769
-
1770
-
1771
- def _is_loopback_hostname(hostname: str) -> bool:
1772
- lowered = hostname.strip().lower()
1773
- return lowered in {"localhost", "127.0.0.1", "::1"}
1774
-
1775
-
1776
- def _collect_http_urls(line: str) -> list[str]:
1777
- return re.findall(r"https?://[^\s)\]>'\"]+", line)
1778
-
1779
-
1780
- def _check_same_machine_scope(root: Path, output_root: Path) -> dict[str, Any]:
1781
- blockers: list[str] = []
1782
- scanned: list[str] = []
1783
-
1784
- for rel_path in ("README.md", "docs/proof.md", "OMG_COMPAT_CONTRACT.md"):
1785
- path = root / rel_path
1786
- if not path.exists():
1787
- continue
1788
- scanned.append(rel_path)
1789
- for line in path.read_text(encoding="utf-8").splitlines():
1790
- if "production" not in line.lower():
1791
- continue
1792
- for url in _collect_http_urls(line):
1793
- parsed = urlparse(url)
1794
- if parsed.scheme != "http":
1795
- continue
1796
- host = parsed.hostname or ""
1797
- if host and not _is_loopback_hostname(host):
1798
- blockers.append(
1799
- f"same_machine_scope_violation: {rel_path} claims production over non-loopback HTTP ({url})"
1800
- )
1801
-
1802
- mcp_path = output_root / ".mcp.json"
1803
- if mcp_path.exists():
1804
- scanned.append(str(mcp_path.relative_to(output_root)))
1805
- mcp_payload = _load_json(mcp_path)
1806
- servers = mcp_payload.get("mcpServers", {})
1807
- if isinstance(servers, dict):
1808
- for server_name, server_cfg in servers.items():
1809
- if not isinstance(server_cfg, dict):
1810
- continue
1811
- for key in ("url", "httpUrl"):
1812
- raw_url = str(server_cfg.get(key, "")).strip()
1813
- if not raw_url:
1814
- continue
1815
- parsed = urlparse(raw_url)
1816
- if parsed.scheme != "http":
1817
- continue
1818
- host = parsed.hostname or ""
1819
- if host and not _is_loopback_hostname(host):
1820
- blockers.append(
1821
- "same_machine_scope_violation: "
1822
- f".mcp.json server '{server_name}' uses non-loopback HTTP endpoint ({raw_url})"
1823
- )
1824
-
1825
- return {
1826
- "status": "ok" if not blockers else "error",
1827
- "scanned": scanned,
1828
- "blockers": blockers,
1829
- }
1830
-
1831
-
1832
- def _check_provider_host_parity(output_root: Path, providers: dict[str, dict[str, Any]]) -> dict[str, Any]:
1833
- blockers: list[str] = []
1834
- required_for_provider = {
1835
- "claude": (
1836
- output_root / "settings.json",
1837
- output_root / ".claude-plugin" / "plugin.json",
1838
- ),
1839
- "codex": (
1840
- output_root / ".agents" / "skills" / "omg" / "AGENTS.fragment.md",
1841
- output_root / ".agents" / "skills" / "omg" / "codex-mcp.toml",
1842
- ),
1843
- "gemini": (
1844
- output_root / ".gemini" / "settings.json",
1845
- ),
1846
- "kimi": (
1847
- output_root / ".kimi" / "mcp.json",
1848
- ),
1849
- }
1850
- for provider, status in providers.items():
1851
- if not status.get("ready"):
1852
- continue
1853
- for required_path in required_for_provider.get(provider, ()):
1854
- if not required_path.exists():
1855
- blockers.append(
1856
- "provider_host_parity: "
1857
- f"provider '{provider}' ready but host artifact missing {required_path.relative_to(output_root)}"
1858
- )
1859
- return {
1860
- "status": "ok" if not blockers else "error",
1861
- "blockers": blockers,
1862
- }
1863
-
1864
-
1865
- def _check_host_semantic_parity(
1866
- output_root: Path,
1867
- required_hosts: set[str],
1868
- release_run_id: str = "",
1869
- ) -> dict[str, Any]:
1870
- evidence_dir = output_root / ".omg" / "evidence"
1871
- parity_files = sorted(evidence_dir.glob("host-parity-*.json")) if evidence_dir.exists() else []
1872
- report_path = parity_files[-1] if parity_files else None
1873
- require_report_env = os.environ.get("OMG_REQUIRE_HOST_PARITY_REPORT", "").strip().lower() in {
1874
- "1",
1875
- "true",
1876
- "yes",
1877
- "on",
1878
- }
1879
- canonical_required_hosts = {
1880
- host
1881
- for host in required_hosts
1882
- if host in RELEASE_BLOCKING_HOSTS
1883
- }
1884
- require_report = require_report_env or bool(canonical_required_hosts)
1885
-
1886
- if report_path is None:
1887
- return {
1888
- "status": "error" if require_report else "missing",
1889
- "report": None,
1890
- "blockers": ["host_semantic_parity: missing host parity report"] if require_report else [],
1891
- }
1892
-
1893
- try:
1894
- report = _load_json(report_path)
1895
- except Exception as exc:
1896
- return {
1897
- "status": "error",
1898
- "report": str(report_path.relative_to(output_root)),
1899
- "blockers": [f"host_semantic_parity: failed to parse report ({exc})"],
1900
- }
1901
-
1902
- canonical_hosts = {
1903
- str(host).strip().lower()
1904
- for host in report.get("canonical_hosts", [])
1905
- if str(host).strip()
1906
- }
1907
- missing_hosts = sorted(host for host in canonical_required_hosts if host not in canonical_hosts)
1908
- overall_status = str(report.get("overall_status", "")).strip().lower()
1909
- parity_results = report.get("parity_results", {})
1910
- passed = bool(parity_results.get("passed")) if isinstance(parity_results, dict) else False
1911
-
1912
- blockers: list[str] = []
1913
- report_run_id = str(report.get("run_id", "")).strip()
1914
- if release_run_id and report_run_id and report_run_id != release_run_id:
1915
- blockers.append("host_parity_report:cross_run")
1916
- if missing_hosts:
1917
- blockers.append(f"host_semantic_parity: report missing canonical hosts {missing_hosts}")
1918
- if overall_status and overall_status != "ok":
1919
- blockers.append(f"host_semantic_parity: report overall_status={overall_status}")
1920
- if isinstance(parity_results, dict) and not passed:
1921
- blockers.append("host_semantic_parity: parity check reported drift")
1922
-
1923
- return {
1924
- "status": "ok" if not blockers else "error",
1925
- "report": str(report_path.relative_to(output_root)),
1926
- "required_hosts": sorted(canonical_required_hosts),
1927
- "blockers": blockers,
1928
- }
1929
-
1930
-
1931
- def _has_waiver(risk: dict[str, Any]) -> bool:
1932
- return bool(
1933
- risk.get("waived")
1934
- or risk.get("waiver")
1935
- or risk.get("waiver_id")
1936
- or risk.get("waiver_evidence")
1937
- )
1938
-
1939
-
1940
- def _check_high_risk_security_waivers(payload: dict[str, Any]) -> list[str]:
1941
- blockers: list[str] = []
1942
- unresolved = payload.get("unresolved_risks", [])
1943
- if isinstance(unresolved, list):
1944
- for item in unresolved:
1945
- if isinstance(item, dict):
1946
- severity = str(item.get("severity") or item.get("risk_level") or "").lower()
1947
- if severity in {"high", "critical"} and not _has_waiver(item):
1948
- blockers.append("security_blocker_unwaived: unresolved high-risk item without waiver evidence")
1949
- break
1950
- elif isinstance(item, str):
1951
- lowered = item.lower()
1952
- is_high = "high" in lowered or "critical" in lowered
1953
- waived = "waiv" in lowered
1954
- if is_high and not waived:
1955
- blockers.append("security_blocker_unwaived: unresolved high-risk item without waiver evidence")
1956
- break
1957
-
1958
- scans = payload.get("security_scans", [])
1959
- if isinstance(scans, list):
1960
- for scan in scans:
1961
- if not isinstance(scan, dict):
1962
- continue
1963
- findings = scan.get("findings", [])
1964
- if not isinstance(findings, list):
1965
- continue
1966
- for finding in findings:
1967
- if not isinstance(finding, dict):
1968
- continue
1969
- severity = str(finding.get("severity", "")).lower()
1970
- if severity in {"high", "critical"} and not _has_waiver(finding):
1971
- blockers.append("security_blocker_unwaived: high-risk security finding without waiver evidence")
1972
- return blockers
1973
- return blockers
1974
-
1975
-
1976
- def build_release_readiness(
1977
- *,
1978
- root_dir: str | Path | None = None,
1979
- output_root: str | Path | None = None,
1980
- channel: str = "dual",
1981
- ) -> dict[str, Any]:
1982
- root = _resolve_root(root_dir)
1983
- output = _resolve_output_root(root, output_root)
1984
- blockers: list[str] = []
1985
- checks: dict[str, Any] = {}
1986
- provider_override = {
1987
- item.strip().lower()
1988
- for item in os.environ.get("OMG_RELEASE_READY_PROVIDERS", "").split(",")
1989
- if item.strip()
1990
- }
1991
- required_provider_hosts: set[str] = (
1992
- {host for host in provider_override if host in RELEASE_BLOCKING_HOSTS}
1993
- if provider_override
1994
- else set(RELEASE_BLOCKING_HOSTS)
1995
- )
1996
-
1997
- validation = validate_contract_registry(root)
1998
- checks["contract_validation"] = validation
1999
- if validation["status"] != "ok":
2000
- blockers.extend(validation["errors"])
2001
-
2002
- required_channels = ["public", "enterprise"] if channel == "dual" else [channel]
2003
- for required_channel in required_channels:
2004
- dist_root = output / "dist" / required_channel
2005
- manifest_path = dist_root / "manifest.json"
2006
- if not manifest_path.exists():
2007
- blockers.append(f"missing compiled manifest: dist/{required_channel}/manifest.json")
2008
- continue
2009
- manifest = _load_json(manifest_path)
2010
- manifest_errors: list[str] = []
2011
- for artifact in manifest.get("artifacts", []):
2012
- if not isinstance(artifact, dict):
2013
- continue
2014
- rel_path = str(artifact.get("path", ""))
2015
- expected_sha = str(artifact.get("sha256", ""))
2016
- artifact_path = dist_root / rel_path
2017
- if not artifact_path.exists():
2018
- manifest_errors.append(f"{required_channel}: missing bundled artifact {rel_path}")
2019
- continue
2020
- if _sha256_file(artifact_path) != expected_sha:
2021
- manifest_errors.append(f"{required_channel}: sha mismatch for {rel_path}")
2022
- manifest_paths = {str(a.get("path", "")) for a in manifest.get("artifacts", []) if isinstance(a, dict)}
2023
- declared_hosts = [str(host).strip().lower() for host in manifest.get("hosts", []) if str(host).strip()]
2024
- if not declared_hosts:
2025
- declared_hosts = get_canonical_hosts()
2026
- missing_required_hosts = sorted(host for host in required_provider_hosts if host not in declared_hosts)
2027
- if missing_required_hosts:
2028
- manifest_errors.append(
2029
- f"{required_channel}: canonical_host_compile_parity_missing {missing_required_hosts}"
2030
- )
2031
- required_provider_hosts.update(declared_hosts)
2032
- for host_name in declared_hosts:
2033
- for host_path in HOST_COMPILED_ARTIFACTS.get(host_name, ()):
2034
- bundled_host_path = f"bundle/{host_path}"
2035
- if bundled_host_path not in manifest_paths:
2036
- manifest_errors.append(
2037
- f"{required_channel}: host_parity_missing {host_name} {bundled_host_path}"
2038
- )
2039
- for req_path in _get_required_advanced_plugin_artifacts(root):
2040
- if req_path not in manifest_paths:
2041
- manifest_errors.append(f"{required_channel}: advanced_plugin_missing {req_path}")
2042
- if manifest_errors:
2043
- blockers.extend(manifest_errors)
2044
- manifest["integrity_errors"] = manifest_errors
2045
- checks[f"dist_{required_channel}"] = manifest
2046
-
2047
- required_outputs = [
2048
- output / host_artifact
2049
- for host_name in RELEASE_BLOCKING_HOSTS
2050
- for host_artifact in HOST_COMPILED_ARTIFACTS.get(host_name, ())
2051
- ]
2052
- required_outputs.extend(
2053
- [
2054
- output / ".agents" / "skills" / "omg" / "control-plane" / "SKILL.md",
2055
- output / ".agents" / "skills" / "omg" / "control-plane" / "openai.yaml",
2056
- ]
2057
- )
2058
- missing_outputs = [str(path.relative_to(output)) for path in required_outputs if not path.exists()]
2059
- if missing_outputs:
2060
- blockers.append(f"missing compiled outputs: {', '.join(missing_outputs)}")
2061
- checks["compiled_outputs"] = {"missing": missing_outputs}
2062
-
2063
- required_bundle_outputs: list[Path] = []
2064
- for bundle_id in DEFAULT_REQUIRED_BUNDLES:
2065
- required_bundle_outputs.extend(
2066
- [
2067
- output / ".agents" / "skills" / "omg" / bundle_id / "SKILL.md",
2068
- output / ".agents" / "skills" / "omg" / bundle_id / "openai.yaml",
2069
- ]
2070
- )
2071
- missing_bundle_outputs = [str(path.relative_to(output)) for path in required_bundle_outputs if not path.exists()]
2072
- if missing_bundle_outputs:
2073
- blockers.append(f"missing bundle outputs: {', '.join(missing_bundle_outputs)}")
2074
- checks["bundle_outputs"] = {"missing": missing_bundle_outputs}
2075
-
2076
- evidence_check = _check_recent_evidence(output)
2077
- checks["evidence"] = evidence_check
2078
- blockers.extend(evidence_check.get("blockers", []))
2079
-
2080
- doctor_check = _check_doctor_output(output)
2081
- checks["doctor"] = doctor_check
2082
- blockers.extend(doctor_check.get("blockers", []))
2083
-
2084
- eval_check = _check_eval_gate(output)
2085
- checks["eval_gate"] = eval_check
2086
- blockers.extend(eval_check.get("blockers", []))
2087
-
2088
- proof_chain_check = _check_proof_chain(output)
2089
- checks["proof_chain"] = proof_chain_check
2090
- blockers.extend(proof_chain_check.get("blockers", []))
2091
-
2092
- execution_primitives = _check_execution_primitives(output_root=output, evidence_profile="release")
2093
- checks["execution_primitives"] = execution_primitives
2094
- blockers.extend(execution_primitives.get("blockers", []))
2095
-
2096
- claim_judge_compliance = _check_claim_judge_compliance(output)
2097
- checks["claim_judge_compliance"] = claim_judge_compliance
2098
- blockers.extend(claim_judge_compliance.get("blockers", []))
2099
-
2100
- security_blockers = [
2101
- blocker
2102
- for blocker in evidence_check.get("blockers", [])
2103
- if isinstance(blocker, str) and blocker.startswith("security_blocker_unwaived:")
2104
- ]
2105
- checks["security_blocker_unwaived"] = {
2106
- "status": "ok" if not security_blockers else "error",
2107
- "blockers": security_blockers,
2108
- }
2109
-
2110
- proof_surface_check = _check_proof_surface(root)
2111
- checks["proof_surface"] = proof_surface_check
2112
- blockers.extend(proof_surface_check.get("blockers", []))
2113
-
2114
- same_machine_scope = _check_same_machine_scope(root, output)
2115
- checks["same_machine_scope"] = same_machine_scope
2116
- blockers.extend(same_machine_scope.get("blockers", []))
2117
-
2118
- package_check = _check_packaged_install_smoke(root)
2119
- checks["package_smoke"] = package_check
2120
- blockers.extend(package_check.get("blockers", []))
2121
-
2122
- plugin_cmd_check = _check_plugin_command_paths(root)
2123
- checks["plugin_command_paths"] = plugin_cmd_check
2124
- blockers.extend(plugin_cmd_check.get("blockers", []))
2125
-
2126
- version_drift_check = _check_version_identity_drift(root)
2127
- checks["version_identity_drift"] = version_drift_check
2128
- blockers.extend(version_drift_check.get("blockers", []))
2129
-
2130
- if channel == "dual":
2131
- bundle_promotion_parity = _check_bundle_promotion_parity(root, output)
2132
- checks["bundle_promotion_parity"] = bundle_promotion_parity
2133
- blockers.extend(bundle_promotion_parity.get("blockers", []))
2134
-
2135
- providers = _provider_statuses()
2136
- checks["providers"] = providers
2137
- for provider_name, status in providers.items():
2138
- if provider_name not in required_provider_hosts:
2139
- continue
2140
- if not status.get("ready"):
2141
- blockers.append(f"provider not ready: {provider_name}")
2142
-
2143
- required_providers = {
2144
- provider_name: status
2145
- for provider_name, status in providers.items()
2146
- if provider_name in required_provider_hosts
2147
- }
2148
- provider_parity = _check_provider_host_parity(output, required_providers)
2149
- checks["provider_host_parity"] = provider_parity
2150
- blockers.extend(provider_parity.get("blockers", []))
2151
-
2152
- host_semantic_parity = _check_host_semantic_parity(
2153
- output,
2154
- required_provider_hosts,
2155
- release_run_id=str(evidence_check.get("run_id", "")).strip(),
2156
- )
2157
- checks["host_semantic_parity"] = host_semantic_parity
2158
- blockers.extend(host_semantic_parity.get("blockers", []))
2159
-
2160
- worktree_ready = shutil.which("git") is not None and (root / ".git").exists()
2161
- checks["worktree"] = {"ready": worktree_ready}
2162
- if not worktree_ready:
2163
- blockers.append("git worktree support not available")
2164
-
2165
- mcp_status = _check_mcp_fabric()
2166
- checks["mcp_fabric"] = mcp_status
2167
- if not mcp_status.get("ready"):
2168
- blockers.append("mcp fabric incomplete")
2169
-
2170
- return {
2171
- "schema": "OmgReleaseReadinessResult",
2172
- "status": "ok" if not blockers else "error",
2173
- "channel": channel,
2174
- "blockers": blockers,
2175
- "checks": checks,
2176
- }
2177
-
2178
-
2179
- def _check_recent_evidence(output_root: Path) -> dict[str, Any]:
2180
- latest = _latest_evidence_pack(output_root)
2181
- if latest is None:
2182
- return {"status": "missing", "blockers": []}
2183
-
2184
- evidence_path, payload = latest
2185
- blockers: list[str] = []
2186
- if not payload.get("security_scans"):
2187
- blockers.append("cosmetic evidence: security_scans is empty")
2188
- if not payload.get("provenance"):
2189
- blockers.append("cosmetic evidence: provenance is empty")
2190
- if not payload.get("timestamp") and not payload.get("created_at"):
2191
- blockers.append("missing_attribution: evidence missing timestamp")
2192
- if not payload.get("executor"):
2193
- blockers.append("missing_attribution: evidence missing executor")
2194
- if not payload.get("environment"):
2195
- blockers.append("missing_attribution: evidence missing environment")
2196
- if not payload.get("trace_ids"):
2197
- blockers.append("missing trace ids in evidence")
2198
- if not payload.get("trace_id") and not payload.get("trace_ids"):
2199
- blockers.append("missing trace_id in evidence")
2200
- if not payload.get("lineage"):
2201
- blockers.append("missing lineage in evidence")
2202
- tests = payload.get("tests", [])
2203
- if isinstance(tests, list):
2204
- for item in tests:
2205
- if isinstance(item, dict) and item.get("name") == "worker_implementation" and not item.get("passed", False):
2206
- blockers.append("simulated worker evidence detected")
2207
- break
2208
- blockers.extend(_check_test_intent_claims(payload))
2209
- blockers.extend(_check_high_risk_security_waivers(payload))
2210
- return {
2211
- "status": "ok" if not blockers else "error",
2212
- "evidence_file": str(evidence_path.relative_to(output_root)),
2213
- "run_id": str(payload.get("run_id", "")).strip(),
2214
- "blockers": blockers,
2215
- }
2216
-
2217
-
2218
- def _latest_evidence_pack(output_root: Path) -> tuple[Path, dict[str, Any]] | None:
2219
- evidence_dir = output_root / ".omg" / "evidence"
2220
- if not evidence_dir.exists():
2221
- return None
2222
-
2223
- evidence_files = sorted(path for path in evidence_dir.glob("*.json") if path.is_file())
2224
- evidence_payloads: list[tuple[Path, dict[str, Any]]] = []
2225
- for path in evidence_files:
2226
- try:
2227
- payload = _load_json(path)
2228
- except Exception:
2229
- continue
2230
- if payload.get("schema") != "EvidencePack":
2231
- continue
2232
- try:
2233
- payload = _normalize_evidence_pack(payload)
2234
- except ValueError as exc:
2235
- return path, {"schema": "EvidencePack", "invalid": f"invalid evidence pack: {exc}"}
2236
- evidence_payloads.append((path, payload))
2237
-
2238
- if not evidence_payloads:
2239
- return None
2240
- return evidence_payloads[-1]
2241
-
2242
-
2243
- def _required_fields_for_module(module: str) -> list[str]:
2244
- metadata = schema_versions().get(module, {})
2245
- required = metadata.get("required_fields", []) if isinstance(metadata, dict) else []
2246
- if isinstance(required, list):
2247
- return [str(field) for field in required if str(field).strip()]
2248
- return []
2249
-
2250
-
2251
- def _missing_context_metadata(payload: dict[str, Any]) -> list[str]:
2252
- missing: list[str] = []
2253
- for key in _REQUIRED_CONTEXT_METADATA:
2254
- value = str(payload.get(key, "")).strip()
2255
- if not value:
2256
- missing.append(key)
2257
- return missing
2258
-
2259
-
2260
- def _env_truthy(name: str) -> bool:
2261
- return os.environ.get(name, "").strip().lower() in {"1", "true", "yes", "on"}
2262
-
2263
-
2264
- def _execution_primitive_max_age_seconds() -> float:
2265
- raw = str(os.environ.get("OMG_EXECUTION_PRIMITIVE_MAX_AGE_SECONDS", "")).strip()
2266
- if not raw:
2267
- return _DEFAULT_EXECUTION_PRIMITIVE_MAX_AGE_SECONDS
2268
- try:
2269
- value = float(raw)
2270
- except ValueError:
2271
- return _DEFAULT_EXECUTION_PRIMITIVE_MAX_AGE_SECONDS
2272
- return value if value >= 0 else _DEFAULT_EXECUTION_PRIMITIVE_MAX_AGE_SECONDS
2273
-
2274
-
2275
- def _as_non_empty_list(value: Any) -> list[Any]:
2276
- if not isinstance(value, list):
2277
- return []
2278
- items: list[Any] = []
2279
- for item in value:
2280
- if isinstance(item, str) and not item.strip():
2281
- continue
2282
- if item in ({}, []):
2283
- continue
2284
- items.append(item)
2285
- return items
2286
-
2287
-
2288
- def _normalize_exclusion_token(value: Any) -> str:
2289
- if isinstance(value, str):
2290
- return value.strip()
2291
- if isinstance(value, dict):
2292
- for field in ("id", "test", "name", "reason"):
2293
- token = str(value.get(field, "")).strip()
2294
- if token:
2295
- return token
2296
- return json.dumps(value, sort_keys=True, ensure_ascii=True)
2297
- return str(value).strip()
2298
-
2299
-
2300
- def _extract_signed_statement(payload: dict[str, Any]) -> dict[str, Any] | None:
2301
- if "_type" in payload and "subject" in payload and "predicateType" in payload:
2302
- return payload
2303
- for key in ("attestation_statement", "statement", "attestation"):
2304
- candidate = payload.get(key)
2305
- if isinstance(candidate, dict):
2306
- return candidate
2307
- return None
2308
-
2309
-
2310
- def _resolve_relative_path(*, output_root: Path, rel_path: str) -> Path | None:
2311
- candidate = Path(rel_path)
2312
- if not rel_path or candidate.is_absolute():
2313
- return None
2314
- resolved = (output_root / candidate).resolve()
2315
- root = output_root.resolve()
2316
- try:
2317
- resolved.relative_to(root)
2318
- except ValueError:
2319
- return None
2320
- return resolved
2321
-
2322
-
2323
- def _load_json_or_none(path: Path) -> dict[str, Any] | None:
2324
- try:
2325
- payload = _load_json(path)
2326
- except Exception:
2327
- return None
2328
- return payload if isinstance(payload, dict) else None
2329
-
2330
-
2331
- def _jsonl_has_run_id(path: Path, run_id: str) -> bool:
2332
- try:
2333
- lines = path.read_text(encoding="utf-8").splitlines()
2334
- except OSError:
2335
- return False
2336
- for line in lines:
2337
- if not line.strip():
2338
- continue
2339
- try:
2340
- payload = json.loads(line)
2341
- except json.JSONDecodeError:
2342
- continue
2343
- if isinstance(payload, dict) and str(payload.get("run_id", "")).strip() == run_id:
2344
- return True
2345
- return False
2346
-
2347
-
2348
- def _is_stale_execution_primitive(path: Path, *, evidence_mtime: float, max_age_seconds: float) -> bool:
2349
- try:
2350
- primitive_mtime = path.stat().st_mtime
2351
- except OSError:
2352
- return False
2353
- return (evidence_mtime - primitive_mtime) > max_age_seconds
2354
-
2355
-
2356
- def _check_excluded_failures_waiver(
2357
- *,
2358
- output_root: Path,
2359
- evidence_payload: dict[str, Any],
2360
- run_id: str,
2361
- ) -> dict[str, Any]:
2362
- excluded_failures = _as_non_empty_list(evidence_payload.get("excluded_failures"))
2363
- blockers: list[str] = []
2364
- waiver_path = str(evidence_payload.get("excluded_failures_waiver_path", "")).strip()
2365
- if not waiver_path:
2366
- waiver = evidence_payload.get("excluded_failures_waiver")
2367
- if isinstance(waiver, dict):
2368
- waiver_path = str(waiver.get("path", "")).strip()
2369
-
2370
- if not excluded_failures:
2371
- return {
2372
- "status": "ok",
2373
- "excluded_failures": [],
2374
- "waiver_path": waiver_path,
2375
- "blockers": [],
2376
- }
2377
-
2378
- if not waiver_path:
2379
- blockers.append("excluded_failures_without_signed_waiver: missing waiver artifact path")
2380
- return {
2381
- "status": "error",
2382
- "excluded_failures": excluded_failures,
2383
- "waiver_path": waiver_path,
2384
- "blockers": blockers,
2385
- }
2386
-
2387
- resolved_path = _resolve_relative_path(output_root=output_root, rel_path=waiver_path)
2388
- if resolved_path is None:
2389
- blockers.append("excluded_failures_without_signed_waiver: waiver path outside output root")
2390
- return {
2391
- "status": "error",
2392
- "excluded_failures": excluded_failures,
2393
- "waiver_path": waiver_path,
2394
- "blockers": blockers,
2395
- }
2396
-
2397
- waiver_payload = _load_json_or_none(resolved_path)
2398
- if not isinstance(waiver_payload, dict):
2399
- blockers.append("excluded_failures_without_signed_waiver: unreadable waiver artifact")
2400
- return {
2401
- "status": "error",
2402
- "excluded_failures": excluded_failures,
2403
- "waiver_path": waiver_path,
2404
- "blockers": blockers,
2405
- }
2406
-
2407
- statement = _extract_signed_statement(waiver_payload)
2408
- if not isinstance(statement, dict) or not verify_artifact_statement(statement):
2409
- blockers.append("excluded_failures_without_signed_waiver: invalid waiver signature")
2410
- return {
2411
- "status": "error",
2412
- "excluded_failures": excluded_failures,
2413
- "waiver_path": waiver_path,
2414
- "blockers": blockers,
2415
- }
2416
-
2417
- waiver_run_id = str(waiver_payload.get("run_id", "")).strip()
2418
- if run_id and waiver_run_id and waiver_run_id != run_id:
2419
- blockers.append("excluded_failures_without_signed_waiver: waiver run_id mismatch")
2420
-
2421
- authorized_failures = _as_non_empty_list(waiver_payload.get("excluded_failures"))
2422
- if not authorized_failures:
2423
- blockers.append("excluded_failures_without_signed_waiver: waiver missing excluded_failures list")
2424
- else:
2425
- required_tokens = {_normalize_exclusion_token(item) for item in excluded_failures}
2426
- authorized_tokens = {_normalize_exclusion_token(item) for item in authorized_failures}
2427
- if not required_tokens.issubset(authorized_tokens):
2428
- blockers.append("excluded_failures_without_signed_waiver: waiver does not authorize all exclusions")
2429
-
2430
- return {
2431
- "status": "ok" if not blockers else "error",
2432
- "excluded_failures": excluded_failures,
2433
- "waiver_path": waiver_path,
2434
- "blockers": blockers,
2435
- }
2436
-
2437
-
2438
- def _check_execution_primitives(*, output_root: Path, evidence_profile: str | None = None) -> dict[str, Any]:
2439
- blockers: list[str] = []
2440
- missing: list[str] = []
2441
- invalid: list[str] = []
2442
- evidence_paths: dict[str, str] = {key: "" for key in _REQUIRED_EXECUTION_PRIMITIVES}
2443
- require_exec_kernel_evidence = _env_truthy("OMG_REQUIRE_EXEC_KERNEL_EVIDENCE")
2444
- require_governed_tool_evidence = _env_truthy("OMG_REQUIRE_GOVERNED_TOOL_EVIDENCE")
2445
- excluded_failures_policy: dict[str, Any] = {
2446
- "status": "ok",
2447
- "excluded_failures": [],
2448
- "waiver_path": "",
2449
- "blockers": [],
2450
- }
2451
- resolved_profile = (evidence_profile or "").strip()
2452
- required_evidence_requirements = requirements_for_profile(resolved_profile)
2453
- active_run_id = get_active_coordinator_run_id(str(output_root)) or ""
2454
-
2455
- latest = _latest_evidence_pack(output_root)
2456
- if latest is None:
2457
- missing.extend(list(_REQUIRED_EXECUTION_PRIMITIVES))
2458
- blockers.extend(f"missing_execution_primitive: {item}" for item in missing)
2459
- return {
2460
- "status": "error",
2461
- "run_id": "",
2462
- "evidence_profile": resolved_profile,
2463
- "required_evidence_requirements": list(required_evidence_requirements),
2464
- "require_exec_kernel_evidence": require_exec_kernel_evidence,
2465
- "require_governed_tool_evidence": require_governed_tool_evidence,
2466
- "required": list(_REQUIRED_EXECUTION_PRIMITIVES),
2467
- "missing": missing,
2468
- "invalid": invalid,
2469
- "evidence_paths": evidence_paths,
2470
- "blockers": blockers,
2471
- }
2472
-
2473
- evidence_path, evidence_payload = latest
2474
- invalid_evidence = str(evidence_payload.get("invalid", "")).strip()
2475
- if invalid_evidence:
2476
- invalid.append(f"release_evidence_pack:{invalid_evidence}")
2477
- blockers.append(f"invalid_execution_primitive: release_evidence_pack: {invalid_evidence}")
2478
- return {
2479
- "status": "error",
2480
- "run_id": "",
2481
- "evidence_profile": resolved_profile,
2482
- "required_evidence_requirements": list(required_evidence_requirements),
2483
- "require_exec_kernel_evidence": require_exec_kernel_evidence,
2484
- "require_governed_tool_evidence": require_governed_tool_evidence,
2485
- "required": list(_REQUIRED_EXECUTION_PRIMITIVES),
2486
- "missing": list(_REQUIRED_EXECUTION_PRIMITIVES),
2487
- "invalid": invalid,
2488
- "evidence_paths": evidence_paths,
2489
- "blockers": blockers,
2490
- }
2491
-
2492
- if not resolved_profile:
2493
- resolved_profile = str(evidence_payload.get("evidence_profile", "")).strip()
2494
- required_evidence_requirements = requirements_for_profile(resolved_profile)
2495
-
2496
- try:
2497
- evidence_mtime = evidence_path.stat().st_mtime
2498
- except OSError:
2499
- evidence_mtime = datetime.now(timezone.utc).timestamp()
2500
- max_age_seconds = _execution_primitive_max_age_seconds()
2501
-
2502
- run_id = str(evidence_payload.get("run_id", "")).strip()
2503
- if not run_id:
2504
- invalid.append("run_id_unresolved")
2505
- blockers.append("invalid_execution_primitive: run_id_unresolved")
2506
- if active_run_id and run_id and run_id != active_run_id:
2507
- invalid.append("run_id_cross_run")
2508
- blockers.append("execution_primitive:cross_run")
2509
-
2510
- evidence_metadata_missing = _missing_context_metadata(evidence_payload)
2511
- if evidence_metadata_missing:
2512
- invalid.append("release_evidence_pack:missing_context_metadata")
2513
- blockers.append(
2514
- "invalid_execution_primitive: release_evidence_pack: "
2515
- f"missing_context_metadata={','.join(sorted(evidence_metadata_missing))}"
2516
- )
2517
-
2518
- excluded_failures_policy = _check_excluded_failures_waiver(
2519
- output_root=output_root,
2520
- evidence_payload=evidence_payload,
2521
- run_id=run_id,
2522
- )
2523
- if excluded_failures_policy.get("status") != "ok":
2524
- invalid.append("excluded_failures:missing_signed_waiver")
2525
- blockers.extend(
2526
- item
2527
- for item in excluded_failures_policy.get("blockers", [])
2528
- if isinstance(item, str)
2529
- )
2530
-
2531
- checks: list[tuple[str, str, str]] = [
2532
- ("release_run_coordinator_state", "release_run_coordinator", "ReleaseRunCoordinatorState"),
2533
- ("rollback_manifest", "rollback_manifest", "RollbackManifest"),
2534
- ("intent_gate_state", "intent_gate", "IntentGateDecision"),
2535
- ("session_health_state", "session_health", "SessionHealth"),
2536
- ("council_verdicts", "council_verdicts", "CouncilVerdicts"),
2537
- ]
2538
- resolved_state_payloads: dict[str, dict[str, Any]] = {}
2539
- for token, module, schema_name in checks:
2540
- matched_path, matched_payload = _find_state_for_run(output_root=output_root, module=module, run_id=run_id)
2541
- if matched_path is None or matched_payload is None:
2542
- missing.append(token)
2543
- blockers.append(f"missing_execution_primitive: {token}")
2544
- continue
2545
- evidence_paths[token] = str(matched_path.relative_to(output_root)).replace("\\", "/")
2546
- resolved_state_payloads[token] = matched_payload
2547
- payload_run_id = str(matched_payload.get("run_id", "")).strip()
2548
- if run_id and payload_run_id and payload_run_id != run_id:
2549
- invalid.append(f"{token}:cross_run")
2550
- blockers.append(f"cross_run_execution_primitive: {token}")
2551
- schema = str(matched_payload.get("schema", "")).strip()
2552
- if schema != schema_name:
2553
- invalid.append(f"{token}:schema_mismatch")
2554
- blockers.append(f"invalid_execution_primitive: {token}: schema_mismatch")
2555
- continue
2556
- required_fields = _required_fields_for_module(module)
2557
- missing_fields = [field for field in required_fields if field not in matched_payload]
2558
- if missing_fields:
2559
- invalid.append(f"{token}:missing_fields")
2560
- blockers.append(
2561
- f"invalid_execution_primitive: {token}: missing_fields={','.join(sorted(missing_fields))}"
2562
- )
2563
- if token in {"intent_gate_state", "session_health_state", "council_verdicts"}:
2564
- metadata_missing = _missing_context_metadata(matched_payload)
2565
- if metadata_missing:
2566
- invalid.append(f"{token}:missing_context_metadata")
2567
- blockers.append(
2568
- f"invalid_execution_primitive: {token}: "
2569
- f"missing_context_metadata={','.join(sorted(metadata_missing))}"
2570
- )
2571
- if _is_stale_execution_primitive(
2572
- matched_path,
2573
- evidence_mtime=evidence_mtime,
2574
- max_age_seconds=max_age_seconds,
2575
- ):
2576
- invalid.append(f"{token}:stale")
2577
- blockers.append(f"stale_execution_primitive: {token}")
2578
-
2579
- claims_payload = evidence_payload.get("claims")
2580
- claims = claims_payload if isinstance(claims_payload, list) else []
2581
- if not claims or not run_id:
2582
- missing.append("claim_judge_outcome")
2583
- blockers.append("missing_execution_primitive: claim_judge_outcome")
2584
- else:
2585
- release_evidence: dict[str, object] = {"run_id": run_id, "claims": claims}
2586
- artifact = evidence_payload.get("artifact")
2587
- if isinstance(artifact, dict):
2588
- release_evidence["artifact"] = artifact
2589
- compliance = evaluate_release_compliance(
2590
- project_dir=str(output_root),
2591
- run_id=run_id,
2592
- release_evidence=release_evidence,
2593
- )
2594
- claim_dir = output_root / ".omg" / "evidence"
2595
- claim_candidates = sorted(claim_dir.glob("claim-judge-*.json")) if claim_dir.exists() else []
2596
- if claim_candidates:
2597
- claim_path = claim_candidates[-1]
2598
- evidence_paths["claim_judge_outcome"] = str(claim_path.relative_to(output_root)).replace("\\", "/")
2599
- else:
2600
- missing.append("claim_judge_outcome")
2601
- blockers.append("missing_execution_primitive: claim_judge_outcome")
2602
- if str(compliance.get("status", "")).strip().lower() == "blocked":
2603
- invalid.append("claim_judge_outcome:blocked")
2604
- reason = str(compliance.get("reason", "claim_judge_blocked")).strip()
2605
- blockers.append(f"invalid_execution_primitive: claim_judge_outcome: {reason}")
2606
-
2607
- release_state = resolved_state_payloads.get("release_run_coordinator_state", {})
2608
- if not release_state:
2609
- missing.append("compliance_governor_outcome")
2610
- blockers.append("missing_execution_primitive: compliance_governor_outcome")
2611
- else:
2612
- evidence_paths["compliance_governor_outcome"] = evidence_paths.get("release_run_coordinator_state", "")
2613
- authority = str(release_state.get("compliance_authority", "")).strip()
2614
- reason = str(release_state.get("compliance_reason", "")).strip()
2615
- if not authority or not reason:
2616
- invalid.append("compliance_governor_outcome:missing_fields")
2617
- blockers.append("invalid_execution_primitive: compliance_governor_outcome: missing_fields")
2618
- artifact_verdict = str(release_state.get("artifact_verdict", "")).strip()
2619
- if artifact_verdict:
2620
- artifact_alg = str(release_state.get("artifact_alg", "")).strip()
2621
- artifact_key_id = str(release_state.get("artifact_key_id", "")).strip()
2622
- if not artifact_alg or not artifact_key_id:
2623
- invalid.append("compliance_governor_outcome:missing_artifact_audit")
2624
- blockers.append(
2625
- "invalid_execution_primitive: compliance_governor_outcome: missing_artifact_audit_fields"
2626
- )
2627
-
2628
- profile_path = output_root / ".omg" / "state" / "profile.yaml"
2629
- if not profile_path.exists():
2630
- missing.append("profile_digest")
2631
- blockers.append("missing_execution_primitive: profile_digest")
2632
- else:
2633
- evidence_paths["profile_digest"] = str(profile_path.relative_to(output_root)).replace("\\", "/")
2634
- try:
2635
- profile_payload = yaml.safe_load(profile_path.read_text(encoding="utf-8"))
2636
- except Exception:
2637
- profile_payload = None
2638
- profile_version = ""
2639
- if isinstance(profile_payload, dict):
2640
- profile_version = str(
2641
- profile_payload.get("profile_version")
2642
- or profile_payload.get("version")
2643
- or ""
2644
- ).strip()
2645
- if not profile_version:
2646
- provenance = profile_payload.get("profile_provenance")
2647
- if isinstance(provenance, dict):
2648
- profile_version = str(
2649
- provenance.get("checksum")
2650
- or provenance.get("version")
2651
- or ""
2652
- ).strip()
2653
- if not profile_version:
2654
- invalid.append("profile_digest:missing_profile_version")
2655
- blockers.append("invalid_execution_primitive: profile_digest: missing_profile_version")
2656
-
2657
- lock_path, lock_payload = _find_test_intent_lock(output_root=output_root, run_id=run_id, evidence_payload=evidence_payload)
2658
- if lock_path is None or lock_payload is None:
2659
- missing.append("tdd_proof_chain_lock")
2660
- blockers.append("missing_execution_primitive: tdd_proof_chain_lock")
2661
- else:
2662
- evidence_paths["tdd_proof_chain_lock"] = str(lock_path.relative_to(output_root)).replace("\\", "/")
2663
- lock_run_id = str(lock_payload.get("run_id", "")).strip()
2664
- if run_id and lock_run_id and lock_run_id != run_id:
2665
- invalid.append("tdd_proof_chain_lock:cross_run")
2666
- blockers.append("cross_run_execution_primitive: tdd_proof_chain_lock")
2667
- lock_status = str(lock_payload.get("status", "")).strip().lower()
2668
- if lock_status in {"", "error", "blocked"}:
2669
- invalid.append("tdd_proof_chain_lock:status_invalid")
2670
- blockers.append("invalid_execution_primitive: tdd_proof_chain_lock: status_invalid")
2671
- if _is_stale_execution_primitive(
2672
- lock_path,
2673
- evidence_mtime=evidence_mtime,
2674
- max_age_seconds=max_age_seconds,
2675
- ):
2676
- invalid.append("tdd_proof_chain_lock:stale")
2677
- blockers.append("stale_execution_primitive: tdd_proof_chain_lock")
2678
-
2679
- forge_path, forge_payload = _find_forge_starter_proof(output_root=output_root, run_id=run_id)
2680
- if forge_path is None or forge_payload is None:
2681
- missing.append("forge_starter_proof")
2682
- blockers.append("missing_execution_primitive: forge_starter_proof")
2683
- else:
2684
- evidence_paths["forge_starter_proof"] = str(forge_path.relative_to(output_root)).replace("\\", "/")
2685
- forge_run_id = str(forge_payload.get("run_id", "")).strip()
2686
- if run_id and forge_run_id and forge_run_id != run_id:
2687
- invalid.append("forge_starter_proof:cross_run")
2688
- blockers.append("cross_run_execution_primitive: forge_starter_proof")
2689
- forge_schema = str(forge_payload.get("schema", "")).strip()
2690
- if forge_schema != "ForgeSpecialistDispatchEvidence":
2691
- invalid.append("forge_starter_proof:schema_mismatch")
2692
- blockers.append("invalid_execution_primitive: forge_starter_proof: schema_mismatch")
2693
- if forge_payload.get("proof_backed") is not True:
2694
- invalid.append("forge_starter_proof:not_proof_backed")
2695
- blockers.append("invalid_execution_primitive: forge_starter_proof: proof_backed_false")
2696
- forge_metadata_missing = _missing_context_metadata(forge_payload)
2697
- if forge_metadata_missing:
2698
- invalid.append("forge_starter_proof:missing_context_metadata")
2699
- blockers.append(
2700
- "invalid_execution_primitive: forge_starter_proof: "
2701
- f"missing_context_metadata={','.join(sorted(forge_metadata_missing))}"
2702
- )
2703
- if _is_stale_execution_primitive(
2704
- forge_path,
2705
- evidence_mtime=evidence_mtime,
2706
- max_age_seconds=max_age_seconds,
2707
- ):
2708
- invalid.append("forge_starter_proof:stale")
2709
- blockers.append("stale_execution_primitive: forge_starter_proof")
2710
-
2711
- # ── Resolve evidence-pack-embedded primitives ──────────────────────────
2712
- # The evidence pack stores new execution primitives as nested dicts with
2713
- # a "path" key. Resolve each one against output_root.
2714
- _pack_embedded_primitives = (
2715
- "exec_kernel_state",
2716
- "worker_watchdog_replay",
2717
- "merge_writer_provenance",
2718
- "tool_fabric_ledger",
2719
- "budget_envelope_state",
2720
- "issue_report",
2721
- "host_parity_report",
2722
- "music_omr_testbed_evidence",
2723
- )
2724
- for token in _pack_embedded_primitives:
2725
- entry = evidence_payload.get(token)
2726
- if not isinstance(entry, dict):
2727
- missing.append(token)
2728
- blockers.append(f"missing_execution_primitive: {token}")
2729
- continue
2730
- entry_run_id = str(entry.get("run_id", "")).strip()
2731
- if run_id and entry_run_id and entry_run_id != run_id:
2732
- invalid.append(f"{token}:cross_run")
2733
- blockers.append(f"cross_run_execution_primitive: {token}")
2734
- rel_path = str(entry.get("path", "")).strip()
2735
- if not rel_path:
2736
- missing.append(token)
2737
- blockers.append(f"missing_execution_primitive: {token}")
2738
- continue
2739
- resolved = _resolve_relative_path(output_root=output_root, rel_path=rel_path)
2740
- if resolved is None:
2741
- invalid.append(f"{token}:invalid_path")
2742
- blockers.append(f"invalid_execution_primitive: {token}: invalid_path")
2743
- continue
2744
- if not resolved.exists():
2745
- missing.append(token)
2746
- blockers.append(f"missing_execution_primitive: {token}")
2747
- continue
2748
- normalized_rel_path = str(resolved.relative_to(output_root)).replace("\\", "/")
2749
- evidence_paths[token] = normalized_rel_path
2750
- if token == "tool_fabric_ledger":
2751
- if run_id and not _jsonl_has_run_id(resolved, run_id):
2752
- invalid.append(f"{token}:run_id_missing")
2753
- blockers.append(f"invalid_execution_primitive: {token}: run_id_missing")
2754
- else:
2755
- payload = _load_json_or_none(resolved)
2756
- if isinstance(payload, dict):
2757
- payload_run_id = str(payload.get("run_id", "")).strip()
2758
- if run_id and payload_run_id and payload_run_id != run_id:
2759
- invalid.append(f"{token}:cross_run")
2760
- blockers.append(f"cross_run_execution_primitive: {token}")
2761
- if token == "exec_kernel_state" and require_exec_kernel_evidence:
2762
- if str(payload.get("schema", "")).strip() != "ExecKernelRunState":
2763
- invalid.append("exec_kernel_state:schema_mismatch")
2764
- blockers.append("invalid_execution_primitive: exec_kernel_state: schema_mismatch")
2765
- if payload.get("kernel_enabled") is not True:
2766
- invalid.append("exec_kernel_state:kernel_disabled")
2767
- blockers.append("invalid_execution_primitive: exec_kernel_state: kernel_disabled")
2768
- elif token == "exec_kernel_state" and require_exec_kernel_evidence:
2769
- invalid.append("exec_kernel_state:unreadable")
2770
- blockers.append("invalid_execution_primitive: exec_kernel_state: unreadable")
2771
- if token == "tool_fabric_ledger" and require_governed_tool_evidence:
2772
- try:
2773
- ledger_size = resolved.stat().st_size
2774
- except OSError:
2775
- ledger_size = 0
2776
- if ledger_size <= 0:
2777
- invalid.append("tool_fabric_ledger:empty")
2778
- blockers.append("invalid_execution_primitive: tool_fabric_ledger: empty")
2779
- if _is_stale_execution_primitive(
2780
- resolved,
2781
- evidence_mtime=evidence_mtime,
2782
- max_age_seconds=max_age_seconds,
2783
- ):
2784
- invalid.append(f"{token}:stale")
2785
- blockers.append(f"stale_execution_primitive: {token}")
2786
-
2787
- return {
2788
- "status": "ok" if not blockers else "error",
2789
- "run_id": run_id,
2790
- "evidence_profile": resolved_profile,
2791
- "required_evidence_requirements": list(required_evidence_requirements),
2792
- "require_exec_kernel_evidence": require_exec_kernel_evidence,
2793
- "require_governed_tool_evidence": require_governed_tool_evidence,
2794
- "evidence_pack": str(evidence_path.relative_to(output_root)).replace("\\", "/"),
2795
- "required": list(_REQUIRED_EXECUTION_PRIMITIVES),
2796
- "missing": sorted(set(missing)),
2797
- "invalid": sorted(set(invalid)),
2798
- "evidence_paths": evidence_paths,
2799
- "blockers": blockers,
2800
- }
2801
-
2802
-
2803
- def _find_state_for_run(
2804
- *,
2805
- output_root: Path,
2806
- module: str,
2807
- run_id: str,
2808
- ) -> tuple[Path | None, dict[str, Any] | None]:
2809
- state_dir = output_root / ".omg" / "state" / module
2810
- if not state_dir.exists():
2811
- return None, None
2812
-
2813
- preferred = state_dir / f"{run_id}.json"
2814
- if run_id and preferred.exists():
2815
- try:
2816
- payload = _load_json(preferred)
2817
- except Exception:
2818
- payload = {}
2819
- if isinstance(payload, dict):
2820
- return preferred, payload
2821
-
2822
- for path in sorted(state_dir.glob("*.json")):
2823
- try:
2824
- payload = _load_json(path)
2825
- except Exception:
2826
- continue
2827
- if not isinstance(payload, dict):
2828
- continue
2829
- if run_id and str(payload.get("run_id", "")).strip() != run_id:
2830
- continue
2831
- return path, payload
2832
- return None, None
2833
-
2834
-
2835
- def _find_test_intent_lock(
2836
- *,
2837
- output_root: Path,
2838
- run_id: str,
2839
- evidence_payload: dict[str, Any],
2840
- ) -> tuple[Path | None, dict[str, Any] | None]:
2841
- lock_dir = output_root / ".omg" / "state" / "test-intent-lock"
2842
- if not lock_dir.exists():
2843
- return None, None
2844
-
2845
- lock_id = ""
2846
- test_delta = evidence_payload.get("test_delta")
2847
- if isinstance(test_delta, dict):
2848
- lock_id = str(test_delta.get("lock_id", "")).strip()
2849
-
2850
- for path in sorted(lock_dir.glob("*.json")):
2851
- try:
2852
- payload = _load_json(path)
2853
- except Exception:
2854
- continue
2855
- if not isinstance(payload, dict):
2856
- continue
2857
- payload_lock_id = str(payload.get("lock_id", "")).strip()
2858
- if lock_id and payload_lock_id == lock_id:
2859
- return path, payload
2860
- intent = payload.get("intent")
2861
- if isinstance(intent, dict):
2862
- intent_run = str(intent.get("run_id", "")).strip()
2863
- if run_id and intent_run == run_id:
2864
- return path, payload
2865
- payload_run = str(payload.get("run_id", "")).strip()
2866
- if run_id and payload_run == run_id:
2867
- return path, payload
2868
- return None, None
2869
-
2870
-
2871
- def _find_forge_starter_proof(*, output_root: Path, run_id: str) -> tuple[Path | None, dict[str, Any] | None]:
2872
- evidence_dir = output_root / ".omg" / "evidence"
2873
- if not evidence_dir.exists():
2874
- return None, None
2875
- for path in sorted(evidence_dir.glob("forge-specialists-*.json")):
2876
- try:
2877
- payload = _load_json(path)
2878
- except Exception:
2879
- continue
2880
- if not isinstance(payload, dict):
2881
- continue
2882
- payload_run = str(payload.get("run_id", "")).strip()
2883
- if run_id and payload_run and payload_run != run_id:
2884
- continue
2885
- return path, payload
2886
- return None, None
2887
-
2888
-
2889
- def _sanitize_run_id(value: str) -> str:
2890
- cleaned = "".join(ch if ch.isalnum() or ch in {"-", "_", "."} else "-" for ch in value.strip())
2891
- return cleaned or "unknown"
2892
-
2893
-
2894
- def _check_claim_judge_compliance(output_root: Path) -> dict[str, Any]:
2895
- latest = _latest_evidence_pack(output_root)
2896
- if latest is None:
2897
- return {"status": "missing", "blockers": []}
2898
-
2899
- _, evidence_payload = latest
2900
- run_id = str(evidence_payload.get("run_id", "")).strip()
2901
- claims_payload = evidence_payload.get("claims")
2902
- claims = claims_payload if isinstance(claims_payload, list) else []
2903
- if not run_id or not claims:
2904
- return {
2905
- "status": "missing",
2906
- "run_id": run_id,
2907
- "blockers": ["claim_judge_compliance_gate: missing release claims for compliance evaluation"],
2908
- }
2909
-
2910
- release_evidence: dict[str, object] = {"run_id": run_id, "claims": claims}
2911
- artifact = evidence_payload.get("artifact")
2912
- if isinstance(artifact, dict):
2913
- release_evidence["artifact"] = artifact
2914
- decision = evaluate_release_compliance(
2915
- project_dir=str(output_root),
2916
- run_id=run_id,
2917
- release_evidence=release_evidence,
2918
- )
2919
- decision_status = str(decision.get("status", "")).strip().lower()
2920
- blockers: list[str] = []
2921
- if decision_status == "blocked":
2922
- reason = str(decision.get("reason", "compliance_gate_blocked")).strip() or "compliance_gate_blocked"
2923
- blockers.append(f"claim_judge_compliance_gate: {reason}")
2924
- return {
2925
- "status": "ok" if not blockers else "error",
2926
- "run_id": run_id,
2927
- "decision": decision,
2928
- "blockers": blockers,
2929
- }
2930
-
2931
-
2932
- def _check_test_intent_claims(payload: dict[str, Any]) -> list[str]:
2933
- test_delta = payload.get("test_delta")
2934
- claims = payload.get("claims", [])
2935
- if not isinstance(claims, list):
2936
- return []
2937
-
2938
- from runtime.test_intent_lock import evaluate_test_delta
2939
-
2940
- blockers: list[str] = []
2941
- guarded_claims = {"tests passed", "tests_passed", "bug fixed", "bug_fixed"}
2942
- for claim in claims:
2943
- if not isinstance(claim, dict):
2944
- continue
2945
- claim_type = str(claim.get("claim_type", "")).strip().lower()
2946
- if claim_type not in guarded_claims:
2947
- continue
2948
- delta = claim.get("test_delta")
2949
- if not isinstance(delta, dict):
2950
- delta = test_delta if isinstance(test_delta, dict) else None
2951
- if not isinstance(delta, dict):
2952
- blockers.append(f"test_intent_lock_missing_delta: claim '{claim_type}' requires test_delta evidence")
2953
- continue
2954
- result = evaluate_test_delta(delta)
2955
- if result.get("verdict") != "pass":
2956
- reasons = result.get("reasons", [])
2957
- reason_text = "; ".join(str(item) for item in reasons if str(item).strip())
2958
- suffix = f": {reason_text}" if reason_text else ""
2959
- blockers.append(f"test_intent_lock_blocked: claim '{claim_type}'{suffix}")
2960
- return blockers
2961
-
2962
-
2963
- def _check_eval_gate(output_root: Path) -> dict[str, Any]:
2964
- latest_path = output_root / ".omg" / "evals" / "latest.json"
2965
- if not latest_path.exists():
2966
- return {"status": "missing", "blockers": []}
2967
- payload = _load_json(latest_path)
2968
- blockers: list[str] = []
2969
- if payload.get("status") != "ok" or bool(payload.get("summary", {}).get("regressed")):
2970
- blockers.append("eval regression detected")
2971
- return {
2972
- "status": "ok" if not blockers else "error",
2973
- "path": str(latest_path.relative_to(output_root)),
2974
- "blockers": blockers,
2975
- }
2976
-
2977
-
2978
- def _check_proof_chain(output_root: Path) -> dict[str, Any]:
2979
- chain_module = importlib.import_module("runtime.proof_chain")
2980
- gate_module = importlib.import_module("runtime.proof_gate")
2981
-
2982
- gate_input = chain_module.build_proof_gate_input(str(output_root))
2983
- chain = gate_input.get("proof_chain", {}) if isinstance(gate_input, dict) else {}
2984
- chain_status = str(chain.get("status", "error"))
2985
- raw_blockers = chain.get("blockers", [])
2986
- blockers = [f"proof_chain_linkage: {item}" for item in raw_blockers] if isinstance(raw_blockers, list) else ["proof_chain_linkage: invalid blockers"]
2987
- if chain_status == "ok":
2988
- blockers = []
2989
-
2990
- proof_gate = gate_module.evaluate_proof_gate(gate_input if isinstance(gate_input, dict) else {})
2991
- if str(proof_gate.get("verdict", "fail")) != "pass":
2992
- gate_blockers = proof_gate.get("blockers", [])
2993
- if isinstance(gate_blockers, list) and gate_blockers:
2994
- blockers.extend(f"proof_gate_blocked: {item}" for item in gate_blockers)
2995
- else:
2996
- blockers.append("proof_gate_blocked: verdict_fail")
2997
-
2998
- return {
2999
- "status": "ok" if not blockers else "error",
3000
- "proof_chain": chain,
3001
- "proof_gate": proof_gate,
3002
- "blockers": blockers,
3003
- }
3004
-
3005
-
3006
- def _check_bundle_promotion_parity(root: Path, output_root: Path) -> dict[str, Any]:
3007
- missing_settings_required_bundles: list[str] = []
3008
- missing_dist_public: list[str] = []
3009
- missing_dist_enterprise: list[str] = []
3010
- missing_pyproject_data_files: list[str] = []
3011
-
3012
- settings_path = output_root / "settings.json"
3013
- if settings_path.exists():
3014
- settings = _load_json(settings_path)
3015
- required_bundles = settings.get("_omg", {}).get("generated", {}).get("required_bundles", [])
3016
- if not isinstance(required_bundles, list):
3017
- required_bundles = []
3018
- required_bundle_set = {str(item) for item in required_bundles}
3019
- missing_settings_required_bundles = [
3020
- bundle_id for bundle_id in TRUTH_COUNCIL_BUNDLES if bundle_id not in required_bundle_set
3021
- ]
3022
- else:
3023
- missing_settings_required_bundles = list(TRUTH_COUNCIL_BUNDLES)
3024
-
3025
- for bundle_id in TRUTH_COUNCIL_BUNDLES:
3026
- public_skill = output_root / "dist" / "public" / "bundle" / ".agents" / "skills" / "omg" / bundle_id / "SKILL.md"
3027
- if not public_skill.exists():
3028
- missing_dist_public.append(str(public_skill.relative_to(output_root)))
3029
-
3030
- enterprise_skill = output_root / "dist" / "enterprise" / "bundle" / ".agents" / "skills" / "omg" / bundle_id / "SKILL.md"
3031
- if not enterprise_skill.exists():
3032
- missing_dist_enterprise.append(str(enterprise_skill.relative_to(output_root)))
3033
-
3034
- pyproject_path = root / "pyproject.toml"
3035
- if pyproject_path.exists():
3036
- pyproject_content = pyproject_path.read_text(encoding="utf-8")
3037
- for bundle_id in TRUTH_COUNCIL_BUNDLES:
3038
- data_file_key = f'".agents/skills/omg/{bundle_id}" = '
3039
- if data_file_key not in pyproject_content:
3040
- missing_pyproject_data_files.append(bundle_id)
3041
- else:
3042
- missing_pyproject_data_files = list(TRUTH_COUNCIL_BUNDLES)
3043
-
3044
- failed = any(
3045
- (
3046
- missing_settings_required_bundles,
3047
- missing_dist_public,
3048
- missing_dist_enterprise,
3049
- missing_pyproject_data_files,
3050
- )
3051
- )
3052
- return {
3053
- "status": "ok" if not failed else "error",
3054
- "blockers": ["bundle_promotion_parity"] if failed else [],
3055
- "missing_settings_required_bundles": missing_settings_required_bundles,
3056
- "missing_dist_public": missing_dist_public,
3057
- "missing_dist_enterprise": missing_dist_enterprise,
3058
- "missing_pyproject_data_files": missing_pyproject_data_files,
3059
- }
3060
-
3061
-
3062
- def _check_packaged_install_smoke(root: Path) -> dict[str, Any]:
3063
- blockers: list[str] = []
3064
- with tempfile.TemporaryDirectory(prefix="omg-wheel-") as tmp_dir:
3065
- proc = subprocess.run(
3066
- [sys.executable, "-m", "pip", "wheel", ".", "--no-deps", "-w", tmp_dir],
3067
- cwd=str(root),
3068
- capture_output=True,
3069
- text=True,
3070
- check=False,
3071
- timeout=120,
3072
- )
3073
- if proc.returncode != 0:
3074
- return {
3075
- "status": "error",
3076
- "blockers": ["package smoke failed to build wheel"],
3077
- "stdout": proc.stdout,
3078
- "stderr": proc.stderr,
3079
- }
3080
- wheels = sorted(Path(tmp_dir).glob("*.whl"))
3081
- if not wheels:
3082
- return {"status": "error", "blockers": ["package smoke did not produce a wheel"]}
3083
- with zipfile.ZipFile(wheels[-1]) as archive:
3084
- names = set(archive.namelist())
3085
- required_suffixes = (
3086
- "control_plane/service.py",
3087
- "registry/verify_artifact.py",
3088
- "plugins/dephealth/cve_scanner.py",
3089
- "OMG_COMPAT_CONTRACT.md",
3090
- ".agents/skills/omg/security-check/SKILL.md",
3091
- ".agents/skills/omg/plan-council/SKILL.md",
3092
- ".agents/skills/omg/claim-judge/SKILL.md",
3093
- ".agents/skills/omg/test-intent-lock/SKILL.md",
3094
- ".agents/skills/omg/proof-gate/SKILL.md",
3095
- )
3096
- for suffix in required_suffixes:
3097
- if not any(name.endswith(suffix) for name in names):
3098
- blockers.append(f"package parity missing {suffix}")
3099
- return {"status": "ok" if not blockers else "error", "blockers": blockers}