Skip to content

docs: add .github/aw/evals.md — BinEval syntax and question decomposition guide - #45833

Merged
pelikhan merged 4 commits into
mainfrom
copilot/create-instructions-file-for-evals
Jul 16, 2026
Merged

docs: add .github/aw/evals.md — BinEval syntax and question decomposition guide#45833
pelikhan merged 4 commits into
mainfrom
copilot/create-instructions-file-for-evals

Conversation

CopilotAI commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

No structured reference existed for the evals frontmatter field introduced in ADR-43641. Workflow authors had no guidance on syntax or how to write effective binary evaluation questions.

New file: .github/aw/evals.md

  • Syntax — shorthand (plain list) and extended form (questions, model, runs-on, per-question model override)
  • BinEval methodology — 4-step process: state the goal → identify observable properties → write falsifiable YES/NO questions → assign model cost
  • Result storageevals.jsonl artifact schema + evals/<workflow-id> git branch persistence
  • Anti-patterns — compound questions, unobservable claims, frontier model overuse, removing evals mid-run
evals:
questions:
- id: scoped_changequestion: Is the implementation limited to the scope described in the issue?
- id: no_unrelated_filesquestion: Does the agent output show that only the expected files were modified?
- id: design_soundquestion: Is the proposed design consistent with established patterns in the codebase?model: gpt-4o # nuanced; override default small modelmodel: small

Housekeeping

  • syntax.md — added evals.md row to the frontmatter schema index
  • agentic_workflows_fallback_aw_files.json — added evals.md to keep offline compilation in sync
  • .github/skills/agentic-workflows/SKILL.md — regenerated to include evals.md in the file list

…guide
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
CopilotAI changed the title Create .github/aw/evals.md with BinEval evals syntax and methodology guidedocs: add .github/aw/evals.md — BinEval syntax and question decomposition guideJul 15, 2026
CopilotAI requested a review from pelikhanJuly 15, 2026 21:59
@pelikhan
pelikhan marked this pull request as ready for review July 15, 2026 22:06
CopilotAI review requested due to automatic review settings July 15, 2026 22:06

CopilotAI 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.

Pull request overview

Adds a BinEval reference for workflow authors and integrates it into offline documentation discovery.

Changes:

  • Documents evals syntax, methodology, storage, and anti-patterns.
  • Links and registers the new reference in documentation indexes.
  • Updates the generated agentic-workflows skill file list.
Show a summary per file
FileDescription
.github/aw/evals.mdAdds the BinEval guide.
.github/aw/syntax.mdLinks the new reference.
.github/skills/agentic-workflows/SKILL.mdRegisters the guide for skill loading.
pkg/cli/data/agentic_workflows_fallback_aw_files.jsonAdds the guide to offline fallback data.

Review details

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

  • Files reviewed: 4/4 changed files
  • Comments generated: 10
  • Review effort level: Medium

Comment thread.github/aw/evals.md
issues:
types: [opened]
engine: copilot
evals:
Comment thread.github/aw/evals.md Outdated
- `model:` — default LLM model for all questions. Use a model alias (`small`, `gpt-4o`) or a full model ID. Defaults to the engine's detection model (typically a small, cost-effective model).
- `runs-on:` — optional runner override for the evals job. Inherits the workflow default when omitted.

Each question object may include its own `model:` field to override the top-level default for that question only.
Comment thread.github/aw/evals.md Outdated

- `questions:` — list of question objects (required in extended form, ≥ 1 entry).
- `model:` — default LLM model for all questions. Use a model alias (`small`, `gpt-4o`) or a full model ID. Defaults to the engine's detection model (typically a small, cost-effective model).
- `runs-on:` — optional runner override for the evals job. Inherits the workflow default when omitted.
Comment thread.github/aw/evals.md Outdated

### 2 — Identify observable properties

Break the goal into properties that a judge can verify from `agent_output.json` and `prompt.txt`:
Comment thread.github/aw/evals.md Outdated

### Artifact

Each run uploads `evals.jsonl` as the `evals` artifact (30-day retention). Each line is a JSON object:
Comment thread.github/aw/evals.md Outdated
Comment thread.github/aw/evals.md Outdated

## Required Permissions

The evals job itself reads artifacts and runs the engine — no extra permissions beyond `contents: read`. The `push_evals_state` job that persists results to a git branch needs:
Comment thread.github/aw/evals.md Outdated
Comment on lines +193 to +198
- id: label_applied
question: Did the agent apply at least one label to the issue?
- id: correct_type
question: Is the applied label appropriate for the issue content described in the prompt?
- id: no_extra_labels
question: Did the agent avoid applying more than two labels?
Comment thread.github/aw/evals.md Outdated
2. **Execute** — an LLM judge runs in a network-restricted sandbox (same engine as the agent job) and answers each question with YES or NO.
3. **Parse** — raw engine output is parsed into per-question records and written to `evals.jsonl`.
4. **Redact** — any credential patterns are removed from the results before upload.
5. **Upload** — `evals.jsonl` is uploaded as the `evals` workflow artifact and optionally persisted to the `evals/<workflow-id>` git branch.
Comment thread.github/aw/evals.md Outdated
Comment on lines +153 to +157
Read results with:

```bash
gh aw audit <run-id> # includes evals section when present
gh aw logs <workflow-name> # aggregates evals.jsonl across recent runs
@github-actions

Copy link
Copy Markdown
Contributor

🤖 PR Triage

FieldValue
Categorydocs
Risklow
Score35 / 100
Actionauto_merge

Score breakdown: Impact 15 + Urgency 8 + Quality 12

Adds .github/aw/evals.md reference guide and updates SKILL.md and syntax.md. Pure documentation addition — no behavior change. CI passing (30/30 checks green). Auto-merge candidate when CI clears.

Run §29462479491

Generated by 🔧 PR Triage Agent · 189.6 AIC · ⌖ 5.52 AIC · ⊞ 5.6K ·

@github-actions

Copy link
Copy Markdown
Contributor

Hey @app/copilot-swe-agent 👋 — great addition! The new evals.md reference fills a real gap for workflow authors working with the evals frontmatter field. The coverage of syntax variants, BinEval methodology, result storage schema, and anti-patterns is thorough and well-structured.

This PR looks ready for review. No issues found — it's focused, well-described, and appropriate for a pure documentation change.

Generated by ✅ Contribution Check · 124.7 AIC · ⌖ 9.92 AIC · ⊞ 6.2K ·

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot please run the pr-finisher skill, address any unresolved review feedback, and rerun checks once the branch is up to date.

Generated by 👨‍🍳 PR Sous Chef · 9.13 AIC · ⌖ 6.02 AIC · ⊞ 5.1K ·
Comment /souschef to run again

CopilotAIand others added 3 commits July 16, 2026 02:02
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
- Remove prompt.txt from Setup step: run_evals.cjs only reads agent_output.json
- Remove "optionally" from Upload step: push_evals_state always runs when evals declared
- Add safe-outputs prerequisite note to shorthand example; agent_output.json
is only included in agent artifact when safe-outputs is declared
(compiler_yaml_post_agent.go:65-69)
- Fix shorthand example questions to reference agent output, not issue context
- Fix runs-on default to ubuntu-latest (not workflow default)
- Remove per-question model override docs (marshalEvalsQuestions drops Model field)
- Fix observable properties preamble to drop prompt.txt reference
- Fix assign-question-cost example to use top-level model override only
- Fix artifact retention: follows repo/org settings, not fixed 30 days
- Fix JSON schema to match actual run_evals.cjs records (model, runid, not
run_id/workflow_id)
- Fix CLI examples to show actual --artifacts evals / --evals flags
- Fix permissions to mention conditional copilot-requests:write/id-token:write
- Fix minimal example label questions to say "requested via safe-output action"
(evals runs parallel with safe_outputs, cannot verify applied labels)
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>
…ls.md
Co-authored-by: gh-aw-bot <259018956+gh-aw-bot@users.noreply.github.com>

CopilotAI commented Jul 16, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot please run the pr-finisher skill, address any unresolved review feedback, and rerun checks once the branch is up to date.

...

All review feedback has been addressed in the latest commits. Here's a summary of what was fixed in evals.md:

  • safe-outputs prerequisite (line 35): added a prerequisite callout and safe-outputs: to the shorthand example — agent_output.json is only included in the agent artifact when safe-outputs is declared
  • per-question model override (line 72): removed — marshalEvalsQuestions drops the Model field and resolveEvalsExecutionModel only reads the top-level evals.model
  • runs-on default (line 70): corrected to ubuntu-latest (not workflow default) — matches buildEvalsJob
  • agent_output.json only (line 88): removed prompt.txt from the observable context — run_evals.cjs only reads agent_output.json in buildEvalPrompt
  • artifact retention (line 143): removed the hardcoded "30-day" claim — upload step sets no retention-days
  • JSON schema (line 146): updated to match actual records written by run_evals.cjs: id, question, answer, model, timestamp, runid
  • CLI commands (line 153-157): replaced fabricated descriptions with actual flags (--artifacts evals / --evals)
  • permissions (line 164): documented that copilot-requests: write and id-token: write are conditionally added alongside the base contents: read
  • label eval questions (line 193-198): rephrased from "applied" to "requested via safe-output action" — evals runs in parallel with safe_outputs and can only inspect the agent's requested actions
  • branch persistence (line 19): removed "optionally" — buildPushEvalsStateJob always runs when evals: is declared

@gh-aw-bot

Copy link
Copy Markdown
Collaborator

\n@copilot please run the skill, address the unresolved review feedback (newest first: copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment); copilot-pull-request-reviewer: #45833 (comment)), and rerun checks once the branch is up to date.\n\n> Generated by \ud83c\udf73 PR Sous Chef

Generated by 👨‍🍳 PR Sous Chef · 4.65 AIC · ⌖ 9.69 AIC · ⊞ 7.5K ·
Comment /souschef to run again

@pelikhan
pelikhan merged commit 52e9517 into mainJul 16, 2026
29 checks passed
@pelikhan
pelikhan deleted the copilot/create-instructions-file-for-evals branch July 16, 2026 04:23
@github-actions

Copy link
Copy Markdown
Contributor

🎉 This pull request is included in a new release.

Release: v0.82.10

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@gh-aw-bot@pelikhan