Skip to content

ci: give conformance explicit timeout budgets - #5073

Merged
maphew merged 1 commit into
gastownhall:mainfrom
ecuthiell:fix/conformance-explicit-timeout-upstream
Jul 28, 2026
Merged

ci: give conformance explicit timeout budgets#5073
maphew merged 1 commit into
gastownhall:mainfrom
ecuthiell:fix/conformance-explicit-timeout-upstream

Conversation

@ecuthiell

Copy link
Copy Markdown
Contributor

ci: give conformance explicit timeout budgets

Fixes #5070

What

  • Give the embedded-Dolt reference oracle an explicit 30-minute Go test
    timeout.
  • Preserve the end-to-end CLI tier's existing ten-minute behavior explicitly.
  • Add a 45-minute outer timeout to the standalone Conformance job.
  • Add black-box tests for both exact Go argument vectors and for nonzero exit
    propagation from either tier.

Why

The standalone entrypoint inherited Go's ten-minute default even though the
embedded oracle regularly needs longer and the dedicated conformance jobs
already budget 30 minutes. PR #4979 run 29973997194 timed out at exactly ten
minutes while the same merge commit passed in the explicitly budgeted
conformance lane.

The three deadlines are intentionally nested:

  • Tier 1: 30 minutes for the long-running embedded oracle.
  • Tier 2: 10 minutes, preserving its prior implicit behavior.
  • Workflow: 45 minutes for both tiers plus setup and teardown.

The workflow placement is not a platform claim: these relative timeout and
failure-propagation semantics are host-independent. The exact-head standalone
Conformance result remains the required publication-time execution proof.

Validation

Exact candidate 131c17fdfcc5f814b198292421a36917e2e811c9 passed:

  • black-box, NUL-delimited argv assertions for the exact 30m and 10m Go calls;
  • failure-propagation falsifiers for Tier 1 and Tier 2;
  • focused, default, and integration Go tests;
  • real Go command grammar checks;
  • Bash syntax, ShellCheck, actionlint, golangci-lint, gofmt, and
    git diff --check;
  • independent contract-centred review of the exact candidate.

The fresh exact-head Conformance / Storage backend conformance (embedded Dolt oracle) pull-request job remains mandatory after publication.


codex-tui-gpt-5.6-sol-ultra on behalf of Ewen Cuthiell

The shared conformance entrypoint inherited Go's 10-minute default even though the embedded oracle regularly needs longer and dedicated jobs already budget at least 30 minutes. Give Tier 1 the maintained 30-minute budget, make Tier 2's existing 10-minute behavior explicit, and bound the outer workflow at 45 minutes.

Test the exact Go argv, failure propagation from both tiers, and the outer workflow budget without sleeping through the real deadlines.

Agent-Signature: codex-tui-gpt-5.6-sol-ultra on behalf of Ewen Cuthiell
@ecuthiell ecuthiell closed this Jul 26, 2026
@ecuthiell ecuthiell reopened this Jul 26, 2026

@maphew maphew left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The three-tier nesting (30m oracle / 10m e2e / 45m outer) is exactly right, and citing the #4979 run that timed out at precisely the implicit 10m default made this trivially verifiable. The black-box tests pinning the exact argument vectors give the budgets teeth — future editors can't silently drop a -timeout — at the acceptable cost of those tests needing an update whenever conformance.sh's go invocations change shape. Approving; the patrol will merge on green.

claude-fable-5-medium on behalf of maphew

@maphew maphew added the triaged Issue has been reviewed and responded to label Jul 27, 2026
@maphew
maphew merged commit 4bcea42 into gastownhall:main Jul 28, 2026
139 of 160 checks passed
maphew added a commit that referenced this pull request Jul 28, 2026
…p entries (#5115)

* fix(preflight): classify status checks latest-per-name, not raw rollup entries

statusCheckRollup keeps every check run on the head SHA, including runs
from cancelled or superseded check suites. A head whose earlier suite was
cancelled carries stale CANCELLED/FAILURE entries forever next to the
fresh green re-runs of the same checks, so preflight's raw count reports
'N status check(s) failed or require action' while GitHub itself says
CLEAN — permanently blocking autonomous merges of green PRs (observed on
#5073/#5074/#5076: 20 stale cancelled runs plus one stale gate failure
alongside 80 green checks; each needed a manual merge).

Collapse the rollup to the most recent entry per check name/context
(completedAt, else startedAt/createdAt) before classifying, mirroring
GitHub's own latest-per-name mergeability semantics. A genuinely failing
or pending latest run still blocks; regression-tested both ways in the
fake-gh harness, which now takes an injectable rollup via PR_ROLLUP.

Agent-Signature: claude-fable-5-high on behalf of maphew
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P3JtQ3ukoVmfg6LCKcKBBh

* fix(preflight): keep independent checks separate; handle gh zero-time exports

Cross-vendor review findings on the latest-per-name dedupe:

- Group by (__typename, workflowName, name/context), not name alone. A
  commit status and a check run sharing a name are independent required
  gates, and identically named jobs in different workflows must not
  collapse into one entry where a green run could mask the other
  workflow's red one.
- gh exports absent CheckRun times as the Go zero time (0001-01-01...),
  which defeated the // fallback chain. Normalize zero/null times and
  pick the max of completed/started/created, so a fresh in-progress
  rerun supersedes an old completed failure and reports as pending.

Regression tests for all three cases.

Agent-Signature: claude-fable-5-high on behalf of maphew
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P3JtQ3ukoVmfg6LCKcKBBh

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

triaged Issue has been reviewed and responded to

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Standalone conformance gate inherits Go's 10-minute timeout

2 participants