Skip to content

feat(publish): accept trusted consumer dispatch#12

Merged
jmgilman merged 1 commit into
mainfrom
feat/phase5-consumer-dispatch
Jul 22, 2026
Merged

feat(publish): accept trusted consumer dispatch#12
jmgilman merged 1 commit into
mainfrom
feat/phase5-consumer-dispatch

Conversation

@jmgilman

Copy link
Copy Markdown
Contributor

Summary

  • accept only the publish-package repository dispatch type and normalize its project and tag into the existing validation path
  • force trusted consumer dispatches through protected staging and production while keeping deletion and confirmation controls out of the payload
  • extend workflow policy with exact dispatch-boundary checks and negative-case proof
  • publish canonical APT and RPM installation, fingerprint verification, and removal instructions

Trust boundary

The dispatch payload is untrusted until the existing project/tag registry and GitHub Release validation succeed. It cannot select staging deletion, skip staging, skip production, or provide confirmation phrases. Validation remains secrets-free; staging and production retain their protected environments and serialized publication jobs. This initial dispatch slice remains confined by the publisher to incus-gh-runner v1.0.0.

Verification

  • mise exec -- actionlint .github/workflows/*.yml
  • mise exec -- scripts/phase3-ci.sh
  • dispatch policy positive and negative cases via validate_publish_dispatch_contract
  • mise exec -- golangci-lint fmt --config .golangci.yml --diff
  • mise exec -- golangci-lint run --config .golangci.yml ./... --show-stats=false
  • mise exec -- go build -o bin/meigma-packages ./cmd/meigma-packages
  • mise exec -- go test ./...
  • mise exec -- moon run docs:build
  • live key fingerprint and RPM repository URL verification against https://pkgs.meigma.dev

The end-to-end consumer dispatch proof intentionally follows after this listener is merged because GitHub handles repository_dispatch only when the workflow exists on the default branch.

@jmgilman
jmgilman merged commit f05cfdb into main Jul 22, 2026
2 checks passed
@jmgilman
jmgilman deleted the feat/phase5-consumer-dispatch branch July 22, 2026 04:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant