@trac3er/oh-my-god 2.0.7 → 2.0.9
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.
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +1 -1
- package/.claude-plugin/scripts/uninstall.sh +1 -1
- package/.gemini/settings.json +11 -0
- package/.kimi/mcp.json +11 -0
- package/CHANGELOG.md +17 -0
- package/OMG-setup.sh +1 -1
- package/OMG_COMPAT_CONTRACT.md +14 -1
- package/README.md +2 -1
- package/artifacts/release/.agents/skills/omg/AGENTS.fragment.md +7 -1
- package/artifacts/release/.agents/skills/omg/claim-judge/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/claim-judge/openai.yaml +13 -0
- package/artifacts/release/.agents/skills/omg/codex-rules.md +4 -0
- package/artifacts/release/.agents/skills/omg/plan-council/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/plan-council/openai.yaml +12 -0
- package/artifacts/release/.agents/skills/omg/proof-gate/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/proof-gate/openai.yaml +13 -0
- package/artifacts/release/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
- package/artifacts/release/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
- package/artifacts/release/.claude-plugin/marketplace.json +3 -3
- package/artifacts/release/.claude-plugin/plugin.json +1 -1
- package/artifacts/release/.mcp.json +0 -22
- package/artifacts/release/OMG_COMPAT_CONTRACT.md +8 -1
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +7 -1
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/claim-judge/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/claim-judge/openai.yaml +13 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +4 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/plan-council/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/plan-council/openai.yaml +12 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/proof-gate/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/proof-gate/openai.yaml +13 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
- package/artifacts/release/dist/enterprise/bundle/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
- package/artifacts/release/dist/enterprise/bundle/.claude-plugin/marketplace.json +36 -0
- package/artifacts/release/dist/enterprise/bundle/.claude-plugin/plugin.json +23 -0
- package/artifacts/release/dist/enterprise/bundle/.mcp.json +18 -0
- package/artifacts/release/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +8 -1
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:deep-plan.md +266 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:learn.md +110 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/commands/OMG:ship.md +46 -0
- package/artifacts/release/dist/enterprise/bundle/plugins/advanced/plugin.json +87 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +49 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/plan-council.yaml +51 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +49 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +49 -0
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
- package/artifacts/release/dist/enterprise/bundle/registry/omg-capability.schema.json +1 -1
- package/artifacts/release/dist/enterprise/bundle/settings.json +598 -0
- package/artifacts/release/dist/enterprise/manifest.json +131 -23
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +55 -4
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/claim-judge/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/claim-judge/openai.yaml +13 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/codex-rules.md +33 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/plan-council/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/plan-council/openai.yaml +12 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/proof-gate/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/proof-gate/openai.yaml +13 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
- package/artifacts/release/dist/public/bundle/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
- package/artifacts/release/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
- package/artifacts/release/dist/public/bundle/.claude-plugin/plugin.json +1 -1
- package/artifacts/release/dist/public/bundle/.mcp.json +0 -22
- package/artifacts/release/dist/public/bundle/OMG_COMPAT_CONTRACT.md +8 -1
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:deep-plan.md +266 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:learn.md +110 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/commands/OMG:ship.md +46 -0
- package/artifacts/release/dist/public/bundle/plugins/advanced/plugin.json +87 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/claim-judge.yaml +49 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/health.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/plan-council.yaml +51 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/proof-gate.yaml +49 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/test-intent-lock.yaml +49 -0
- package/artifacts/release/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/bundles/vision.yaml +1 -1
- package/artifacts/release/dist/public/bundle/registry/omg-capability.schema.json +1 -1
- package/artifacts/release/dist/public/bundle/settings.json +76 -4
- package/artifacts/release/dist/public/manifest.json +122 -26
- package/artifacts/release/plugins/advanced/commands/OMG:code-review.md +114 -0
- package/artifacts/release/plugins/advanced/commands/OMG:deep-plan.md +266 -0
- package/artifacts/release/plugins/advanced/commands/OMG:handoff.md +115 -0
- package/artifacts/release/plugins/advanced/commands/OMG:learn.md +110 -0
- package/artifacts/release/plugins/advanced/commands/OMG:maintainer.md +31 -0
- package/artifacts/release/plugins/advanced/commands/OMG:ralph-start.md +43 -0
- package/artifacts/release/plugins/advanced/commands/OMG:ralph-stop.md +23 -0
- package/artifacts/release/plugins/advanced/commands/OMG:security-review.md +16 -0
- package/artifacts/release/plugins/advanced/commands/OMG:sequential-thinking.md +20 -0
- package/artifacts/release/plugins/advanced/commands/OMG:ship.md +46 -0
- package/artifacts/release/plugins/advanced/plugin.json +87 -0
- package/artifacts/release/registry/bundles/algorithms.yaml +1 -1
- package/artifacts/release/registry/bundles/api-twin.yaml +1 -1
- package/artifacts/release/registry/bundles/claim-judge.yaml +49 -0
- package/artifacts/release/registry/bundles/control-plane.yaml +1 -1
- package/artifacts/release/registry/bundles/data-lineage.yaml +1 -1
- package/artifacts/release/registry/bundles/delta-classifier.yaml +1 -1
- package/artifacts/release/registry/bundles/eval-gate.yaml +1 -1
- package/artifacts/release/registry/bundles/health.yaml +1 -1
- package/artifacts/release/registry/bundles/hook-governor.yaml +1 -1
- package/artifacts/release/registry/bundles/incident-replay.yaml +1 -1
- package/artifacts/release/registry/bundles/lsp-pack.yaml +1 -1
- package/artifacts/release/registry/bundles/mcp-fabric.yaml +1 -1
- package/artifacts/release/registry/bundles/plan-council.yaml +51 -0
- package/artifacts/release/registry/bundles/preflight.yaml +1 -1
- package/artifacts/release/registry/bundles/proof-gate.yaml +49 -0
- package/artifacts/release/registry/bundles/remote-supervisor.yaml +1 -1
- package/artifacts/release/registry/bundles/robotics.yaml +1 -1
- package/artifacts/release/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/artifacts/release/registry/bundles/security-check.yaml +1 -1
- package/artifacts/release/registry/bundles/test-intent-lock.yaml +49 -0
- package/artifacts/release/registry/bundles/tracebank.yaml +1 -1
- package/artifacts/release/registry/bundles/vision.yaml +1 -1
- package/artifacts/release/registry/omg-capability.schema.json +1 -1
- package/artifacts/release/settings.json +7 -3
- package/build/lib/commands/OMG:forge.md +92 -0
- package/build/lib/commands/OMG:mode.md +13 -13
- package/build/lib/commands/OMG:session-branch.md +17 -1
- package/build/lib/commands/OMG:session-fork.md +5 -1
- package/build/lib/commands/OMG:session-merge.md +5 -1
- package/build/lib/control_plane/openapi.yaml +1 -1
- package/build/lib/control_plane/server.py +4 -0
- package/build/lib/control_plane/service.py +55 -0
- package/build/lib/hooks/setup_wizard.py +21 -1
- package/build/lib/hooks/shadow_manager.py +25 -2
- package/build/lib/hooks/state_migration.py +3 -0
- package/build/lib/plugins/README.md +1 -1
- package/build/lib/plugins/advanced/commands/OMG:deep-plan.md +2 -1
- package/build/lib/plugins/advanced/plugin.json +1 -1
- package/build/lib/plugins/core/plugin.json +1 -1
- package/build/lib/plugins/dephealth/cve_scanner.py +91 -0
- package/build/lib/plugins/dephealth/vuln_analyzer.py +7 -0
- package/build/lib/registry/bundles/algorithms.yaml +1 -1
- package/build/lib/registry/bundles/api-twin.yaml +1 -1
- package/build/lib/registry/bundles/claim-judge.yaml +1 -1
- package/build/lib/registry/bundles/control-plane.yaml +1 -1
- package/build/lib/registry/bundles/data-lineage.yaml +1 -1
- package/build/lib/registry/bundles/delta-classifier.yaml +1 -1
- package/build/lib/registry/bundles/eval-gate.yaml +1 -1
- package/build/lib/registry/bundles/health.yaml +1 -1
- package/build/lib/registry/bundles/hook-governor.yaml +1 -1
- package/build/lib/registry/bundles/incident-replay.yaml +1 -1
- package/build/lib/registry/bundles/lsp-pack.yaml +1 -1
- package/build/lib/registry/bundles/mcp-fabric.yaml +1 -1
- package/build/lib/registry/bundles/plan-council.yaml +2 -2
- package/build/lib/registry/bundles/preflight.yaml +1 -1
- package/build/lib/registry/bundles/proof-gate.yaml +1 -1
- package/build/lib/registry/bundles/remote-supervisor.yaml +1 -1
- package/build/lib/registry/bundles/robotics.yaml +1 -1
- package/build/lib/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/build/lib/registry/bundles/security-check.yaml +1 -1
- package/build/lib/registry/bundles/test-intent-lock.yaml +1 -1
- package/build/lib/registry/bundles/tracebank.yaml +1 -1
- package/build/lib/registry/bundles/vision.yaml +1 -1
- package/build/lib/registry/omg-capability.schema.json +84 -2
- package/build/lib/runtime/adoption.py +13 -5
- package/build/lib/runtime/api_twin.py +4 -4
- package/build/lib/runtime/artifact_parsers.py +161 -0
- package/build/lib/runtime/background_verification.py +48 -0
- package/build/lib/runtime/claim_judge.py +184 -7
- package/build/lib/runtime/contract_compiler.py +189 -9
- package/build/lib/runtime/ecosystem.py +1 -1
- package/build/lib/runtime/evidence_query.py +203 -0
- package/build/lib/runtime/mcp_memory_server.py +1 -1
- package/build/lib/runtime/omg_compat_contract_snapshot.json +2 -2
- package/build/lib/runtime/omg_contract_snapshot.json +2 -2
- package/build/lib/runtime/omg_mcp_server.py +19 -0
- package/build/lib/runtime/playwright_adapter.py +39 -0
- package/build/lib/runtime/proof_chain.py +136 -8
- package/build/lib/runtime/proof_gate.py +102 -0
- package/build/lib/runtime/providers/gemini_provider.py +7 -0
- package/build/lib/runtime/providers/kimi_provider.py +7 -0
- package/build/lib/runtime/repro_pack.py +292 -0
- package/build/lib/runtime/runtime_profile.py +87 -15
- package/build/lib/runtime/security_check.py +86 -3
- package/build/lib/runtime/test_intent_lock.py +47 -0
- package/build/lib/runtime/tracebank.py +33 -3
- package/build/lib/runtime/verification_loop.py +73 -0
- package/commands/OMG:forge.md +92 -0
- package/commands/OMG:mode.md +13 -13
- package/commands/OMG:session-branch.md +17 -1
- package/commands/OMG:session-fork.md +5 -1
- package/commands/OMG:session-merge.md +5 -1
- package/control_plane/openapi.yaml +1 -1
- package/control_plane/server.py +4 -0
- package/control_plane/service.py +55 -0
- package/dist/enterprise/bundle/.agents/skills/omg/AGENTS.fragment.md +7 -1
- package/dist/enterprise/bundle/.agents/skills/omg/claim-judge/SKILL.md +11 -0
- package/dist/enterprise/bundle/.agents/skills/omg/claim-judge/openai.yaml +13 -0
- package/dist/enterprise/bundle/.agents/skills/omg/codex-rules.md +4 -0
- package/dist/enterprise/bundle/.agents/skills/omg/plan-council/SKILL.md +11 -0
- package/dist/enterprise/bundle/.agents/skills/omg/plan-council/openai.yaml +12 -0
- package/dist/enterprise/bundle/.agents/skills/omg/proof-gate/SKILL.md +11 -0
- package/dist/enterprise/bundle/.agents/skills/omg/proof-gate/openai.yaml +13 -0
- package/dist/enterprise/bundle/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
- package/dist/enterprise/bundle/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
- package/dist/enterprise/bundle/.claude-plugin/marketplace.json +3 -3
- package/dist/enterprise/bundle/.claude-plugin/plugin.json +1 -1
- package/dist/enterprise/bundle/.gemini/settings.json +11 -0
- package/dist/enterprise/bundle/.kimi/mcp.json +11 -0
- package/dist/enterprise/bundle/.mcp.json +0 -22
- package/dist/enterprise/bundle/OMG_COMPAT_CONTRACT.md +14 -1
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:deep-plan.md +51 -6
- package/dist/enterprise/bundle/plugins/advanced/commands/OMG:ship.md +1 -1
- package/dist/enterprise/bundle/plugins/advanced/plugin.json +1 -1
- package/dist/enterprise/bundle/registry/bundles/algorithms.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/api-twin.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/claim-judge.yaml +49 -0
- package/dist/enterprise/bundle/registry/bundles/control-plane.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/data-lineage.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/delta-classifier.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/eval-gate.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/health.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/hook-governor.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/incident-replay.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/lsp-pack.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/mcp-fabric.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/plan-council.yaml +51 -0
- package/dist/enterprise/bundle/registry/bundles/preflight.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/proof-gate.yaml +49 -0
- package/dist/enterprise/bundle/registry/bundles/remote-supervisor.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/robotics.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/security-check.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/test-intent-lock.yaml +49 -0
- package/dist/enterprise/bundle/registry/bundles/tracebank.yaml +1 -1
- package/dist/enterprise/bundle/registry/bundles/vision.yaml +1 -1
- package/dist/enterprise/bundle/registry/omg-capability.schema.json +84 -2
- package/dist/enterprise/bundle/settings.json +8 -3
- package/dist/enterprise/manifest.json +92 -30
- package/dist/public/bundle/.agents/skills/omg/AGENTS.fragment.md +7 -1
- package/dist/public/bundle/.agents/skills/omg/claim-judge/SKILL.md +11 -0
- package/dist/public/bundle/.agents/skills/omg/claim-judge/openai.yaml +13 -0
- package/dist/public/bundle/.agents/skills/omg/codex-rules.md +4 -0
- package/dist/public/bundle/.agents/skills/omg/incident-replay/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/incident-replay/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/lsp-pack/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/lsp-pack/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/mcp-fabric/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/mcp-fabric/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/plan-council/SKILL.md +11 -0
- package/dist/public/bundle/.agents/skills/omg/plan-council/openai.yaml +12 -0
- package/dist/public/bundle/.agents/skills/omg/preflight/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/preflight/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/proof-gate/SKILL.md +11 -0
- package/dist/public/bundle/.agents/skills/omg/proof-gate/openai.yaml +13 -0
- package/dist/public/bundle/.agents/skills/omg/remote-supervisor/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/remote-supervisor/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/robotics/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/robotics/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/security-check/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/security-check/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/test-intent-lock/SKILL.md +11 -0
- package/dist/public/bundle/.agents/skills/omg/test-intent-lock/openai.yaml +13 -0
- package/dist/public/bundle/.agents/skills/omg/tracebank/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/tracebank/openai.yaml +1 -1
- package/dist/public/bundle/.agents/skills/omg/vision/SKILL.md +1 -1
- package/dist/public/bundle/.agents/skills/omg/vision/openai.yaml +1 -1
- package/dist/public/bundle/.claude-plugin/marketplace.json +3 -3
- package/dist/public/bundle/.claude-plugin/plugin.json +1 -1
- package/dist/public/bundle/.gemini/settings.json +11 -0
- package/dist/public/bundle/.kimi/mcp.json +11 -0
- package/dist/public/bundle/.mcp.json +0 -22
- package/dist/public/bundle/OMG_COMPAT_CONTRACT.md +14 -1
- package/dist/public/bundle/plugins/advanced/commands/OMG:deep-plan.md +51 -6
- package/dist/public/bundle/plugins/advanced/commands/OMG:ship.md +1 -1
- package/dist/public/bundle/plugins/advanced/plugin.json +1 -1
- package/dist/public/bundle/registry/bundles/algorithms.yaml +1 -1
- package/dist/public/bundle/registry/bundles/api-twin.yaml +1 -1
- package/dist/public/bundle/registry/bundles/claim-judge.yaml +49 -0
- package/dist/public/bundle/registry/bundles/control-plane.yaml +1 -1
- package/dist/public/bundle/registry/bundles/data-lineage.yaml +1 -1
- package/dist/public/bundle/registry/bundles/delta-classifier.yaml +1 -1
- package/dist/public/bundle/registry/bundles/eval-gate.yaml +1 -1
- package/dist/public/bundle/registry/bundles/health.yaml +1 -1
- package/dist/public/bundle/registry/bundles/hook-governor.yaml +1 -1
- package/dist/public/bundle/registry/bundles/incident-replay.yaml +1 -1
- package/dist/public/bundle/registry/bundles/lsp-pack.yaml +1 -1
- package/dist/public/bundle/registry/bundles/mcp-fabric.yaml +1 -1
- package/dist/public/bundle/registry/bundles/plan-council.yaml +51 -0
- package/dist/public/bundle/registry/bundles/preflight.yaml +1 -1
- package/dist/public/bundle/registry/bundles/proof-gate.yaml +49 -0
- package/dist/public/bundle/registry/bundles/remote-supervisor.yaml +1 -1
- package/dist/public/bundle/registry/bundles/robotics.yaml +1 -1
- package/dist/public/bundle/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/dist/public/bundle/registry/bundles/security-check.yaml +1 -1
- package/dist/public/bundle/registry/bundles/test-intent-lock.yaml +49 -0
- package/dist/public/bundle/registry/bundles/tracebank.yaml +1 -1
- package/dist/public/bundle/registry/bundles/vision.yaml +1 -1
- package/dist/public/bundle/registry/omg-capability.schema.json +84 -2
- package/dist/public/bundle/settings.json +9 -4
- package/dist/public/manifest.json +112 -50
- package/docs/proof.md +7 -6
- package/hooks/setup_wizard.py +21 -1
- package/hooks/shadow_manager.py +25 -2
- package/hooks/state_migration.py +3 -0
- package/hud/omg-hud.mjs +66 -3
- package/package.json +1 -1
- package/plugins/README.md +1 -1
- package/plugins/advanced/commands/OMG:deep-plan.md +2 -1
- package/plugins/advanced/plugin.json +1 -1
- package/plugins/core/plugin.json +1 -1
- package/plugins/dephealth/cve_scanner.py +91 -0
- package/plugins/dephealth/vuln_analyzer.py +7 -0
- package/pyproject.toml +5 -1
- package/registry/bundles/algorithms.yaml +1 -1
- package/registry/bundles/api-twin.yaml +1 -1
- package/registry/bundles/claim-judge.yaml +1 -1
- package/registry/bundles/control-plane.yaml +1 -1
- package/registry/bundles/data-lineage.yaml +1 -1
- package/registry/bundles/delta-classifier.yaml +1 -1
- package/registry/bundles/eval-gate.yaml +1 -1
- package/registry/bundles/health.yaml +1 -1
- package/registry/bundles/hook-governor.yaml +1 -1
- package/registry/bundles/incident-replay.yaml +1 -1
- package/registry/bundles/lsp-pack.yaml +1 -1
- package/registry/bundles/mcp-fabric.yaml +1 -1
- package/registry/bundles/plan-council.yaml +2 -2
- package/registry/bundles/preflight.yaml +1 -1
- package/registry/bundles/proof-gate.yaml +1 -1
- package/registry/bundles/remote-supervisor.yaml +1 -1
- package/registry/bundles/robotics.yaml +1 -1
- package/registry/bundles/secure-worktree-pipeline.yaml +1 -1
- package/registry/bundles/security-check.yaml +1 -1
- package/registry/bundles/test-intent-lock.yaml +1 -1
- package/registry/bundles/tracebank.yaml +1 -1
- package/registry/bundles/vision.yaml +1 -1
- package/registry/omg-capability.schema.json +84 -2
- package/runtime/adoption.py +13 -5
- package/runtime/api_twin.py +4 -4
- package/runtime/artifact_parsers.py +161 -0
- package/runtime/background_verification.py +48 -0
- package/runtime/claim_judge.py +184 -7
- package/runtime/contract_compiler.py +189 -9
- package/runtime/ecosystem.py +1 -1
- package/runtime/evidence_query.py +203 -0
- package/runtime/mcp_memory_server.py +1 -1
- package/runtime/omg_compat_contract_snapshot.json +2 -2
- package/runtime/omg_contract_snapshot.json +2 -2
- package/runtime/omg_mcp_server.py +19 -0
- package/runtime/playwright_adapter.py +39 -0
- package/runtime/proof_chain.py +136 -8
- package/runtime/proof_gate.py +102 -0
- package/runtime/providers/gemini_provider.py +7 -0
- package/runtime/providers/kimi_provider.py +7 -0
- package/runtime/repro_pack.py +292 -0
- package/runtime/runtime_profile.py +87 -15
- package/runtime/security_check.py +86 -3
- package/runtime/test_intent_lock.py +47 -0
- package/runtime/tracebank.py +33 -3
- package/runtime/verification_loop.py +73 -0
- package/scripts/omg.py +31 -4
- package/settings.json +8 -3
- package/tools/python_sandbox.py +9 -6
- package/tools/session_snapshot.py +146 -40
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "OmgCompiledArtifactManifest",
|
|
3
3
|
"channel": "public",
|
|
4
|
-
"
|
|
4
|
+
"hosts": [
|
|
5
|
+
"claude",
|
|
6
|
+
"codex",
|
|
7
|
+
"gemini",
|
|
8
|
+
"kimi"
|
|
9
|
+
],
|
|
10
|
+
"contract_version": "2.0.8",
|
|
5
11
|
"artifacts": [
|
|
6
12
|
{
|
|
7
13
|
"path": "bundle/.agents/skills/omg/AGENTS.fragment.md",
|
|
8
|
-
"sha256": "
|
|
14
|
+
"sha256": "0c6b1b74a746cabe933321d27541836a5526acda02da1131616dcb09c56101bc"
|
|
9
15
|
},
|
|
10
16
|
{
|
|
11
17
|
"path": "bundle/.agents/skills/omg/algorithms/SKILL.md",
|
|
@@ -23,13 +29,21 @@
|
|
|
23
29
|
"path": "bundle/.agents/skills/omg/api-twin/openai.yaml",
|
|
24
30
|
"sha256": "8b711205c230c16695702b1eeeb426d844aa76a87c55f220298cdaf105ceee1d"
|
|
25
31
|
},
|
|
32
|
+
{
|
|
33
|
+
"path": "bundle/.agents/skills/omg/claim-judge/SKILL.md",
|
|
34
|
+
"sha256": "cc65993357813c41fb81502de8781743e84e529088da19dbf8735e0a22f8519c"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"path": "bundle/.agents/skills/omg/claim-judge/openai.yaml",
|
|
38
|
+
"sha256": "b64dc801159a6e9adcd704326122f64c1bad7f71d87f22ada47918f7527151cc"
|
|
39
|
+
},
|
|
26
40
|
{
|
|
27
41
|
"path": "bundle/.agents/skills/omg/codex-mcp.toml",
|
|
28
42
|
"sha256": "a56de208a369a2b318d2e66e150eef4cba1fac1ecf32bda6db1a1e4b65db7311"
|
|
29
43
|
},
|
|
30
44
|
{
|
|
31
45
|
"path": "bundle/.agents/skills/omg/codex-rules.md",
|
|
32
|
-
"sha256": "
|
|
46
|
+
"sha256": "939b128a1904e0d8b2b21208a308b558bcd51bd6c0de32e60e59d6744821e9d0"
|
|
33
47
|
},
|
|
34
48
|
{
|
|
35
49
|
"path": "bundle/.agents/skills/omg/control-plane/SKILL.md",
|
|
@@ -81,99 +95,131 @@
|
|
|
81
95
|
},
|
|
82
96
|
{
|
|
83
97
|
"path": "bundle/.agents/skills/omg/incident-replay/SKILL.md",
|
|
84
|
-
"sha256": "
|
|
98
|
+
"sha256": "017df90e8fccb74e128b5075526ef1b2ad159673dd9f5de49750ceeb08ebe8c5"
|
|
85
99
|
},
|
|
86
100
|
{
|
|
87
101
|
"path": "bundle/.agents/skills/omg/incident-replay/openai.yaml",
|
|
88
|
-
"sha256": "
|
|
102
|
+
"sha256": "f4ec374aef096a7806d6e099185dd891e84b8a73db8059970ef398434e867ff4"
|
|
89
103
|
},
|
|
90
104
|
{
|
|
91
105
|
"path": "bundle/.agents/skills/omg/lsp-pack/SKILL.md",
|
|
92
|
-
"sha256": "
|
|
106
|
+
"sha256": "d5c6773fa614fe6747f205283a82374b2167d1d9b32e7fd75f429072fadb8a3a"
|
|
93
107
|
},
|
|
94
108
|
{
|
|
95
109
|
"path": "bundle/.agents/skills/omg/lsp-pack/openai.yaml",
|
|
96
|
-
"sha256": "
|
|
110
|
+
"sha256": "6e99216f7b228e300a16ac3cbe4ae4fcbba6082b622387e6087b76a6cb76d3dc"
|
|
97
111
|
},
|
|
98
112
|
{
|
|
99
113
|
"path": "bundle/.agents/skills/omg/mcp-fabric/SKILL.md",
|
|
100
|
-
"sha256": "
|
|
114
|
+
"sha256": "fc17847f79397dba144ddbb40a8ad3207494c3a7f0b2dde1dc55dce2e5b117a9"
|
|
101
115
|
},
|
|
102
116
|
{
|
|
103
117
|
"path": "bundle/.agents/skills/omg/mcp-fabric/openai.yaml",
|
|
104
|
-
"sha256": "
|
|
118
|
+
"sha256": "2165ff298b110ef7fb6c42b6b539f8397b8772218de3fa2b8c2332fdd8db6d48"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"path": "bundle/.agents/skills/omg/plan-council/SKILL.md",
|
|
122
|
+
"sha256": "f6fa96029e14e71b2d89c84f4312a68e25528b584ecf871c1cf3779e944ba0fc"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"path": "bundle/.agents/skills/omg/plan-council/openai.yaml",
|
|
126
|
+
"sha256": "3afa688f970eb964620431b9638f7d290700f878add7ae999442df9c4dbb4f67"
|
|
105
127
|
},
|
|
106
128
|
{
|
|
107
129
|
"path": "bundle/.agents/skills/omg/preflight/SKILL.md",
|
|
108
|
-
"sha256": "
|
|
130
|
+
"sha256": "f9876277a0b836a3bcbe6e8b140368a85447658820974e09bec2fb1795fb0307"
|
|
109
131
|
},
|
|
110
132
|
{
|
|
111
133
|
"path": "bundle/.agents/skills/omg/preflight/openai.yaml",
|
|
112
|
-
"sha256": "
|
|
134
|
+
"sha256": "97945c1a557703c41b53c68797ab9b5a38f8d69e1a9af45ed427bee7e37f589c"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"path": "bundle/.agents/skills/omg/proof-gate/SKILL.md",
|
|
138
|
+
"sha256": "c421002fb132dcad1f02f69dca7f10e36e7d66e15c3a79b2531193eaea88253b"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"path": "bundle/.agents/skills/omg/proof-gate/openai.yaml",
|
|
142
|
+
"sha256": "b38d5daf13301e7428565cd95a2af42d4ff3368d3394814fe11b50ee673e9ee6"
|
|
113
143
|
},
|
|
114
144
|
{
|
|
115
145
|
"path": "bundle/.agents/skills/omg/remote-supervisor/SKILL.md",
|
|
116
|
-
"sha256": "
|
|
146
|
+
"sha256": "05be2c248fc0eee2a3db70c0ddeba32b25881b3cc914ce16b719292add77b0c3"
|
|
117
147
|
},
|
|
118
148
|
{
|
|
119
149
|
"path": "bundle/.agents/skills/omg/remote-supervisor/openai.yaml",
|
|
120
|
-
"sha256": "
|
|
150
|
+
"sha256": "e7f8a7c1f099c76d0aafc95b535e10a1c07e591a5db09a67ecccedc0ebd68c26"
|
|
121
151
|
},
|
|
122
152
|
{
|
|
123
153
|
"path": "bundle/.agents/skills/omg/robotics/SKILL.md",
|
|
124
|
-
"sha256": "
|
|
154
|
+
"sha256": "1a54e7292d39aaced9f296bcdc65cc86b41dfa41d95f063582e1dc249ffb48c5"
|
|
125
155
|
},
|
|
126
156
|
{
|
|
127
157
|
"path": "bundle/.agents/skills/omg/robotics/openai.yaml",
|
|
128
|
-
"sha256": "
|
|
158
|
+
"sha256": "8d6b6539867cb4080c4502d3325f9f32954290ace6bbc2bb20e9acbf619b61a5"
|
|
129
159
|
},
|
|
130
160
|
{
|
|
131
161
|
"path": "bundle/.agents/skills/omg/secure-worktree-pipeline/SKILL.md",
|
|
132
|
-
"sha256": "
|
|
162
|
+
"sha256": "a11292d0122844f7c185e21943d3a39ef3213cf5348f40f006c8fdc8b62f252f"
|
|
133
163
|
},
|
|
134
164
|
{
|
|
135
165
|
"path": "bundle/.agents/skills/omg/secure-worktree-pipeline/openai.yaml",
|
|
136
|
-
"sha256": "
|
|
166
|
+
"sha256": "c766a383969893fd29fcd1da712e29e0422709a7b9f665e53e1ca8187c2bd207"
|
|
137
167
|
},
|
|
138
168
|
{
|
|
139
169
|
"path": "bundle/.agents/skills/omg/security-check/SKILL.md",
|
|
140
|
-
"sha256": "
|
|
170
|
+
"sha256": "30cc33d0b6c3d7d4c968f917121bcea3d696be80c3896da2635a63a01c4afa91"
|
|
141
171
|
},
|
|
142
172
|
{
|
|
143
173
|
"path": "bundle/.agents/skills/omg/security-check/openai.yaml",
|
|
144
|
-
"sha256": "
|
|
174
|
+
"sha256": "9c47e9fa2ddcb341fa75d4307c5e36e0b928b06fdb28bd7b69ca6cb5941f6b77"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"path": "bundle/.agents/skills/omg/test-intent-lock/SKILL.md",
|
|
178
|
+
"sha256": "98eca9c53d5228dddd218c29914aab8af5d94eb4ad19ed54e9947af4e53f959c"
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"path": "bundle/.agents/skills/omg/test-intent-lock/openai.yaml",
|
|
182
|
+
"sha256": "62934b4eef9e0bd516d7db4864cf178e8367d47c7b5a5f9f883427c633e416fa"
|
|
145
183
|
},
|
|
146
184
|
{
|
|
147
185
|
"path": "bundle/.agents/skills/omg/tracebank/SKILL.md",
|
|
148
|
-
"sha256": "
|
|
186
|
+
"sha256": "5bac45273cd62373fb4387f8e64a63c4fb69f984a44ee79938be2273b5913b03"
|
|
149
187
|
},
|
|
150
188
|
{
|
|
151
189
|
"path": "bundle/.agents/skills/omg/tracebank/openai.yaml",
|
|
152
|
-
"sha256": "
|
|
190
|
+
"sha256": "5896ef1980b5a13171756eb27f317d3b32b7d084133552f1d11dfea12d8742ab"
|
|
153
191
|
},
|
|
154
192
|
{
|
|
155
193
|
"path": "bundle/.agents/skills/omg/vision/SKILL.md",
|
|
156
|
-
"sha256": "
|
|
194
|
+
"sha256": "9cd5405640edc6e80a8110234f59f6aeb197ececa37a145619d30083ee2263d4"
|
|
157
195
|
},
|
|
158
196
|
{
|
|
159
197
|
"path": "bundle/.agents/skills/omg/vision/openai.yaml",
|
|
160
|
-
"sha256": "
|
|
198
|
+
"sha256": "8a6f4e40c91ffff3686af47f6902043cf090df7afc530b052f1344efe9cc8e0a"
|
|
161
199
|
},
|
|
162
200
|
{
|
|
163
201
|
"path": "bundle/.claude-plugin/marketplace.json",
|
|
164
|
-
"sha256": "
|
|
202
|
+
"sha256": "06549b994609245c5f13d6053f9049acce862c7a949f8ec63ce057b13206c0c4"
|
|
165
203
|
},
|
|
166
204
|
{
|
|
167
205
|
"path": "bundle/.claude-plugin/plugin.json",
|
|
168
|
-
"sha256": "
|
|
206
|
+
"sha256": "fe7531e0527d288413151433ee5daa3106383442024d5dad072373f8f26d57d1"
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
"path": "bundle/.gemini/settings.json",
|
|
210
|
+
"sha256": "14208140297f635cc5155cfe063c9b8a6193a3d0a264e0686cf3b80789208f27"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"path": "bundle/.kimi/mcp.json",
|
|
214
|
+
"sha256": "14208140297f635cc5155cfe063c9b8a6193a3d0a264e0686cf3b80789208f27"
|
|
169
215
|
},
|
|
170
216
|
{
|
|
171
217
|
"path": "bundle/.mcp.json",
|
|
172
|
-
"sha256": "
|
|
218
|
+
"sha256": "e16897732dbd20ba7f47e5c0513b146a8d847454c8c13aa9e0a6031e5a498fa4"
|
|
173
219
|
},
|
|
174
220
|
{
|
|
175
221
|
"path": "bundle/OMG_COMPAT_CONTRACT.md",
|
|
176
|
-
"sha256": "
|
|
222
|
+
"sha256": "706b57c51e105bc6654b457596df9332e8c1f73703596fe248bd24c2ae3a59e9"
|
|
177
223
|
},
|
|
178
224
|
{
|
|
179
225
|
"path": "bundle/plugins/advanced/commands/OMG:code-review.md",
|
|
@@ -181,7 +227,7 @@
|
|
|
181
227
|
},
|
|
182
228
|
{
|
|
183
229
|
"path": "bundle/plugins/advanced/commands/OMG:deep-plan.md",
|
|
184
|
-
"sha256": "
|
|
230
|
+
"sha256": "ccc235efa52643afd5550765bb0a3b9697be40bf4731392fde3f1c0e5c43f9e0"
|
|
185
231
|
},
|
|
186
232
|
{
|
|
187
233
|
"path": "bundle/plugins/advanced/commands/OMG:handoff.md",
|
|
@@ -213,91 +259,107 @@
|
|
|
213
259
|
},
|
|
214
260
|
{
|
|
215
261
|
"path": "bundle/plugins/advanced/commands/OMG:ship.md",
|
|
216
|
-
"sha256": "
|
|
262
|
+
"sha256": "3a44016f71a4d73de04043f0c13a6655541c090498908b2bc858c29514a653d4"
|
|
217
263
|
},
|
|
218
264
|
{
|
|
219
265
|
"path": "bundle/plugins/advanced/plugin.json",
|
|
220
|
-
"sha256": "
|
|
266
|
+
"sha256": "4968387bae13eaf91792a0c845c28a5007eeefd04d09320b0d783d9563f1481b"
|
|
221
267
|
},
|
|
222
268
|
{
|
|
223
269
|
"path": "bundle/registry/bundles/algorithms.yaml",
|
|
224
|
-
"sha256": "
|
|
270
|
+
"sha256": "d52c36a0c18535eab9f45b37b0e835b1296ee2dc0d84f2925c23eb8d76390377"
|
|
225
271
|
},
|
|
226
272
|
{
|
|
227
273
|
"path": "bundle/registry/bundles/api-twin.yaml",
|
|
228
|
-
"sha256": "
|
|
274
|
+
"sha256": "1785a09173a380855d8d671d2e8c53b48a0c10ed79dd2d5647cac93fd95ef072"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"path": "bundle/registry/bundles/claim-judge.yaml",
|
|
278
|
+
"sha256": "681d69599a20b8172716eaf4290e10821594c4db0a3943147d17628e997cafe9"
|
|
229
279
|
},
|
|
230
280
|
{
|
|
231
281
|
"path": "bundle/registry/bundles/control-plane.yaml",
|
|
232
|
-
"sha256": "
|
|
282
|
+
"sha256": "8a1677d622d2f660b7d1109579f026bd078f97eb624669c618247451bd07f172"
|
|
233
283
|
},
|
|
234
284
|
{
|
|
235
285
|
"path": "bundle/registry/bundles/data-lineage.yaml",
|
|
236
|
-
"sha256": "
|
|
286
|
+
"sha256": "5811a8cf765c73dac6990bebc5a4eaadf5e4be5b9418846efdb6289903b3c5e0"
|
|
237
287
|
},
|
|
238
288
|
{
|
|
239
289
|
"path": "bundle/registry/bundles/delta-classifier.yaml",
|
|
240
|
-
"sha256": "
|
|
290
|
+
"sha256": "ecf2e6fc8e07bc091d3d429c90b94b47ff0c96455467c82feae709bada388c29"
|
|
241
291
|
},
|
|
242
292
|
{
|
|
243
293
|
"path": "bundle/registry/bundles/eval-gate.yaml",
|
|
244
|
-
"sha256": "
|
|
294
|
+
"sha256": "3048cb1c18c3d7814c88689121e44bc54ce45e1478f33c395b247edc55727f76"
|
|
245
295
|
},
|
|
246
296
|
{
|
|
247
297
|
"path": "bundle/registry/bundles/health.yaml",
|
|
248
|
-
"sha256": "
|
|
298
|
+
"sha256": "7d52b0d460e4b72a37557b787ab328e5f6be03c313f2c3c58c2882b6c55168b4"
|
|
249
299
|
},
|
|
250
300
|
{
|
|
251
301
|
"path": "bundle/registry/bundles/hook-governor.yaml",
|
|
252
|
-
"sha256": "
|
|
302
|
+
"sha256": "5e5d6bc3f2f8a8fc5f7a461c46b1d4f9a76467098b057e5796cc70280c21bc0d"
|
|
253
303
|
},
|
|
254
304
|
{
|
|
255
305
|
"path": "bundle/registry/bundles/incident-replay.yaml",
|
|
256
|
-
"sha256": "
|
|
306
|
+
"sha256": "af2480af08cbc2617f97561225f1b7dfa3f0d9897754c9e04dc9035655709772"
|
|
257
307
|
},
|
|
258
308
|
{
|
|
259
309
|
"path": "bundle/registry/bundles/lsp-pack.yaml",
|
|
260
|
-
"sha256": "
|
|
310
|
+
"sha256": "58963389f5c24eb88f3fef181ce8593733b856f8db75fad3f51c0006413a2381"
|
|
261
311
|
},
|
|
262
312
|
{
|
|
263
313
|
"path": "bundle/registry/bundles/mcp-fabric.yaml",
|
|
264
|
-
"sha256": "
|
|
314
|
+
"sha256": "d9d69f9a5b60c3eb2ffe59500696866f28deebb159aff9ccfc81468c4ba727c1"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"path": "bundle/registry/bundles/plan-council.yaml",
|
|
318
|
+
"sha256": "48ffc6d1549a4ce3d8a1a5fbb25fd37d7a6f7af0c1347315b7d2a66408627679"
|
|
265
319
|
},
|
|
266
320
|
{
|
|
267
321
|
"path": "bundle/registry/bundles/preflight.yaml",
|
|
268
|
-
"sha256": "
|
|
322
|
+
"sha256": "716a47105e52bfae5fa69e520c2b3f0fb1cde63872837e817cd364e97b9bac11"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"path": "bundle/registry/bundles/proof-gate.yaml",
|
|
326
|
+
"sha256": "f0cd5d3916405e30b84069cda4348a9ba8dd073c22b259c6619cf55ebe07cde9"
|
|
269
327
|
},
|
|
270
328
|
{
|
|
271
329
|
"path": "bundle/registry/bundles/remote-supervisor.yaml",
|
|
272
|
-
"sha256": "
|
|
330
|
+
"sha256": "21ca5c27c01ec958aa17df08cf567b72d254a7ece628b6ef51452ef41541f8f8"
|
|
273
331
|
},
|
|
274
332
|
{
|
|
275
333
|
"path": "bundle/registry/bundles/robotics.yaml",
|
|
276
|
-
"sha256": "
|
|
334
|
+
"sha256": "c169d765137b80347c0d18c4bb4b462ed1797a7e13eb9c86bec2d4c4f5b8a28c"
|
|
277
335
|
},
|
|
278
336
|
{
|
|
279
337
|
"path": "bundle/registry/bundles/secure-worktree-pipeline.yaml",
|
|
280
|
-
"sha256": "
|
|
338
|
+
"sha256": "31c80af3b2cf589c338c8690880e330dcd9481b3a15ecb3f964aa2c6212df7aa"
|
|
281
339
|
},
|
|
282
340
|
{
|
|
283
341
|
"path": "bundle/registry/bundles/security-check.yaml",
|
|
284
|
-
"sha256": "
|
|
342
|
+
"sha256": "b2b4d4ec168acee3891cd0d6230909a2ba1544ea60a3df7b24957fd57405c711"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"path": "bundle/registry/bundles/test-intent-lock.yaml",
|
|
346
|
+
"sha256": "73f8eda6d0af194b334fa92c218c27b54d203db62ce7d9f2bf1ae6f9441535a2"
|
|
285
347
|
},
|
|
286
348
|
{
|
|
287
349
|
"path": "bundle/registry/bundles/tracebank.yaml",
|
|
288
|
-
"sha256": "
|
|
350
|
+
"sha256": "1143e896f40d59f1732a0ce3260a620abec202b61c9e335ae6a2e1e58eda5893"
|
|
289
351
|
},
|
|
290
352
|
{
|
|
291
353
|
"path": "bundle/registry/bundles/vision.yaml",
|
|
292
|
-
"sha256": "
|
|
354
|
+
"sha256": "1d9903c943ad6c1ca4796125e97da1839b6f6c0bd3242919036df65dec5ae495"
|
|
293
355
|
},
|
|
294
356
|
{
|
|
295
357
|
"path": "bundle/registry/omg-capability.schema.json",
|
|
296
|
-
"sha256": "
|
|
358
|
+
"sha256": "a9076f09cd9a12ba769c2b05f80a24195ac851b9ad2b817efa41d6143765c513"
|
|
297
359
|
},
|
|
298
360
|
{
|
|
299
361
|
"path": "bundle/settings.json",
|
|
300
|
-
"sha256": "
|
|
362
|
+
"sha256": "7213d38cb5fd0699482120e1e5a2e50b3386f05bbf8e45b48c9007365058388b"
|
|
301
363
|
}
|
|
302
364
|
]
|
|
303
365
|
}
|
package/docs/proof.md
CHANGED
|
@@ -23,18 +23,19 @@ OMG keeps verification visible instead of burying it in implementation details.
|
|
|
23
23
|
|
|
24
24
|
## Provider Matrix
|
|
25
25
|
|
|
26
|
-
| Provider | Detect | Auth Check | MCP Config | Host Priority |
|
|
27
|
-
|
|
28
|
-
| Claude Code | host-native | host-native | yes | primary |
|
|
29
|
-
| Codex | yes | yes | yes | primary |
|
|
30
|
-
| Gemini | yes | yes | yes | supported |
|
|
31
|
-
| Kimi | yes | yes | yes | supported |
|
|
26
|
+
| Provider | Tier | Detect | Auth Check | MCP Config | Host Priority |
|
|
27
|
+
|----------|------|--------|------------|------------|---------------|
|
|
28
|
+
| Claude Code | Canonical | host-native | host-native | yes | primary |
|
|
29
|
+
| Codex | Canonical | yes | yes | yes | primary |
|
|
30
|
+
| Gemini | Compatibility | yes | yes | yes | supported |
|
|
31
|
+
| Kimi | Compatibility | yes | yes | yes | supported |
|
|
32
32
|
|
|
33
33
|
## Adoption Evidence
|
|
34
34
|
|
|
35
35
|
- Native setup writes `.omg/state/adoption-report.json`
|
|
36
36
|
- Native setup writes `.omg/state/cli-config.yaml`
|
|
37
37
|
- `OMG-only` and `coexist` are both covered in setup tests
|
|
38
|
+
- Canonical modes: `chill`, `focused`, `exploratory`
|
|
38
39
|
- OMC, OMX, and Superpowers references stay limited to compatibility and adoption guidance
|
|
39
40
|
|
|
40
41
|
## HUD Artifact
|
package/hooks/setup_wizard.py
CHANGED
|
@@ -12,7 +12,7 @@ from typing import Any, cast
|
|
|
12
12
|
|
|
13
13
|
import yaml
|
|
14
14
|
|
|
15
|
-
from _common import get_feature_flag
|
|
15
|
+
from hooks._common import get_feature_flag
|
|
16
16
|
|
|
17
17
|
# Ensure project root is on sys.path for runtime imports
|
|
18
18
|
_PROJECT_ROOT = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), ".."))
|
|
@@ -36,8 +36,10 @@ import runtime.providers.codex_provider # noqa: E402, F401
|
|
|
36
36
|
import runtime.providers.gemini_provider # noqa: E402, F401
|
|
37
37
|
import runtime.providers.kimi_provider # noqa: E402, F401
|
|
38
38
|
from runtime.adoption import ( # noqa: E402
|
|
39
|
+
CANONICAL_MODE_NAMES,
|
|
39
40
|
CANONICAL_VERSION,
|
|
40
41
|
build_adoption_report,
|
|
42
|
+
get_mode_profile,
|
|
41
43
|
get_preset_features,
|
|
42
44
|
resolve_preset,
|
|
43
45
|
write_adoption_report,
|
|
@@ -416,6 +418,17 @@ def check_auth() -> dict[str, Any]:
|
|
|
416
418
|
_HTTP_MEMORY_MIN_LEVEL: int = _PRESET_LEVEL["interop"]
|
|
417
419
|
|
|
418
420
|
|
|
421
|
+
def get_mode_choices() -> list[str]:
|
|
422
|
+
return list(CANONICAL_MODE_NAMES)
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
def select_setup_mode(mode: str | None) -> str:
|
|
426
|
+
candidate = (mode or "").strip().lower()
|
|
427
|
+
if candidate in CANONICAL_MODE_NAMES:
|
|
428
|
+
return candidate
|
|
429
|
+
return "focused"
|
|
430
|
+
|
|
431
|
+
|
|
419
432
|
def configure_mcp(
|
|
420
433
|
project_dir: str,
|
|
421
434
|
detected_clis: dict[str, Any],
|
|
@@ -599,6 +612,7 @@ def run_setup_wizard(
|
|
|
599
612
|
non_interactive: bool = False,
|
|
600
613
|
*,
|
|
601
614
|
mode: str | None = None,
|
|
615
|
+
setup_mode: str | None = None,
|
|
602
616
|
adopt: str = "auto",
|
|
603
617
|
preset: str | None = None,
|
|
604
618
|
) -> dict[str, Any]:
|
|
@@ -622,6 +636,7 @@ def run_setup_wizard(
|
|
|
622
636
|
}
|
|
623
637
|
|
|
624
638
|
selected_preset = resolve_preset(preset or ("balanced" if non_interactive else "safe"))
|
|
639
|
+
selected_setup_mode = select_setup_mode(setup_mode)
|
|
625
640
|
adoption = build_adoption_report(
|
|
626
641
|
project_dir,
|
|
627
642
|
requested_mode=mode,
|
|
@@ -638,6 +653,11 @@ def run_setup_wizard(
|
|
|
638
653
|
|
|
639
654
|
return {
|
|
640
655
|
"status": "complete",
|
|
656
|
+
"setup_mode": {
|
|
657
|
+
"choices": get_mode_choices(),
|
|
658
|
+
"selected": selected_setup_mode,
|
|
659
|
+
"profile": get_mode_profile(selected_setup_mode),
|
|
660
|
+
},
|
|
641
661
|
"clis_detected": clis,
|
|
642
662
|
"auth_status": auth,
|
|
643
663
|
"mcp_configured": mcp,
|
package/hooks/shadow_manager.py
CHANGED
|
@@ -6,6 +6,7 @@ Maintains overlay-style shadow writes and evidence artifacts.
|
|
|
6
6
|
from __future__ import annotations
|
|
7
7
|
|
|
8
8
|
import hashlib
|
|
9
|
+
import importlib
|
|
9
10
|
import json
|
|
10
11
|
import os
|
|
11
12
|
import platform
|
|
@@ -18,8 +19,15 @@ from typing import Any
|
|
|
18
19
|
HOOKS_DIR = os.path.dirname(__file__)
|
|
19
20
|
if HOOKS_DIR not in sys.path:
|
|
20
21
|
sys.path.insert(0, HOOKS_DIR)
|
|
21
|
-
|
|
22
|
-
from
|
|
22
|
+
try:
|
|
23
|
+
from hooks._common import _resolve_project_dir
|
|
24
|
+
from hooks.security_validators import ensure_path_within_dir, validate_opaque_identifier
|
|
25
|
+
except ImportError:
|
|
26
|
+
_common = importlib.import_module("_common")
|
|
27
|
+
security_validators = importlib.import_module("security_validators")
|
|
28
|
+
_resolve_project_dir = _common._resolve_project_dir
|
|
29
|
+
ensure_path_within_dir = security_validators.ensure_path_within_dir
|
|
30
|
+
validate_opaque_identifier = security_validators.validate_opaque_identifier
|
|
23
31
|
|
|
24
32
|
|
|
25
33
|
def _project_dir() -> str:
|
|
@@ -189,6 +197,11 @@ def create_evidence_pack(
|
|
|
189
197
|
lineage: dict[str, Any] | None = None,
|
|
190
198
|
executor: dict[str, Any] | None = None,
|
|
191
199
|
environment: dict[str, Any] | None = None,
|
|
200
|
+
artifacts: list[dict[str, Any]] | None = None,
|
|
201
|
+
claims: list[dict[str, Any]] | None = None,
|
|
202
|
+
test_delta: dict[str, Any] | None = None,
|
|
203
|
+
browser_evidence_path: str | None = None,
|
|
204
|
+
repro_pack_path: str | None = None,
|
|
192
205
|
) -> str:
|
|
193
206
|
ensure_shadow_dirs(project_dir)
|
|
194
207
|
run_id = _validated_run_id(run_id)
|
|
@@ -209,6 +222,7 @@ def create_evidence_pack(
|
|
|
209
222
|
|
|
210
223
|
evidence = {
|
|
211
224
|
"schema": "EvidencePack",
|
|
225
|
+
"schema_version": 2,
|
|
212
226
|
"run_id": run_id,
|
|
213
227
|
"created_at": _utc_now(),
|
|
214
228
|
"tests": tests or [],
|
|
@@ -224,7 +238,16 @@ def create_evidence_pack(
|
|
|
224
238
|
"lineage": lineage or {},
|
|
225
239
|
"executor": executor,
|
|
226
240
|
"environment": environment,
|
|
241
|
+
"artifacts": artifacts or [],
|
|
227
242
|
}
|
|
243
|
+
if claims is not None:
|
|
244
|
+
evidence["claims"] = claims
|
|
245
|
+
if test_delta is not None:
|
|
246
|
+
evidence["test_delta"] = test_delta
|
|
247
|
+
if browser_evidence_path is not None:
|
|
248
|
+
evidence["browser_evidence_path"] = browser_evidence_path
|
|
249
|
+
if repro_pack_path is not None:
|
|
250
|
+
evidence["repro_pack_path"] = repro_pack_path
|
|
228
251
|
evidence_path = ensure_path_within_dir(
|
|
229
252
|
_evidence_root(project_dir),
|
|
230
253
|
os.path.join(_evidence_root(project_dir), f"{run_id}.json"),
|
package/hooks/state_migration.py
CHANGED
|
@@ -115,6 +115,9 @@ MIGRATION_MAP: list[tuple[str, str, str]] = [
|
|
|
115
115
|
("dir", "repl_sessions", "state/repl_sessions"),
|
|
116
116
|
("dir", "sessions", "state/sessions"),
|
|
117
117
|
("dir", "snapshots", "state/snapshots"),
|
|
118
|
+
("file", "current_branch.json", "state/current_branch.json"),
|
|
119
|
+
("file", "background-verification.json", "state/background-verification.json"),
|
|
120
|
+
("dir", "branches", "state/branches"),
|
|
118
121
|
("dir", "knowledge", "knowledge"),
|
|
119
122
|
]
|
|
120
123
|
|
package/hud/omg-hud.mjs
CHANGED
|
@@ -55,7 +55,7 @@ function readOmgVersion() {
|
|
|
55
55
|
const OMG_VERSION = readOmgVersion();
|
|
56
56
|
|
|
57
57
|
const DEFAULT_HUD_CONFIG = {
|
|
58
|
-
preset: "
|
|
58
|
+
preset: "standard",
|
|
59
59
|
elements: {
|
|
60
60
|
cwd: true,
|
|
61
61
|
cwdFormat: "relative",
|
|
@@ -129,7 +129,7 @@ const PRESET_CONFIGS = {
|
|
|
129
129
|
safeMode: true,
|
|
130
130
|
inventory: true,
|
|
131
131
|
},
|
|
132
|
-
|
|
132
|
+
standard: {
|
|
133
133
|
cwd: true,
|
|
134
134
|
cwdFormat: "relative",
|
|
135
135
|
gitRepo: false,
|
|
@@ -251,6 +251,17 @@ const PRESET_CONFIGS = {
|
|
|
251
251
|
},
|
|
252
252
|
};
|
|
253
253
|
|
|
254
|
+
const HUD_PRESET_ALIASES = {
|
|
255
|
+
focused: "standard",
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
function resolveHudPreset(preset) {
|
|
259
|
+
const requested = typeof preset === "string" ? preset : DEFAULT_HUD_CONFIG.preset;
|
|
260
|
+
const canonical = HUD_PRESET_ALIASES[requested] || requested;
|
|
261
|
+
if (PRESET_CONFIGS[canonical]) return canonical;
|
|
262
|
+
return DEFAULT_HUD_CONFIG.preset;
|
|
263
|
+
}
|
|
264
|
+
|
|
254
265
|
function countByExt(dirPath, ext) {
|
|
255
266
|
if (!existsSync(dirPath)) return 0;
|
|
256
267
|
try {
|
|
@@ -373,7 +384,7 @@ function readRawHudConfig() {
|
|
|
373
384
|
|
|
374
385
|
function readHudConfig() {
|
|
375
386
|
const source = readRawHudConfig();
|
|
376
|
-
const preset = source.preset
|
|
387
|
+
const preset = resolveHudPreset(source.preset);
|
|
377
388
|
const presetElements = PRESET_CONFIGS[preset] || {};
|
|
378
389
|
const elements = {
|
|
379
390
|
...DEFAULT_HUD_CONFIG.elements,
|
|
@@ -530,6 +541,7 @@ function readOmgState(cwd) {
|
|
|
530
541
|
const stateDir = join(cwd, ".omg", "state");
|
|
531
542
|
const result = {
|
|
532
543
|
modes: [],
|
|
544
|
+
currentMode: null,
|
|
533
545
|
hookCount: 0,
|
|
534
546
|
profile: null,
|
|
535
547
|
ralph: null,
|
|
@@ -564,6 +576,14 @@ function readOmgState(cwd) {
|
|
|
564
576
|
}
|
|
565
577
|
}
|
|
566
578
|
|
|
579
|
+
const modeState = readJsonSafe(join(stateDir, "mode.json"));
|
|
580
|
+
if (modeState && typeof modeState === "object") {
|
|
581
|
+
const candidate = modeState.mode || modeState.current_mode || modeState.name;
|
|
582
|
+
if (typeof candidate === "string" && candidate.trim()) {
|
|
583
|
+
result.currentMode = candidate.trim().toLowerCase();
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
567
587
|
const ralphState = readJsonSafe(join(stateDir, "ralph-state.json"));
|
|
568
588
|
if (ralphState?.active) {
|
|
569
589
|
result.ralph = {
|
|
@@ -627,6 +647,19 @@ function readOmgState(cwd) {
|
|
|
627
647
|
return result;
|
|
628
648
|
}
|
|
629
649
|
|
|
650
|
+
function readBackgroundVerificationState(stateDir) {
|
|
651
|
+
const filePath = join(stateDir, "background-verification.json");
|
|
652
|
+
const data = readJsonSafe(filePath);
|
|
653
|
+
if (!data || data.schema !== "BackgroundVerificationState") return null;
|
|
654
|
+
return {
|
|
655
|
+
status: data.status || "unknown",
|
|
656
|
+
blockers: Array.isArray(data.blockers) ? data.blockers : [],
|
|
657
|
+
evidence_links: Array.isArray(data.evidence_links) ? data.evidence_links : [],
|
|
658
|
+
progress: data.progress || {},
|
|
659
|
+
updated_at: data.updated_at || null,
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
|
|
630
663
|
function parseTranscript(transcriptPath) {
|
|
631
664
|
const result = {
|
|
632
665
|
tools: 0,
|
|
@@ -814,6 +847,29 @@ function renderBackgroundTasks(tasks) {
|
|
|
814
847
|
return `bg:${colorFn(`${running}/${MAX}`)}`;
|
|
815
848
|
}
|
|
816
849
|
|
|
850
|
+
function renderVerificationStatus(state) {
|
|
851
|
+
if (!state) return dim("verification: unknown");
|
|
852
|
+
const { status, blockers, evidence_links } = state;
|
|
853
|
+
const blockerCount = blockers.length;
|
|
854
|
+
const latestEvidence = evidence_links.length > 0
|
|
855
|
+
? evidence_links[evidence_links.length - 1]
|
|
856
|
+
: null;
|
|
857
|
+
const evidenceSuffix = latestEvidence
|
|
858
|
+
? ` ${dim(`evidence:${basename(latestEvidence)}`)}`
|
|
859
|
+
: "";
|
|
860
|
+
if (status === "ok") {
|
|
861
|
+
return green("\u2713 verification ok") + evidenceSuffix;
|
|
862
|
+
}
|
|
863
|
+
if (status === "running") {
|
|
864
|
+
return yellow("\u27F3 verification running") + evidenceSuffix;
|
|
865
|
+
}
|
|
866
|
+
if (status === "error" || status === "blocked") {
|
|
867
|
+
const blockerSuffix = blockerCount > 0 ? ` (${blockerCount} blockers)` : "";
|
|
868
|
+
return red(`\u2717 verification blocked${blockerSuffix}`) + evidenceSuffix;
|
|
869
|
+
}
|
|
870
|
+
return dim("verification: unknown");
|
|
871
|
+
}
|
|
872
|
+
|
|
817
873
|
function renderTodos(todos) {
|
|
818
874
|
if (!todos || todos.length === 0) return null;
|
|
819
875
|
const completed = todos.filter((t) => t.status === "completed").length;
|
|
@@ -1136,6 +1192,9 @@ async function main() {
|
|
|
1136
1192
|
|
|
1137
1193
|
// Active skills (modes) + last skill
|
|
1138
1194
|
if (cfg.elements.activeSkills !== false) {
|
|
1195
|
+
if (omgState.currentMode) {
|
|
1196
|
+
els.push(`mode:${cyan(omgState.currentMode)}`);
|
|
1197
|
+
}
|
|
1139
1198
|
const modeBadges = renderModeBadges(omgState.modes, {
|
|
1140
1199
|
hideRalph: !!omgState.ralph,
|
|
1141
1200
|
hideAutopilot: !!omgState.autopilot,
|
|
@@ -1181,6 +1240,10 @@ async function main() {
|
|
|
1181
1240
|
if (bgEl) els.push(bgEl);
|
|
1182
1241
|
}
|
|
1183
1242
|
|
|
1243
|
+
const verificationStateDir = join(cwd, ".omg", "state");
|
|
1244
|
+
const verificationState = readBackgroundVerificationState(verificationStateDir);
|
|
1245
|
+
els.push(renderVerificationStatus(verificationState));
|
|
1246
|
+
|
|
1184
1247
|
// Model name
|
|
1185
1248
|
if (cfg.elements.model !== false && model && model !== "?") {
|
|
1186
1249
|
els.push(dim(model));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trac3er/oh-my-god",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.9",
|
|
4
4
|
"description": "OMG (Oh My God) — Multi-agent orchestration, evidence-backed verification, and durable session state for Claude Code, Codex, and supported agent hosts",
|
|
5
5
|
"main": "OMG-setup.sh",
|
|
6
6
|
"scripts": {
|
package/plugins/README.md
CHANGED
|
@@ -28,7 +28,7 @@ OMG exposes a small native front door and keeps the rest of the surface availabl
|
|
|
28
28
|
|
|
29
29
|
| Command | Category | Description |
|
|
30
30
|
|---------|----------|-------------|
|
|
31
|
-
| `/OMG:deep-plan` | Planning | Strategic planning with domain awareness (
|
|
31
|
+
| `/OMG:deep-plan` | Planning | Strategic planning with domain awareness (compatibility path to `plan-council`) |
|
|
32
32
|
| `/OMG:learn` | Knowledge | Convert patterns into OMG-native instincts and skills |
|
|
33
33
|
| `/OMG:code-review` | Quality | Deep review flow |
|
|
34
34
|
| `/OMG:ship` | Delivery | Idea to evidence to release |
|