Skip to content

Audit publication: verify repository-dispatch workflow identity correctly #1025

Description

@jeffhuber

Problem

The verified local-audit workflow introduced by #1023 can run and seal an exact-head Claude PASS, but its default-branch publisher rejects the valid repository-dispatch run. GitHub reports the repository-dispatch event type in display_title (for example code-mower-local-audit) and the workflow identity in name plus path. audit_publication.verify_run incorrectly requires display_title == WORKFLOW_NAME, so publication always fails before creating a reservation.

The fresh dedicated runner also exposed two setup gaps: the source checkout needs the package's declared Python runtime dependencies through a stable CODE_MOWER_PYTHON, and the optional metadata-upload step invokes code_mower.cli without restoring the support checkout's src path.

Scope

  • Validate immutable publication identity using the API's workflow name, trusted workflow path, event, repository, default branch, run attempt and SHA. Do not weaken any existing source seal, exact-head, receipt, replay, identity or digest checks.
  • Add realistic regression fixtures where repository-dispatch display_title is the event type and name is the workflow name; reject wrong workflow names and paths.
  • Make the metadata-upload step import the default-branch support package explicitly.
  • Update the local audit runner guide with a stable Python 3.12+ environment containing Code Mower's declared runtime dependencies, configured through CODE_MOWER_PYTHON, and a runner-job preflight. Keep credentials and provider output private.
  • Regenerate owned workflow/package artifacts as required and validate with focused tests plus relevant CI.

Delivery

Use one Code Mower Codex writer and an independent Claude exact-head review. Produce a focused PR, resolve all P0/P1/P2 findings, pass CI and the authoritative gate, then merge. No provider rerun, Slack/provider canary, release, deployment or credential change is part of this issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions