Skip to content

Audit publication: emit bounded refusal diagnostics for hosted mismatches #1028

Description

@jeffhuber

Part of #1025 and blocks #1024.

Problem

The repository-dispatch publisher still fails before reserving a comment after #1026, while a read-only replay of its API-side checks against the same sealed #1024 metadata succeeds. The workflow intentionally collapses every exception to one generic line, so the remaining GitHub-hosted event/environment mismatch cannot be identified without repeated guesses.

Observed failed exact-default-branch publication runs: 35308727611 and metadata-only replay 35308957904. No comment/reservation was written. Source audit 35308536301 produced an exact-head Claude PASS and successful seal for PR #1024 head 942f1b37d7e1d3f1b404af792e7c41e3ace361f2.

Scope

  • Give each publication refusal a stable, non-sensitive diagnostic code, or safely expose only allowlisted literal Refused reasons. Continue collapsing all other exceptions to a generic internal refusal.
  • Prove with AST/runtime tests that submitted payloads, paths, response bodies, tokens, URLs, identities and dynamic exception text can never enter the diagnostic.
  • Preserve all fail-closed checks, source seals, exact-head checks, replay protection, receipt binding and comment cleanup.
  • Keep source/tools helper bytes synchronized and package/release guards current.
  • Use the diagnostic to identify and fix the remaining hosted mismatch if the evidence makes the correction unambiguous within this PR; otherwise stop after producing a precise bounded code for the next replay.

Acceptance

  • A failed publisher emits one stable safe reason code and no submitted data.
  • Non-Refused exceptions remain generic.
  • Adversarial tests cover malicious/dynamic reason text and payload/token leakage.
  • Existing publication, attestation, replay, exact-head and workflow tests pass.
  • Independent exact-head audit, normal CI and gate evidence are recorded.

No provider rerun, Slack canary, deployment or package publication belongs to this issue. Reuse the already sealed #1024 metadata for the post-merge diagnostic replay.

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