Skip to content

FE-1266: Skip comparison oracles for non-runtime PRs - #378

Merged
kostandinang merged 1 commit into
nextfrom
ka/fe-1266-comparison-oracle-gate
Jul 24, 2026
Merged

FE-1266: Skip comparison oracles for non-runtime PRs#378
kostandinang merged 1 commit into
nextfrom
ka/fe-1266-comparison-oracle-gate

Conversation

@kostandinang

@kostandinang kostandinang commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Why

Comparison oracles add several minutes to every CI run even when a pull-request diff cannot affect runtime behavior.

What

  • Split slow tests into core and comparison lanes.
  • Skip comparison oracles only for complete pull-request diffs inside a closed non-runtime allowlist.
  • Fail open for unknown evidence and always run every retained test in the merge queue.
  • Reclassify the Prospect workspace oracle as slow and lock routing with selector, inventory, and workflow contracts.

How to test

  1. Run the focused lane-selector, inventory, and workflow contract tests and confirm non-runtime diffs skip only the comparison lane while uncertain/runtime diffs retain it.
  2. Run the comparison lane and confirm all five oracle files pass, including the Prospect workspace oracle.

Local npm run verify:full passed: 2,800 tests passed across default, core-slow, and comparison lanes, followed by a successful production build.

Co-authored-by: Cursor <cursoragent@cursor.com>
@cursor

cursor Bot commented Jul 24, 2026

Copy link
Copy Markdown

PR Summary

Medium Risk
Changes which tests run before merge on PRs; a misclassified allowlist could skip comparison oracles, though the design fails open on ambiguity and merge-queue still runs the full suite.

Overview
CI can skip the expensive comparison-oracle lane on pull requests when scripts/ci-test-lanes.mjs classifies the complete base…head diff as docs/memory/changeset-only (closed allowlist). Incomplete, empty, unknown-event, runtime, workflow, lockfile, or cross-boundary rename diffs fail open and still run npm run test:comparison. Merge-group candidates always run comparison tests.

The Test workflow no longer runs a single test:full step: it always runs npm run test + npm run test:slow:core, then runs npm run test:comparison only when the lane selector sets comparison=true. The stable Full gate job is unchanged for branch protection.

Package scripts split slow work into test:slow:core (all .slow tests except execution/end-to-end comparison oracles) and an explicit test:comparison list; test:slow and test:full compose those lanes. The prospect research workspace oracle moves to *.slow.test.ts so it routes into the comparison lane.

Guardrails: table-driven tests for lane selection and git diff paths, comparison-test-inventory.test.mjs for exact oracle membership, and test-workflow.contract.test.mjs for workflow wiring. D1-K in memory/SPEC.md and a scope card document the policy; AGENTS.md / CONTRIBUTING.md describe the new commands and when PR CI may omit comparison oracles.

Reviewed by Cursor Bugbot for commit f1ec7e0. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown
Contributor Author

This stack of pull requests is managed by Graphite. Learn more about stacking.

@kostandinang kostandinang changed the title Version Packages (alpha) (#372) FE-1266: Skip comparison oracles for non-runtime PRs Jul 24, 2026
@kostandinang
kostandinang merged commit 4a8bc61 into next Jul 24, 2026
17 of 23 checks passed
@kostandinang
kostandinang deleted the ka/fe-1266-comparison-oracle-gate branch July 24, 2026 12:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant