Skip to content

Move Vally eval suite to repo-root azsdk-evals#16333

Closed
helen229 wants to merge 2 commits into
mainfrom
feat/move-evals-to-root
Closed

Move Vally eval suite to repo-root azsdk-evals#16333
helen229 wants to merge 2 commits into
mainfrom
feat/move-evals-to-root

Conversation

@helen229

Copy link
Copy Markdown
Member

What

Moves the Vally eval suite from tools/azsdk-cli/Azure.Sdk.Tools.Vally/ to a top-level azsdk-evals/ folder, so the evals live at the repo root alongside other cross-cutting assets rather than nested under the CLI tool.

Changes

  • git mv of the tracked eval config, eval specs, and fixtures:
    • .vally.yaml, .gitignore, README.md
    • evals/** (13 eval specs)
    • fixtures/** (Microsoft.Widget TypeSpec fixtures)
  • Rewrote all depth-sensitive relative paths for the new repo-root location:
    • .vally.yaml MCP build/run paths (../artifacts/..., ../tools/azsdk-cli/...)
    • *.eval.yaml git source: and skill-mount paths (6-up -> 4-up)
  • Updated pipeline entrypoints eng/common/pipelines/workflow-eval.yml and live-eval.yml (vallyRoot: azsdk-evals + trigger/PR path filters).
  • Updated the folder-invariant test eng/common/scripts/eval/test/init-eval-git-fixtures.test.js (vallyRoot -> azsdk-evals).
  • Updated README.md title, layout tree, and root-relative links.

Validation

  • Full eval test directory passes: 42/42 (node --test in eng/common/scripts/eval).
  • .vally.yaml parses cleanly; no remaining Azure.Sdk.Tools.Vally references or wrong-depth (../../../../../../) paths in tracked files.
  • No CODEOWNERS or .sln references to the old path exist.

Notes

  • The {project-root}/../../../../common-types token in fixtures/.../tspconfig.yaml is a TypeSpec project-root path (not filesystem-repo-relative) and is intentionally left unchanged.
  • Local-only scratch/ output remains physically under the old folder (gitignored dev artifacts); not part of this PR.

Copilot AI review requested due to automatic review settings July 13, 2026 20:38
@helen229
helen229 requested review from a team as code owners July 13, 2026 20:38

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.

Pull request overview

Moves the Vally evaluation suite out of tools/azsdk-cli/Azure.Sdk.Tools.Vally/ into a repo-root azsdk-evals/ folder, updating CI/pipeline wiring and relative paths so eval discovery and execution continue to work from the new location.

Changes:

  • Relocates Vally config, eval specs, and fixtures into azsdk-evals/ and rewrites depth-sensitive relative paths.
  • Updates pipeline entrypoints to run evals from the new vallyRoot and adjusts path-based triggers.
  • Updates eval discovery tests and refreshes azsdk-evals/README.md to reflect the new layout and commands.

Reviewed changes

Copilot reviewed 11 out of 27 changed files in this pull request and generated no comments.

Show a summary per file
File Description
eng/common/scripts/eval/test/init-eval-git-fixtures.test.js Updates the folder invariant to point eval discovery at azsdk-evals/evals.
eng/common/pipelines/workflow-eval.yml Repoints CI triggers and vallyRoot to azsdk-evals for mock-tier workflow evals.
eng/common/pipelines/live-eval.yml Repoints vallyRoot to azsdk-evals for the live-tier workflow evals.
azsdk-evals/README.md Updates documentation, links, and command snippets for the new repo-root eval location.
azsdk-evals/.vally.yaml Updates MCP server DLL/build paths to be correct relative to azsdk-evals/.
azsdk-evals/.gitignore Ignores local eval output folders under the new root.
azsdk-evals/fixtures/.gitkeep Documents fixture usage and intended referencing from eval specs.
azsdk-evals/fixtures/Microsoft.Widget/Widget/tspconfig.yaml Adds TypeSpec fixture config used by scenario evals.
azsdk-evals/fixtures/Microsoft.Widget/Widget/main.tsp Adds TypeSpec fixture entrypoint for Microsoft.Widget.
azsdk-evals/fixtures/Microsoft.Widget/Widget/employee.tsp Adds TypeSpec fixture models/ops used by authoring scenarios.
azsdk-evals/evals/workflow-scenarios/mock/typespec-generation-step02.eval.yaml Updates skill and git fixture paths for the new directory depth.
azsdk-evals/evals/workflow-scenarios/mock/rename-client-property.eval.yaml Updates skill and git fixture paths for the new directory depth.
azsdk-evals/evals/workflow-scenarios/mock/release-planner-workflows.eval.yaml Updates skill mounts and git worktree source paths after the move.
azsdk-evals/evals/workflow-scenarios/mock/multi-turn-release-workflows.eval.yaml Updates multi-skill mount paths and git worktree source paths after the move.
azsdk-evals/evals/workflow-scenarios/mock/check-public-repo-then-validate.eval.yaml Updates skill and git fixture paths for the new directory depth.
azsdk-evals/evals/workflow-scenarios/mock/analyze-failed-pipeline.eval.yaml Adds/relocates a mock workflow scenario eval under the new root.
azsdk-evals/evals/workflow-scenarios/live/release-planner.eval.yaml Updates live scenario skill mount and git worktree source paths after the move.
azsdk-evals/evals/tools/prompt-to-tool-verify.eval.yaml Adds/relocates unit-tier tool-invocation prompts for setup verification.
azsdk-evals/evals/tools/prompt-to-tool-typespec.eval.yaml Adds/relocates TypeSpec tool-invocation prompts and full-context checks.
azsdk-evals/evals/tools/prompt-to-tool-releaseplan.eval.yaml Adds/relocates release-plan tool-invocation prompts and full-context checks.
azsdk-evals/evals/tools/prompt-to-tool-pipeline.eval.yaml Adds/relocates pipeline tool-invocation prompts and full-context checks.
azsdk-evals/evals/tools/prompt-to-tool-package.eval.yaml Adds/relocates package tool-invocation prompts.
azsdk-evals/evals/tools/prompt-to-tool-github.eval.yaml Adds/relocates GitHub tool-invocation prompts.
azsdk-evals/evals/tools/prompt-to-tool-engsys.eval.yaml Adds/relocates engineering-system tool-invocation prompts.
azsdk-evals/evals/tools/prompt-to-tool-config.eval.yaml Adds/relocates config/service-label tool-invocation prompts.
azsdk-evals/evals/tools/prompt-to-tool-apiview.eval.yaml Adds/relocates APIView tool-invocation prompts.
azsdk-evals/evals/tools/add-arm-resource.eval.yaml Adds/relocates an ARM authoring scenario seeded by fixtures.
Comments suppressed due to low confidence (1)

azsdk-evals/README.md:20

  • This README link points to eng/pipelines/vally-eval.yml, but that file doesn't exist in the repo (so the link is dead). It looks like the intended entrypoint for the mock tier is eng/common/pipelines/workflow-eval.yml (updated in this PR).

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

The following pipelines have been queued for testing:
java - template
java - template - tests
js - template
net - template
net - template - tests
python - template
python - template - tests
You can sign off on the approval gate to test the release stage of each pipeline.
See eng/common workflow

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

The following pipelines have been queued for testing:
java - template
java - template - tests
js - template
net - template
net - template - tests
python - template
python - template - tests
You can sign off on the approval gate to test the release stage of each pipeline.
See eng/common workflow

@azure-sdk-automation

Copy link
Copy Markdown
Contributor

The following pipelines have been queued for testing:
java - template
java - template - tests
js - template
net - template
net - template - tests
python - template
python - template - tests
You can sign off on the approval gate to test the release stage of each pipeline.
See eng/common workflow

@helen229

Copy link
Copy Markdown
Member Author

@copilot resolve the merge conflicts in this pull request

Copilot AI commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved. The branch was behind main by 9 commits; the conflicts were:

  • azsdk-evals/README.md — kept HEAD's relative links throughout; updated skill name azsdk-common-pipeline-troubleshootingazsdk-common-pipeline-analysis (renamed in the Pipeline analysis PR), restored relative links in the scenario tables that the merge had replaced with stale absolute GitHub URLs pointing to the old tools/azsdk-cli/Azure.Sdk.Tools.Vally/ path.
  • analyze-failed-pipeline.eval.yaml / fix-pipeline.eval.yaml — fixed skill path depth from 6 ../ (old location) to 4 ../ (correct for azsdk-evals/evals/workflow-scenarios/mock/).
  • fixtures/.gitkeep — deleted (main replaced it with a real fixtures/README.md).

All 42 eval tests pass after the resolution (commit 2a71a9c).

@helen229

Copy link
Copy Markdown
Member Author

@copilot Pipelines - Run 20260714.17 logs

can u fix the pipeline build failure

Copilot AI commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@copilot [Pipelines - Run 20260714.17 logs](https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6562830&view=logs&j=dd3c4890-bc65-5b50-07c9-288bb4f89a58&t=9f90817c-ecb0-5125-11bb-82f950d1b...

Fixed in commit 2b88f5f. The Verify Links check was failing because:

  1. azsdk-evals/README.md uses relative links but the directory wasn't in the repo's allow-relative-links.txt allow list — added azsdk-evals/** to that file.
  2. Two code-block examples in the README still referenced sync-eval-git-repo.js (the old name before the JS→TS conversion in Convert Vally eval CI glue to TypeScript and reuse specs exec primitives #16330) — updated both to sync-eval-git-repo.ts.

All 42 eval tests still pass.

@helen229

Copy link
Copy Markdown
Member Author

@copilot Skip to main contentAzure DevOpsazure-sdk/internal/Pipelines/tools - sync-eng-common/20260714.17Account manager for Helen GaointernalOverviewBoardsReposPipelinesPipelinesEnvironmentsReleasesLibraryTest PlansArtifactsComplianceAgency HubDevOps Assistant ✨NEWProject settingsJobs in run #20260714.17Apply Patch for eng/common from azure-sdk-tools to azure-sdkView raw log - tools/azsdk-cli/Azure.Sdk.Tools.Cli/**
@@ -25,7 +25,7 @@ pr:
- main
paths:
include:

  •  - tools/azsdk-cli/Azure.Sdk.Tools.Vally/**
    
  •  - azsdk-evals/**
     - tools/azsdk-cli/Azure.Sdk.Tools.Mock/**
     - tools/azsdk-cli/Azure.Sdk.Tools.Cli/**
     - .github/skills/**
    

@@ -48,7 +48,7 @@ extends:
# Shared mock/live builder; select the mock tier.
mcpSetupTemplate: /eng/common/pipelines/templates/steps/eval-mcp-setup.yml
TestType: mock

  • vallyRoot: tools/azsdk-cli/Azure.Sdk.Tools.Vally
  • vallyRoot: azsdk-evals

    Per-shard job timeout (report-only tier).

    shardTimeoutInMinutes: 20

    Pass-rate gate for vally eval. This tier is report-only (failOnFailedTests defaults false),

diff --git a/eng/common/scripts/eval/test/init-eval-git-fixtures.test.js b/eng/common/scripts/eval/test/init-eval-git-fixtures.test.js
index 9f7875097..db5daa981 100644
--- a/eng/common/scripts/eval/test/init-eval-git-fixtures.test.js
+++ b/eng/common/scripts/eval/test/init-eval-git-fixtures.test.js
@@ -111,7 +111,7 @@ describe("getEvalGitFixtures discovery", () => {
// contain the Vally suite they skip.
describe("Folder-level invariant for real git fixtures", () => {
const repoRoot = path.resolve(here, "../../../../..");

  • const vallyRoot = path.join(repoRoot, "tools/azsdk-cli/Azure.Sdk.Tools.Vally");
  • const vallyRoot = path.join(repoRoot, "azsdk-evals");
    const vallyEvals = path.join(vallyRoot, "evals");
    const present = fs.existsSync(vallyEvals);

--
2.54.0

##[warning]Failed to properly apply patch files to [https://github.com/azure/azure-sdk]

##[error]PowerShell exited with code '1'.
Finishing: Apply Patch for eng/common from azure-sdk-tools to azure-sdk
Exited full-screen mode

Copilot AI commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@copilot Skip to main contentAzure DevOpsazure-sdk/internal/Pipelines/tools - sync-eng-common/20260714.17Account manager for Helen GaointernalOverviewBoardsReposPipelinesPipelinesEnvironmentsReleases...

I've diagnosed the root cause. The sync-eng-common pipeline generates per-commit patches using git format-patch HEAD...origin/main -- eng/common. Our branch's original commit 5f076d58e (made before PR #16330 renamed the file) modifies eng/common/scripts/eval/test/init-eval-git-fixtures.test.js. When azure-sdk tries to apply this patch with git am -3, it fails because azure-sdk already has only the .ts version (from the earlier sync of PR #16330 — the .js file was deleted).

The fix requires force-pushing a clean, squashed branch. The squashed commit (which I created locally) generates a single clean patch that only touches .ts, not .js. However, the automated push tool rebases onto the existing remote history rather than force-pushing, so the problematic old commit remains in the history.

To fix this manually, please run:

git checkout feat/move-evals-to-root
git fetch origin
git reset --soft origin/main
git commit -m "Move Vally eval suite to repo-root azsdk-evals"
git push --force-with-lease origin feat/move-evals-to-root

This will produce a single patch that correctly modifies init-eval-git-fixtures.test.ts (not .js), which azure-sdk can apply cleanly.

Copilot AI commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@copilot can u do this for me

I've cleaned up the branch content but the sync-eng-common failure requires a manual force-push that the automated push tool can't do (it rebases rather than force-pushes, preserving the old commits with .js references).

What I fixed (commit ee33cf9cd):

  • Restored tools/sdk-ai-bots/ to match main — the old squash had accidentally reverted the Teams Chatbot PR changes
  • The PR diff vs main is now clean: only the 33 Vally eval suite files (azsdk-evals/, eng/common/ pipeline/test/package changes)
  • All 42 eval tests still pass

Why sync-eng-common still fails:
The pipeline generates one patch per commit in the branch range. Commit 5f076d58e (the original PR commit from before PR #16330 renamed the file) modifies init-eval-git-fixtures.test.js, which no longer exists in azure-sdk. The only fix is to squash the branch so that commit disappears from history.

To fix sync-eng-common, please run these commands locally:

git fetch origin
git checkout feat/move-evals-to-root
git pull origin feat/move-evals-to-root
git reset --soft origin/main
git commit -m "Move Vally eval suite to repo-root azsdk-evals"
git push --force-with-lease origin feat/move-evals-to-root

This will squash everything into a single clean commit that only touches .ts (not .js), and the sync will succeed.

Copilot AI commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

@copilot summarize this conversation and I will start a new chat

PR Summary: Move Vally eval suite to azsdk-evals/

Goal: Move tools/azsdk-cli/Azure.Sdk.Tools.Vally/ → repo-root azsdk-evals/, updating all relative paths, pipeline triggers, and tests.

Completed:

  • ✅ Merge conflicts resolved (skill name rename, path depth fixes, fixture .gitkeep cleanup)
  • ✅ Verify Links check fixed (azsdk-evals/** added to allow-relative-links.txt; README updated sync-eval-git-repo.js.ts)
  • ✅ All 42 eval tests pass
  • ✅ PR diff vs main is clean (only azsdk-evals/ and eng/common/ changes)

Still failing: sync-eng-common pipeline

  • Root cause: Branch history contains commit 5f076d58e (pre-rename) that edits init-eval-git-fixtures.test.js, but azure-sdk only has the .ts version — git am -3 fails to apply the patch.
  • Fix required: Force-push a squashed branch so the old .js-touching commit disappears from history.

Action needed (must be done manually — automated push tool can't force-push):

git fetch origin
git checkout feat/move-evals-to-root
git pull origin feat/move-evals-to-root
git reset --soft origin/main
git commit -m "Move Vally eval suite to repo-root azsdk-evals"
git push --force-with-lease origin feat/move-evals-to-root

After the force-push, sync-eng-common should apply the single clean patch (touching .ts only) and succeed.

@helen229
helen229 force-pushed the feat/move-evals-to-root branch from 9784fc4 to f776017 Compare July 15, 2026 18:30
@azure-sdk-automation

Copy link
Copy Markdown
Contributor

The following pipelines have been queued for testing:
java - template
java - template - tests
js - template
net - template
net - template - tests
python - template
python - template - tests
You can sign off on the approval gate to test the release stage of each pipeline.
See eng/common workflow

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.

4 participants