Skip to content

Harden Every Code preview gate state and signals #394

@cbusillo

Description

@cbusillo

Objective

Make Every Code preview gating durable and precise enough for regular use across repositories.

Finish Line

Preview gating is durable, SHA-aware, auto-review-aware, and cancellable

Current Status

State: Done. PR #400 merged and deployed; Every Code preview gate state is now durable, SHA-aware, timeout-aware, and cancellation-aware.
Next action: None for this slice.
Blocked by: None.
Last verified: 2026-05-07 with PR #400 CI/Security/CodeQL green and Deploy Launchplane run 25509362152 successful on merge commit 14338f2.

Scope

  • Durable pending preview gate records keyed by Every Code request, PR, and head SHA.
  • Check_run/check_suite or equivalent webhook ingestion for faster updates.
  • Auto-review green signal detection once the canonical signal is identified.
  • Timeout and stale-pending handling.
  • Cancellation when source issue or linked PR closes.

Acceptance Criteria

  • Gate state records the request id, repository, issue number, PR URL/number, head SHA, source issue author, readiness status, and timestamps.
  • New commits reset the gate for the new head SHA.
  • Preview label is applied only for the matching green head SHA.
  • Missing or inconclusive checks stay pending until timeout, then become visible as blocked/needs-attention.
  • Source issue/PR close cancels pending gate work.
  • Polling remains as a fallback, but webhooks/check signals drive normal operation when available.
  • Tests cover SHA changes, timeout, missing checks, close cancellation, webhook updates, and polling fallback.

Relationships

Sub-issue of #373.
Builds on PRs #376 and #377.

Validation

Unit tests for records/state transitions plus one live backfill/reconcile smoke.

Decisions

Keep the current polling reconciliation as a resilience fallback rather than replacing it.

Open Questions

  • What exact check name/app/source represents Every Code auto-review green in GitHub data?
  • What timeout is appropriate before a gate becomes blocked?

Metadata

Metadata

Assignees

No one assigned

    Labels

    planDurable planning issueplan:donePlan completed or superseded

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions