Skip to content

Publication-order gate never runs on the direct-push production path #2879

Description

@devantler

🤖 Generated by the Agentic Engineer

Evidence

Raised by Codex against #2848 at e2749af3 and confirmed by reading the workflows.

The publication-order validator is wired into ci.yaml, which triggers on pull_request and
merge_group only
. cd.yaml's documented direct-push recovery path goes from the EKS
authorization job straight into ./.github/actions/deploy-prod, and never invokes the validator.

So a change reaching main by direct push can be dispatched to production without the ordering gate
examining it even once.

Why this is separate from the analyzer work

#2873 and #2870 are about what the guard can see inside a step it inspects. This is about steps it
is never handed. The distinction matters because they fail in opposite directions: hardening the
analyzer does nothing here, and any strengthening of it creates a false sense that the ordering
property is enforced on every path to production when one path is unguarded.

It also caps the value of that work — the guarantee is only as strong as its weakest route, so the
analyzer's ceiling is currently set by this gap rather than by its own precision.

What resolving it looks like

Make the publication validation a check the production deploy actually depends on, rather than a
PR-time check. Either add it to the manual pre-deploy gate in cd.yaml, or make the CD job require
a check that runs it — so the path cannot execute without it.

Acceptance criteria

  • A direct-push production deploy cannot proceed without the publication-order validation running.
  • The recovery path documented in cd.yaml is covered, not just pull_request / merge_group.
  • A regression proof: a deliberately mis-ordered publication reaches the CD path and is refused.

Part of #2627. Related: #2873, #2870, #2848.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

Status
✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions