Goal
Use GitHub Actions as disposable verification VMs for marketplace plugin submissions, so community/SaaS sellers cannot list a plugin until a pinned commit has passed an isolated build (and optional GodMode smoke) on GitHub-hosted runners.
This repo (GodMode-Marketplace) owns catalog gates, CONTRIBUTING requirements, and reusable workflows. GodMode core remains the runtime install host; it should later consume pinned refs/digests from verified listings (follow-up in GodMode if needed). Related design discussion: ReBoticsAI/GodMode#172 (VM-grade isolation deferred in favor of GitHub intake).
Why here (not GodMode core)
- Catalog PRs,
pluginRepo / pluginRef policy, and submission CONTRIBUTING live in this repo today
- Public plugin repos get free Actions minutes; Marketplace can publish a reusable workflow sellers call
- Core OSS stays free of marketplace intake orchestration; Bridge only needs to honor pins at install time
Design (locked intent from GodMode #112 hardening discussion)
Plugin public GitHub repo @ immutable SHA
→ reusable workflow (Marketplace) on ubuntu-latest (isolated VM)
→ build against pinned GodMode package/image
→ optional: docker smoke (boot GodMode, install plugin, health)
→ attest green run + artifact hash
→ catalog / publish gate requires that SHA + proof
→ Bridge installs pinned ref/asset (not floating main)
This is verification-time isolation (same class as a review VM). It is not a substitute for runtime plugin permissions on buyer Bridges.
Proposed deliverables
-
Reusable workflow under .github/workflows/ (e.g. plugin-verify.yml or reusable-plugin-verify.yml) that plugin repos can uses:
- Checkout plugin at caller SHA
- Pin GodMode core (tag/image or
packages/plugin-api contract)
npm ci / esbuild (or documented build script)
- Validate
godmode.plugin.json (kernelApiVersion, entries)
- Optional job: compose/run GodMode + install plugin +
/api/health smoke
- Output: checksum of built
dist (or release asset)
-
CONTRIBUTING + catalog policy
installType: "plugin" requires public pluginRepo
pluginRef must be tag or commit SHA (discourage floating main for Official/Community sell)
- PR / publish checklist: linked green Actions run for that ref
- Update note that today''s
npm run validate still does not fetch pluginRepo (replace with this gate)
-
Catalog / listing metadata (schema + examples)
- Store
pluginRef (SHA), optional artifactSha256, ciRunUrl / attestation
- Fail closed on catalog validate if plugin entry lacks pin + verify proof (phase in)
-
Docs
- Seller guide: add workflow to plugin repo, cut release/tag, open Marketplace PR / publish
- Clarify: CI VM verifies submission; buyers still get Bridge runtime trust model
Acceptance
Out of scope
- Firecracker / first-party VMs on SaaS hubs (GodMode #172)
- Windows/Sierra native DLL verify pipelines
- Changing Stripe/commerce flows
- Softening GodMode Layer 1–4 authoring isolation
Follow-ups (GodMode core, separate issues)
- Install path honors pinned
pluginRef / release asset digest (no drift to main)
- Optional: SaaS Community publish API checks GitHub Check Suite for the SHA before
MarketplaceListing.publish
References
Goal
Use GitHub Actions as disposable verification VMs for marketplace plugin submissions, so community/SaaS sellers cannot list a plugin until a pinned commit has passed an isolated build (and optional GodMode smoke) on GitHub-hosted runners.
This repo (
GodMode-Marketplace) owns catalog gates, CONTRIBUTING requirements, and reusable workflows. GodMode core remains the runtime install host; it should later consume pinned refs/digests from verified listings (follow-up in GodMode if needed). Related design discussion: ReBoticsAI/GodMode#172 (VM-grade isolation deferred in favor of GitHub intake).Why here (not GodMode core)
pluginRepo/pluginRefpolicy, and submission CONTRIBUTING live in this repo todayDesign (locked intent from GodMode #112 hardening discussion)
This is verification-time isolation (same class as a review VM). It is not a substitute for runtime plugin permissions on buyer Bridges.
Proposed deliverables
Reusable workflow under
.github/workflows/(e.g.plugin-verify.ymlorreusable-plugin-verify.yml) that plugin repos canuses:packages/plugin-apicontract)npm ci/ esbuild (or documented build script)godmode.plugin.json(kernelApiVersion, entries)/api/healthsmokedist(or release asset)CONTRIBUTING + catalog policy
installType: "plugin"requires publicpluginRepopluginRefmust be tag or commit SHA (discourage floatingmainfor Official/Community sell)npm run validatestill does not fetchpluginRepo(replace with this gate)Catalog / listing metadata (schema + examples)
pluginRef(SHA), optionalartifactSha256,ciRunUrl/ attestationDocs
Acceptance
uses:patternOut of scope
Follow-ups (GodMode core, separate issues)
pluginRef/ release asset digest (no drift tomain)MarketplaceListing.publishReferences
pluginRepo