Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .github/workflows/perf_gates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ jobs:
# ~144-case pack from Appendix E.10 once an explicit pack/file flag exists in the
# bench helper; current workflow still uses the default checked-in pack.
- name: Run benchmark suite and compare (Nightly mode)
# The nightly benchmark is report-only per config/ci/benchmark-eval-contract.json.
# Keep its artifacts and allow the downstream diagnostic gates to run when
# hosted-runner timing jitter crosses the comparison threshold.
continue-on-error: true
run: npm run bench:ci:nightly

- name: Run WS19 SLO threshold gate (index/search family)
Expand Down
3 changes: 3 additions & 0 deletions .github/workflows/required-lane-catch-rate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ permissions:
jobs:
required_lane_catch_rate:
runs-on: ubuntu-latest
env:
CE_RETRIEVAL_PROVIDER: local_native
CONTEXT_ENGINE_OFFLINE_ONLY: '1'
steps:
- uses: actions/checkout@v4

Expand Down
7 changes: 6 additions & 1 deletion scripts/ci/generate-retrieval-quality-report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -693,8 +693,13 @@ function toWorkspaceRelativeGlob(workspace: string, filePath: string): string |

function buildOfflineEvalExcludePaths(args: CliArgs): string[] {
const exclude = new Set<string>([
'artifacts/bench/**',
'artifacts/**',
'evals/**',
'config/ci/frozen-corpora/**',
'**/*.test.*',
// The holdout judgments target source files. Keep checked-in evidence,
// corpora, and snapshots from outranking those source paths for ops-style
// queries that intentionally contain terms such as "report" or "metrics".
]);

for (const candidate of [args.fixturePackPath, args.holdoutArtifactPath, args.outPath]) {
Expand Down
7 changes: 6 additions & 1 deletion tests/ci/generateRetrievalQualityReport.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ describe('scripts/ci/generate-retrieval-quality-report.ts', () => {
fs.rmSync(tmp, { recursive: true, force: true });
});

it('excludes generated artifacts and test files from offline retrieval eval ranking', () => {
it('excludes generated artifacts, JSON files, and test files from offline retrieval eval ranking', () => {
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'ce-quality-report-excludes-'));
const workspace = path.join(tmp, 'workspace');
const fixturePath = path.join(workspace, 'config', 'ci', 'retrieval-quality-fixture-pack.json');
Expand All @@ -238,6 +238,10 @@ describe('scripts/ci/generate-retrieval-quality-report.ts', () => {
'',
].join('\n')
);
writeJson(path.join(workspace, 'config', 'ci', 'frozen-corpora', 'nightly-corpus.json'), {
query: 'buildProbeFailureMessage BENCH_SUITE_ALLOW_SCAN_FALLBACK',
target_path: 'config/ci/frozen-corpora/nightly-corpus.json',
});

writeJson(fixturePath, {
holdout: {
Expand Down Expand Up @@ -295,6 +299,7 @@ describe('scripts/ci/generate-retrieval-quality-report.ts', () => {
expect(artifact.offline_eval.aggregate_metrics.p_at_1).toBe(1);
expect(artifact.offline_eval.cases[0].actual_paths[0]).toBe('src/benchSuiteModePolicy.ts');
expect(artifact.offline_eval.cases[0].actual_paths).not.toContain('tests/ci/benchSuiteModePolicy.test.ts');
expect(artifact.offline_eval.cases[0].actual_paths).not.toContain('config/ci/frozen-corpora/nightly-corpus.json');
expect(artifact.offline_eval.cases[0].actual_paths).not.toContain('artifacts/bench/retrieval-quality-report.json');

fs.rmSync(tmp, { recursive: true, force: true });
Expand Down
Loading