Skip to content

Plugin submission verify pipeline via GitHub Actions (reusable workflow + catalog gate) #3

Description

@ReBoticsAI

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

  1. 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)
  2. 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)
  3. 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)
  4. 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

  • Reusable Actions workflow exists in this repo and is documented for sellers
  • CONTRIBUTING requires public repo + pinned ref + green verify for new plugin entries
  • Catalog schema/validator (or CI) can reject unpinned / unverified plugin submissions
  • At least one example plugin repo (or docs fixture) shows the uses: pattern
  • Explicit note: does not replace runtime sandboxing on GodMode Bridge

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions