Dataset refresh: open draft PR with per-eval validation links#741
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…PRs) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
COPILOT_PAT5 returns 401 Bad credentials; use a dedicated PR token secret instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ty ids Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Pulled the branch and read through the workflow + the two new scripts. Overall this looks solid — the guards around the irreversible branch delete, the gh retries, and the idempotent create/update are all nicely done. A few things I'd want to sort out before this goes in: 1. The whole thing hinges on 2. The 3. A same-week re-run that fails could kill an already-good PR. The branch is per ISO week. If run #1 opens a draft PR with passing entries, and a later same-week run happens to fail everything, the summarize step deletes the branch and closes that good PR. Maybe skip the delete if there's already an open PR pointing at the branch? 4. Description vs. behavior. The write-up says the collect job stays lightweight and validation runs in parallel, but the implementation actually blocks and polls for up to ~4h40m. That's fine cost-wise for a weekly job, but worth updating the description so it matches the wait-then-prune flow. Also Couple of nits, not blockers:
Happy to pair on #2/#3 if useful. |
… PR, headroom - results-determinate now requires >=1 job matching a collected instance id (empty matrix / name drift => indeterminate => keep branch) - 0-passed delete now skipped when an open PR already points at the branch - trim validation wait budget 280->270 for timeout headroom; drop redundant -ne 'null' guard Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Thanks for the careful read — pushed fixes for the substantive points. 2. 3. Same-week re-run could close a good PR. Fixed. The 0-passed branch-delete now runs only when there's no open PR pointing at the branch; if one exists we keep the branch (and write the failure summary) rather than auto-closing something under review. 1. Everything hinges on 4. Description vs. behavior + timeout. Updated the PR description to the wait-then-prune flow (it does block and poll, by design, so failed entries don't reach a reviewer). Trimmed the wait budget 280→270 (~4h30m) for more headroom under Nits: dropped the redundant |
|
Running a new smoke test on this. |
What & why
Ships the semi-automated dataset refresh from work item 632829: keep BC-Bench current and resist contamination, with a human in the loop.
Haoran's
collect-and-screenjob already screens merged BCApps PRs and collects passing candidates onto a per-ISO-week branchdataset/week-XX. This PR turns that branch into a reviewed, validated draft PR.Flow (wait → validate → prune → PR)
dataset/bcbench.jsonl+dataset/problemstatement, pushdataset/week-XX.dataset-validationon the branch and block, polling until it completes (~4h30m budget). Note: the collect job now waits on validation rather than running in parallel — this is intentional so failed entries never reach a human.job.name == instance_id).successfrom the branch (remove JSONL line + problemstatement dir, amend + force-push) — so the PR diff contains only entries that passed the fail→pass reference check.Validation is reference-based (gold patch, no agent), so this filter removes malformed/unbuildable entries only — it does not select by agent difficulty and does not skew eval results.
Changes
scripts/Collect-And-Screen.ps1—-CollectedFileemits collected entries as JSON.scripts/New-DatasetPrBody.ps1— two-section (Included/Excluded) body by validation conclusion.scripts/Remove-DatasetEntries.ps1— prune entries by instance-id..github/workflows/collect-and-screen.yml— wait/prune/branch logic,pull-requests: write, draft-PR create/update.Operational requirement
The org blocks
GITHUB_TOKENfrom opening PRs, so the PR step usesGH_TOKEN: ${{ secrets.DATASET_PR_TOKEN || secrets.GITHUB_TOKEN }}. ADATASET_PR_TOKENsecret (Contents + Pull requests: write) has been provisioned.Validation
microsoft__BCApps-9316, waited for validation (passed), pruned nothing, and opened draft PR Dataset refresh: week 29 candidates from microsoft/BCApps #742 with the ✅ Included section and a per-eval job deep-link — confirmingjob.name == instance_idmatching end-to-end.