bronsonaber/Muninn Context Receipt
Posts (or updates) a redacted, reviewer-readable Context Receipt comment on AI-authored pull requests: a context audit of the repo's context surfaces (CLAUDE.md, AGENTS.md, .cursor/rules, etc.), never a code-quality or security approval. Runs entirely inside your own Actions runner; nothing leaves your repo except the comment it posts to your own PR via your own token.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Stale
- License
- None
Inputs
| name | description | required | default |
|---|---|---|---|
| ai-authored-label | PR label (exact match, case-insensitive) that marks a PR as AI-authored. Set to '' to disable this signal. | no | ai-authored |
| ai-authored-author-glob | Comma-separated glob pattern(s) (fnmatch syntax) matched against the PR author's login, e.g. "*-bot,claude[bot]". Empty (default) disables this signal. | no | "" |
| ai-authored-trailer | A commit-message trailer/marker (substring match) on the PR's head commit that marks it AI-authored, e.g. "Co-Authored-By: Claude". Checked via a local `git log` on the checked-out PR head, no network call. Empty (default) disables this signal. | no | "" |
| path | Path (relative to the repo root) Muninn scans for context surfaces. | no | . |
| github-token | Token used to read the PR's labels/author and to post/update the receipt comment. Defaults to the workflow's own GITHUB_TOKEN. MANDATED MINIMAL PERMISSIONS for the calling workflow: this token needs, and must be scoped to, exactly permissions: pull-requests: write contents: read Do not grant broader permissions (e.g. `contents: write`, `issues: write`, or a blanket `write-all`) to the job that runs this action -- it only ever reads repo files locally and posts/edits one PR comment via the issues-comments endpoint. | no | ${{ github.token }} |
| python-version | Python version used to run Muninn. Server mode installs one dependency (cryptography) for ed25519 signing; local mode is pure stdlib. | no | 3.12 |
| server-url | Origin of a Muninn scoring server (e.g. "https://muninn-edge.bronson-aber.workers.dev"). REQUIRED: this client only runs in SERVER MODE. It assembles and signs a redacted bundle locally and hands scoring to the configured server; it has no local scoring engine. If left empty, the action fails immediately with a clear error instead of attempting anything else. | no | "" |
| server-pubkey | The scoring server's own ed25519 public key (PEM), pinned client-side so a returned receipt can be verified before it is ever posted. Only used in SERVER MODE (see server-url). Not secret: safe to store as a plain repo variable or a committed value. | no | "" |
| client-key-id | This repo's own registered client key id, produced by `python3 -m shadow.keygen` (see shadow/keygen.py) and paired with client-private-key below. Only used in SERVER MODE. Not secret. | no | "" |
| client-private-key | This repo's own ed25519 CLIENT PRIVATE KEY (PEM), generated once by `python3 -m shadow.keygen` and registered public-key-only with the scoring server (see PROVISIONING.md). This value is sensitive: pass it via a repo (or org) secret you create yourself, named MUNINN_CLIENT_PRIVATE_KEY_PEM, a repo (or org) secret you create yourself -- never commit it and never pass it as a plain input literal. If this and client-key-id are both left empty while server-url is set, the client falls back to a fresh EPHEMERAL keypair for this run only, which is unregistered and will be rejected by the server; a clear notice is logged so that failure reads as understandable, not mysterious. A real deployment always configures both. | no | "" |
Outputs
no outputs