You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
debug: v0.31.1 compiler emits different YAML than committed *.lock.yml files generated by PR #861, breaking ado-aw check
Summary
The scheduled Daily safe-output smoke: noop pipeline (ADO org msazuresphere, project AgentPlayground) fails in the "Verify pipeline integrity" step. The committed tests/safe-outputs/noop.lock.yml on main contains an Emit aw_info.json bash step that the publicly-released ado-aw v0.31.1 binary does not reproduce when re-compiling the same source. Both the on-disk lock and the regenerated lock claim version=0.31.1 in their headers, so the integrity check cannot reconcile them.
The same drift very likely affects all 26 lock files touched by #861 "regen ado-aw" — noop.lock.yml is just the first one to be exercised by a scheduled smoke run.
--- tests/safe-outputs/noop.lock.yml (on disk)
+++ tests/safe-outputs/noop.lock.yml (expected from source)
@@ -261,16 +261,6 @@
displayName: "ado-aw"
- bash: |
- set -eo pipefail
-
- mkdir -p "$(Agent.TempDirectory)/staging"
- cat >"$(Agent.TempDirectory)/staging/aw_info.json" <<'AW_INFO_EOF'
- {"agent_name":"Daily safe-output smoke: noop","build_definition_id":"$(System.DefinitionId)","build_id":"$(Build.BuildId)","compiler_version":"0.31.1","engine":"copilot","model":"gpt-5-mini","org":"","repo":"","schema":"ado-aw/aw_info/1","source":"tests/safe-outputs/noop.md","source_branch":"$(Build.SourceBranch)","source_version":"$(Build.SourceVersion)","target":"standalone"}
- AW_INFO_EOF
- displayName: "Emit aw_info.json"
- condition: always()
-
- - bash: |
cat >> "/tmp/awf-tools/agent-prompt.md" << 'SAFEOUTPUTS_EOF'
---
Summary: 0 line(s) added, 10 line(s) removed
Error: Integrity check failed: generated pipeline for 'Daily safe-output smoke: noop' does not match tests/safe-outputs/noop.lock.yml. Re-run `ado-aw compile` to update the pipeline file.
##[error]Bash exited with code '1'.
What I verified
I reproduced this locally on a clean checkout to rule out environmental noise:
Source on main is unchanged from what the build saw.tests/safe-outputs/noop.md does not configure or reference anything that would conditionally enable / disable an aw_info.json emit.
The publicly-released v0.31.1 compiler does not emit the aw_info.json step.
regen ado-aw #861 introduced the step.git log on tests/safe-outputs/noop.lock.yml:
ea16d851 2026-06-05T13:21:52Z regen ado-aw (#861)
9597f35c 2026-05-18T13:43:54Z chore: regenerate all ado-aw workflows with v0.30.1 (#619)
regen ado-aw #861's patch on noop.lock.yml bumps the version pin 0.30.1 → 0.31.1and adds the entire Emit aw_info.json block as a new step.
The failing build started 10 minutes after regen ado-aw #861 merged, so the trigger is unambiguous: the regen committed YAML the integrity check (running the public release) refuses to accept.
--debug-pipeline is not a flag on the released v0.31.1 binary. I tested it; the binary suggests --debug (logging only) and rejects --debug-pipeline. So the drift cannot be explained by "regen ran with --debug-pipeline, integrity check ran without it" against the released artifact.
Likely root cause
The compiler binary that produced PR #861's lock files is not the same binary the public v0.31.1 GitHub release tag ships. It is most likely a build from a commit after the v0.31.1 tag (which added the aw_info.json emit logic) but whose hard-coded version string is still 0.31.1.
This is effectively a versioning hole:
The lock-file header is the only thing ado-aw check uses to assert "this lock matches this compiler version."
If two different codegen behaviors both stamp version=0.31.1, the integrity check has no way to distinguish them, and CI regressions caused by an unreleased-but-tag-named build of the compiler land silently in main.
Impact
All 26 lock files touched by regen ado-aw #861 are likely in the same drift state. The noop smoke just happens to be on a daily schedule, so it was the first to surface the regression.
Every scheduled / manual run of those pipelines will fail at "Verify pipeline integrity" until either:
the lock files are regenerated using whatever release artifact actually corresponds to the published v0.31.1 binary, or
a new release (e.g. v0.31.2) is cut from the compiler revision that regen ado-aw #861 used, and the lock files' headers are bumped to match.
Suggested fixes (out of scope for this report; for maintainer triage)
Bump the version pin whenever codegen changes. Even patch-level codegen changes should bump the version in the lock-file header so ado-aw check reliably catches drift.
Embed the build SHA in the lock header (e.g. version=0.31.1+sha.abcdef0) so unreleased-but-tag-stamped builds are distinguishable.
Gate the regen workflow on --version matching the latest published release, so PRs like regen ado-aw #861 can't be authored using a local build that disagrees with what the integrity check uses.
Re-release (cut a v0.31.2 from the codegen revision that produced regen ado-aw #861) and regenerate all lock files against that public binary.
Local reproduction: Windows 11, ado-aw.exe 0.31.1 downloaded by our scripts/rebuild-pipelines.ps1 from https://github.com/githubnext/ado-aw/releases/download/v0.31.1/ado-aw-windows-x64.exe
Related upstream context: #861 (the regen PR that introduced the drift)
debug: v0.31.1 compiler emits different YAML than committed
*.lock.ymlfiles generated by PR #861, breakingado-aw checkSummary
The scheduled
Daily safe-output smoke: nooppipeline (ADO orgmsazuresphere, projectAgentPlayground) fails in the "Verify pipeline integrity" step. The committedtests/safe-outputs/noop.lock.ymlonmaincontains anEmit aw_info.jsonbash step that the publicly-releasedado-awv0.31.1 binary does not reproduce when re-compiling the same source. Both the on-disk lock and the regenerated lock claimversion=0.31.1in their headers, so the integrity check cannot reconcile them.The same drift very likely affects all 26 lock files touched by #861 "regen ado-aw" —
noop.lock.ymlis just the first one to be exercised by a scheduled smoke run.Failing build
Noop smokerefs/heads/main(commit fetched at build time)manual(re-run shortly after regen ado-aw #861 merged)__default→Agent→Verify pipeline integrity(log id 13)AZS-1ES-L-Playground-ubuntu-22.04Failing log excerpt (verbatim)
What I verified
I reproduced this locally on a clean checkout to rule out environmental noise:
mainis unchanged from what the build saw.tests/safe-outputs/noop.mddoes not configure or reference anything that would conditionally enable / disable anaw_info.jsonemit.aw_info.jsonstep.noop.lock.ymlonmaindoes contain the step (lines around 261–270 per the diff). Both files carry the same header:git logontests/safe-outputs/noop.lock.yml:noop.lock.ymlbumps the version pin0.30.1 → 0.31.1and adds the entireEmit aw_info.jsonblock as a new step.--debug-pipelineis not a flag on the released v0.31.1 binary. I tested it; the binary suggests--debug(logging only) and rejects--debug-pipeline. So the drift cannot be explained by "regen ran with--debug-pipeline, integrity check ran without it" against the released artifact.Likely root cause
The compiler binary that produced PR #861's lock files is not the same binary the public
v0.31.1GitHub release tag ships. It is most likely a build from a commit after thev0.31.1tag (which added theaw_info.jsonemit logic) but whose hard-coded version string is still0.31.1.This is effectively a versioning hole:
ado-aw checkuses to assert "this lock matches this compiler version."version=0.31.1, the integrity check has no way to distinguish them, and CI regressions caused by an unreleased-but-tag-named build of the compiler land silently inmain.Impact
v0.31.2) is cut from the compiler revision that regen ado-aw #861 used, and the lock files' headers are bumped to match.Suggested fixes (out of scope for this report; for maintainer triage)
ado-aw checkreliably catches drift.version=0.31.1+sha.abcdef0) so unreleased-but-tag-stamped builds are distinguishable.--versionmatching the latest published release, so PRs like regen ado-aw #861 can't be authored using a local build that disagrees with what the integrity check uses.v0.31.2from the codegen revision that produced regen ado-aw #861) and regenerate all lock files against that public binary.Environment
msazuresphere/AgentPlaygroundAZS-1ES-L-Playground-ubuntu-22.04ado-aw.exe 0.31.1downloaded by ourscripts/rebuild-pipelines.ps1fromhttps://github.com/githubnext/ado-aw/releases/download/v0.31.1/ado-aw-windows-x64.exe