Skip to content

Fix skipped BCal aggregation and retired judge model - #925

Closed
martinsrui-msft wants to merge 6 commits into
mainfrom
martinsrui-harden-bcal-evaluations
Closed

martinsrui-msft wants to merge 6 commits into
mainfrom
martinsrui-harden-bcal-evaluations

Conversation

@martinsrui-msft

@martinsrui-msft martinsrui-msft commented Oct 5, 2026 •

Copy link
Copy Markdown
Collaborator

Scheduled BCal runs skipped final aggregation when a dataset entry run failed. That left no completeness summary and made evaluation data appear to disappear. NL2AL scoring also used the retired GPT-4.1 ShortCo judge.

  • Always aggregate artifacts and report expected, produced, missing, unexpected, and duplicate results.
  • Preserve diagnostics, then fail incomplete runs before scoring, external storage, or leaderboard publication.
  • Isolate artifacts by rerun attempt and switch LMChecklist/NL2AL scoring to gpt-56-reasoning-nano-luna with separate judge baselines.
  • Pin and cache BcContainerHelper once per workflow.

Verification

Check Result
Focused tests 130 passed
Full test suite 1,094 passed, 1 skipped, 1 deselected
Pre-commit Passed
Hosted PR CI 17/17 passed

Preserve and report partial matrix results, add transient dependency retries, make storage retries idempotent, and verify scheduled Kusto ingestion.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread src/bcbench/bceval_runner.py Fixed
@github-code-quality

github-code-quality Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: Python

Python / code-coverage/pytest

The overall line coverage in commit 59bc801 in the martinsrui-harden-bc... branch is 85%. The line coverage in commit 973eb05 in the main branch is 86%.

Show a line coverage summary of the most impacted files.
File main 973eb05 martinsrui-harden-bc... 59bc801 +/-
src/bcbench/eva...st_implement.py 65% 53% -12%
src/bcbench/evaluate/bugfix.py 47% 36% -11%
src/bcbench/eva...stgeneration.py 43% 37% -6%
src/bcbench/commands/result.py 93% 89% -4%
src/bcbench/results/display.py 93% 92% -1%
src/bcbench/com...ands/dataset.py 25% 26% +1%
src/bcbench/exceptions.py 71% 74% +3%
src/bcbench/ope...c_operations.py 0% 72% +72%
src/bcbench/res...completeness.py 0% 96% +96%
src/bcbench/ope...t_operations.py 0% 97% +97%

Updated October 06, 2026 12:25 UTC

@martinsrui-msft
martinsrui-msft marked this pull request as draft October 5, 2026 14:45
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@martinsrui-msft
martinsrui-msft marked this pull request as ready for review October 5, 2026 14:53
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@haoranpb
Sun Haoran (haoranpb) requested a balanced review from Copilot October 5, 2026 15:56

Copilot AI 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.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Copilot review overview

Review effort: Lite
Findings: 1 High severity · 3 Medium severity

Open (4)
What changed in this PR

Hardens scheduled BCal evaluation ingestion by adding matrix completeness tracking, ensuring aggregation/diagnostics are preserved across shard failures, and preventing scoring/storage/leaderboard updates for partial runs.

Changes:

  • Add completeness metadata generation/export (JSON + per-result metadata) and a result require-complete CLI gate.
  • Update GitHub Actions workflows to always summarize after failures, isolate artifacts per run_attempt, and block bceval/leaderboard unless complete.
  • Pin/cache BcContainerHelper and restore narrowly-scoped CAPI retry logic; update LMChecklist judge model pinning and aggregation identity.
File Description
tests/​test_review_workflows.py Adds workflow regression tests for completeness enforcement and pinned dependency caching.
tests/​test_evaluation_summary.py Updates aggregation tests to keep retired judge baseline runs separated.
tests/​test_completeness.py Introduces unit tests for completeness counting and metadata export.
tests/​test_cli_commands.py Adds integration coverage for completeness persistence and step outputs.
tests/​test_category_command.py Updates expected pinned judge model in generated bceval config.
tests/​test_bcal_capi_bridge.py Adds tests asserting retry only for transient CAPI failures.
src/​bcbench/​results/​summary.py Extends summaries to optionally carry completeness metadata.
src/​bcbench/​results/​display.py Renders completeness in GitHub summaries and adds a completeness-only summary writer.
src/​bcbench/​results/​completeness.py Implements completeness model, persistence, metadata export, and markdown rendering.
src/​bcbench/​results/​bceval_export.py Embeds completeness metadata into each exported bceval JSONL row.
src/​bcbench/​results/​__init__.py Re-exports completeness and the new GitHub completeness summary helper.
src/​bcbench/​commands/​result.py Adds completeness tracking to result summarize and a require-complete gate command.
src/​bcbench/​commands/​dataset.py Adds --count-output for reusable workflows to retrieve entry counts.
src/​bcbench/​agent/​shared/​config.yaml Pins LMChecklist judge model to gpt-56-reasoning-nano-luna.
src/​bcbench/​agent/​bcal/​bc_eval_capi_bridge.py Restores bounded retry for transient CAPI failures with backoff.
CATEGORIES.md Documents pinned judge model and aggregation separation from retired baselines.
.github/​workflows/​summarize-results.yml Always uploads partial diagnostics; blocks scoring/leaderboard on incompleteness; enforces completeness at end.
.github/​workflows/​get-entries.yml Exposes entry count output for downstream completeness enforcement.
.github/​workflows/​bcal-evaluation.yml Adds pinned/cached BcContainerHelper setup, run_attempt-scoped artifacts, and always-run summarization.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/bcal-evaluation.yml
Comment thread src/bcbench/agent/bcal/bc_eval_capi_bridge.py Outdated
Comment thread src/bcbench/results/completeness.py
Comment thread src/bcbench/results/completeness.py
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@martinsrui-msft martinsrui-msft changed the title Harden scheduled BCal evaluation ingestion Fix BCal evaluation ingestion Oct 6, 2026
@martinsrui-msft martinsrui-msft changed the title Fix BCal evaluation ingestion Fix skipped BCal aggregation and retired judge model Oct 6, 2026
martinsrui-msft and others added 2 commits October 6, 2026 13:04
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@martinsrui-msft

Copy link
Copy Markdown
Collaborator Author

Superseded by the replacement native stack:

Together, the two PRs preserve this PR's cumulative patch while separating the concerns for review.

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.

3 participants