Skip to content

[Edge Action] Upgrade to stable 2026-10-01 API and preserve update compatibility - #10499

Open
Jean Kim (kestry) wants to merge 6 commits into
Azure:mainfrom
kestry:jeankim-microsoft-edgeaction-2026-10-01-ga
Open

Jean Kim (kestry) wants to merge 6 commits into
Azure:mainfrom
kestry:jeankim-microsoft-edgeaction-2026-10-01-ga

Conversation

@kestry

@kestry Jean Kim (kestry) commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

🤖 PR Validation — ⚠️ Review suggested

Breaking Changes
⚠️ None
⚠️Azure CLI Extensions Breaking Change Test
⚠️edge-action
rule cmd_name rule_message suggest_message
⚠️ 1006 - ParaAdd edge-action execution-filter update cmd edge-action execution-filter update added parameter execution_filter_identifier_header_name
⚠️ 1006 - ParaAdd edge-action execution-filter update cmd edge-action execution-filter update added parameter execution_filter_identifier_header_value
⚠️ 1006 - ParaAdd edge-action execution-filter update cmd edge-action execution-filter update added parameter version_id

Upgrade the edge-action extension from the 2025-09-01-preview API on main to stable API 2026-10-01, and advance the extension from 1.0.0b4 to 1.0.0b5. The extension remains beta/preview; the stable service API does not change its release status.

Changes from main

Area Change
Generated commands Regenerate the existing top-level az edge-action commands for 2026-10-01, align operation response contracts, deserialize the complete version resource returned by code deployment, and update command help/examples.
Execution-filter updates Add optional --version-id, --execution-filter-identifier-header-name, and --execution-filter-identifier-header-value arguments through a registered customization. Retain GET -> PUT, preserve omitted fields, and apply generic update operations after named arguments.
Version-code downloads Move the existing --output-directory/-d argument and file-saving behavior out of generated code into custom.py, registered through commands.py. The option is preserved, not removed. Retain directory creation, ZIP-byte saving, overwrite behavior, and {message, file} output; without the option, retain {name, content}. Report invalid content, unsafe filenames, and file-write errors.
Default-version polling Move the existing swap-default compatibility handling into an operation-specific client outside generated code. Support successful final polling responses with or without a body while retaining --no-wait behavior and propagation of failed/canceled operations.
Regression coverage Expand the existing eight recorded scenarios and add offline customization, pinned-spec, and recording-sanitizer tests. Cover tag replacement/clearing, field preservation, deployment/download results, default-version swaps, independent/combined/generic filter updates, pagination, argument-cache isolation, polling, and failures.
Recording portability Refresh and sanitize recordings for the stable API, enable VCR's JSON-aware request-body matcher, pin the binary-upload fixture's line endings, and validate fractional timestamps consistently on supported Python versions.
Documentation Update customer-facing usage in README.md and release notes in HISTORY.rst; add a linked DEVELOPMENT.md for generation, customizations, testing, and recording maintenance.

Compatibility and scope

  • Preserve the existing command surface, including version create's --is-default-version option. Use version swap-default to change the default version; no new version-update mutation is introduced.
  • Retain GET -> PUT for resource, version, and execution-filter updates. Resource-group listing remains resource-group scoped; this PR does not add subscription-scoped listing or a stable cdn edge-action command group.
  • Keep extension-specific behavior outside generated files so regeneration preserves it. Both argument customizations isolate the generated and public AAZ schema caches to avoid command-load-order dependence.
  • No new runtime or test dependencies, shared CI changes, shared Azure CLI runtime patches, or src/index.json edits. Spec checks use the Python standard library; recording loading uses the existing PyYAML dependency.

Generated source: Azure/aaz#1136, commit 39a5b2f0d3e6dc7fbc971b3c196dd88044f3ac8f, contains the command models and examples. A clean temporary CLI regeneration matched all 29 generated Python files after normalizing filesystem line endings. Historical preview models and attachment entries are retained in the companion AAZ changes.

Spec-validation boundary: the offline snapshot is pinned to Azure/azure-rest-api-specs commit 9d29928794867148db0aed101144d14b2876e3a1. The validator implements the pinned Swagger's supported constraints and rejects unsupported constraints/formats explicitly; it is not a general JSON Schema implementation. Test-only compatibility allowances cover nullable version-response validationStatus and swap-default final polling responses. Initial response contracts, other operations, and API-version checks remain strict. Polling and scenario tests separately assert successful completion and failure propagation.


This checklist is used to make sure that common guidelines for a pull request are followed.

Related command

az edge-action, az edge-action version, and az edge-action execution-filter, especially az edge-action execution-filter update, az edge-action version get-version-code, and az edge-action version swap-default.

General Guidelines

  • Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
  • Have you run python scripts/ci/test_index.py -q locally? (pip install azdev required)
  • My extension version conforms to the Extension version schema

Current-head CI: all executed checks pass at d429b0ab1b2e9476861c0e16e94094e3ef4843e7; the conditional skip-version-cal job is skipped. Integration/build pipeline 364634 passes, including Python 3.10-3.14 jobs. Breaking-change pipeline 364635 passes; its report identifies only the three intended optional execution-filter parameter additions.

Local validation commands and results

Commands below were run from the repository root in the activated development environment. Full scenario/linter/index validation was performed at a7ca7b8bc; the offline suite, affected upload playback, style, and full Linux suite were validated at 418a0a2f9. Current head d429b0ab1 changes only documentation relative to that tested runtime/test content. Local functional tests were not rerun for the documentation or PR-description edits; current-head CI results are linked above.

. .\.venv\Scripts\Activate.ps1

azdev style edge-action
# PASSED: pylint and flake8.
azdev linter edge-action --min-severity medium
# PASSED: command/help/coverage rules and custom pylint; no violations.
python scripts\ci\test_index.py -q
# PASSED: 9 tests, 2 CI-only skips.

azdev test EdgeActionScenarioTest --discover --series --live
# PASSED: all 8 scenarios recorded against 2026-10-01.
azdev test test_edge_action_crud test_edge_action_version_operations test_edge_action_execution_filter_crud --discover --series --live
# PASSED: all 3 scenarios with expanded HTTP flows recorded live.

$env:AZURE_TEST_RUN_LIVE = 'false'
azdev test test_edge_action_version_deploy_with_content test_edge_action_version_deploy_with_file test_edge_action_version_deploy_with_zip test_edge_action_version_get_version_code test_edge_action_version_swap_default --series
# PASSED: 5 scenarios, including request-body matching.
azdev test test_edge_action_crud test_edge_action_version_operations --series
# PASSED: 2 scenarios.
azdev test test_edge_action_execution_filter_crud --series
# PASSED: execution-filter scenario.
azdev test test_edge_action_version_deploy_with_file --series
# PASSED: affected upload scenario with the cross-platform fixture rule.

$env:PYTHONPATH = (Resolve-Path .\src\edge-action).Path
python -m unittest azext_edge_action.tests.latest.test_edge_action_custom -q
# PASSED: 24 standard unittest tests, including their subtests.
python src\edge-action\azext_edge_action\tests\latest\spec_validation.py --recordings src\edge-action\azext_edge_action\tests\latest\recordings
# PASSED: 8 cassettes, 338 interactions.

azdev cmdcov edge-action
# PASSED: 19/19 non-wait commands, 100%.
azdev cmdcov edge-action --level argument
# COMPLETED: 44/77 scenario-source/recording arguments, 57.143%; see boundary below.

python -m flake8 --exclude='' --max-line-length=120 src\edge-action\azext_edge_action\tests\latest\spec_validation.py src\edge-action\azext_edge_action\tests\latest\test_edge_action_spec.py src\edge-action\azext_edge_action\tests\latest\test_edge_action_recording_processors.py
# PASSED: explicit lint of test files excluded by the default style command.

git diff --check
git diff --cached --check
# PASSED before commit; the pre-commit azdev scan hook also passed.

The complete offline run also passed with jsonschema imports deliberately blocked, confirming no dependency on that package. The guard exists only in this test-launch command:

@'
import sys
import pytest
sys.modules['jsonschema'] = None
raise SystemExit(pytest.main(['src/edge-action/azext_edge_action/tests/latest/test_edge_action_custom.py', 'src/edge-action/azext_edge_action/tests/latest/test_edge_action_spec.py', 'src/edge-action/azext_edge_action/tests/latest/test_edge_action_recording_processors.py', '-q']))
'@ | .\.venv\Scripts\python.exe -
# PASSED: 188 tests, 77 subtests.

Full Linux playback used the official Azure CLI image (CLI 2.91.0, Python 3.12.14; digest sha256:933eb8dcb81aecb6f77e03c5b8660f0a1dfa9e1d16525763a27f86ff3b83a044), a Git export with core.autocrlf=false, and existing test dependencies restored offline. The disposable container ran with --network none and AZURE_TEST_RUN_LIVE=false:

python3 -m pytest /tmp/checkout/src/edge-action/azext_edge_action/tests/latest/test_edge_action.py -q -k test_edge_action_version_deploy_with_file
# PASSED: 1 scenario, 7 deselected; the same cassette also passed Windows playback.
python3 -m pytest /tmp/checkout/src/edge-action/azext_edge_action/tests/latest -q --disable-warnings
# PASSED: 196 tests, 77 subtests, including all 8 recorded scenarios.

Coverage boundary: the 33 entries not counted by the scenario argument report comprise 26 CLI-wide --change-reference/--acquire-policy-token occurrences and seven local arguments covered by unit tests: --output-directory and --max-items/--next-token on all three list commands. No exclusions inflate coverage, and 100% live argument coverage is not claimed.

Generation check: aaz-dev cli regenerate -a C:\wcodebase\repos\aaz -e "$scratch" --name edge-action passed against a temporary archived CLI export using AAZ commit 39a5b2f0d3e6dc7fbc971b3c196dd88044f3ac8f; all 29 generated Python files matched. The working checkouts were not rewritten.

The pre-push hook was bypassed because it can default to rebasing the separate Azure CLI checkout. Functional validation was run explicitly as documented above; no rebase was performed.

For new extensions:

Not applicable: this updates an existing extension.

About Extension Publish

There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

Preserve generic execution-filter updates while exposing version and header fields. Keep swap-default polling compatibility outside generated code. Add offline contract validation, expanded scenarios, and sanitized stable API recordings.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 21, 2026 15:59
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

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.

🟡 Changes recommended

Removing the released get-version-code --output-directory/-d option breaks existing download commands without a replacement customization.

1 open issue
What changed in this PR

Upgrades the Edge Action extension to stable API 2026-10-01, preserving generic updates and moving compatibility customizations outside generated code.

Changes:

  • Updates generated API contracts, responses, and help examples.
  • Adds execution-filter update arguments and swap-default polling compatibility.
  • Expands offline tests, recording audits, sanitization, and maintenance documentation.
File Description
src/​edge-action/​README.md Documents updates, generation ownership, and validation.
src/​edge-action/​azext_edge_action/​tests/​requirements.txt Adds schema-validation dependency.
src/​edge-action/​azext_edge_action/​tests/​latest/​test_edge_action.py Expands lifecycle and update scenarios.
src/​edge-action/​azext_edge_action/​tests/​latest/​test_edge_action_spec.py Tests pinned contracts and recordings.
src/​edge-action/​azext_edge_action/​tests/​latest/​test_edge_action_recording_processors.py Tests sanitization and replay matching.
src/​edge-action/​azext_edge_action/​tests/​latest/​test_edge_action_custom.py Tests deployment and polling customizations.
src/​edge-action/​azext_edge_action/​tests/​latest/​test_edge_action_contract.py Adds offline command compatibility tests.
src/​edge-action/​azext_edge_action/​tests/​latest/​spec_validation.py Implements offline contract audits.
src/​edge-action/​azext_edge_action/​tests/​latest/​spec_snapshot.json Pins stable API schemas.
src/​edge-action/​azext_edge_action/​tests/​latest/​recordings/​test_edge_action_version_operations.yaml Refreshes sanitized version lifecycle recording.
src/​edge-action/​azext_edge_action/​tests/​latest/​recording_processors.py Sanitizes recording headers, bodies, and URLs.
src/​edge-action/​azext_edge_action/​custom.py Adds update and polling customizations.
src/​edge-action/​azext_edge_action/​commands.py Registers customized commands.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_wait.py Uses stable API for version waits.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_update.py Updates API and tag-update example.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_swap_default.py Aligns action with stable response contract.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_show.py Uses stable version retrieval API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_list.py Uses stable version listing API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_get_version_code.py Updates retrieval contract; removes file-output handling.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_deploy_version_code.py Deserializes full version deployment results.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_delete.py Aligns stable deletion responses.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​version/​_create.py Uses stable version creation API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​execution_filter/​_wait.py Uses stable filter wait API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​execution_filter/​_update.py Updates API while retaining GET/PUT.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​execution_filter/​_show.py Uses stable filter retrieval API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​execution_filter/​_list.py Uses stable filter listing API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​execution_filter/​_delete.py Aligns stable filter deletion responses.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​execution_filter/​_create.py Uses stable filter creation API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​_wait.py Uses stable resource wait API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​_update.py Updates API and corrects help example.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​_show.py Uses stable resource retrieval API.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​_list.py Updates API and documents resource-group scope.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​_delete.py Aligns stable resource deletion responses.
src/​edge-action/​azext_edge_action/​aaz/​latest/​edge_action/​_create.py Uses stable resource creation API.

Review effort: Balanced

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

Restore get-version-code output-directory aliases through a regeneration-safe customization, add regression coverage, and prepare 1.0.0b5 release notes. Install per-extension test requirements before CI discovery while preserving existing behavior for extensions without a test manifest.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@kestry

Copy link
Copy Markdown
Member Author

Updated in bf7cb17: HISTORY.rst now documents the customer-visible changes and setup.py advances to 1.0.0b5, retaining the beta designation. The get-version-code download compatibility fix is covered in the resolved inline thread.

All five failing integration jobs had the same collection error: jsonschema was declared in the extension test requirements but never installed by the CI runner. The runner now installs each selected extension's test requirements before discovery; extensions without that file retain their existing command sequence. Three CI-runner regression tests cover both paths and fail-fast installation errors. No tests were skipped and no runtime dependency was added.

Local validation: 227 offline extension tests and 3 CI-runner tests pass; style and index checks pass; the wheel builds. The earlier pipeline logs show all eight recorded scenarios passed on the original PR commit. The new commit still needs its CI rerun.

@kestry

Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Commenter does not have sufficient privileges for PR 10499 in repo Azure/azure-cli-extensions

@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

Prevent generated-base argument loading from hiding customized flags in a fresh process. Preserve the original regression and cover both command load orders for download and execution-filter update schemas.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@kestry

Copy link
Copy Markdown
Member Author

The rerun confirms the dependency fix: all test modules now collect, and 234 of 235 tests passed, including all eight recorded scenarios. It exposed a cold-process AAZ cache issue that the earlier sequential local run masked: custom subclasses isolated _args_schema but inherited the generated class's separate _arguments_schema cache.

Fixed in e8b3164 by isolating both caches for GetVersionCode and ExecutionFilterUpdate. The original failing assertion remains, with additional cold-cache tests covering both command load orders for both customizations. All five isolated schema tests and all 67 affected command tests pass locally. No assertions were removed or skipped.

The completed breaking-change report for bf7cb17 also confirms the removed-parameter regression is gone; only the three intended optional execution-filter argument additions remain as warnings. The latest commit still needs its pipeline results.

@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

@x-engineering-agent

x-engineering-agent Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

X Engineering Agent Report

Review — Comments

Jean Kim (@kestry)

No confirmed actionable defects found at 418a0a2f9dd0d4e7e7d05a19fdfe751ffeb74a50. Upstream CI passed, with no failed or pending checks.

Reviewed stable API request/response mappings, preserved update fields and generic-update precedence, restored download options, deployment output, swap-default polling, generated/custom ownership boundaries, release metadata and help.

Test validation
  • Agent live test: Not run; this is a review-only PR. Check author-provided test evidence and upstream CI separately.
  • Regression coverage: Not applicable to the changed files.

The coverage classification above is the deterministic report. Separately, the author-provided scenarios in src/edge-action/azext_edge_action/tests/latest/test_edge_action.py and all eight corresponding recordings under src/edge-action/azext_edge_action/tests/latest/recordings/ were inspected: 338 stable-API interactions support update-field preservation, tag clearing, independent/combined execution-filter changes, full deployment responses, downloaded code content and the two-version default transition.

The companion test_edge_action_custom.py, test_edge_action_spec.py and test_edge_action_recording_processors.py in that test directory provide unit evidence for local compatibility, negative cases, pagination, polling failures, timestamp parsing and exact upload-byte checks.

No tests or recording replays were executed during this review. Live service eligibility and sovereign-cloud availability remain unverified. The generation-source PR is valid and open; clean regeneration was not independently reproduced.

Risk assessment — 73/100 · High

The High rating is driven by public CLI behavior, dependency or supply chain, failure-handling behavior and 1 additional signal(s).

  • Change scope: 42 changed files, 15672 changed lines (+13396 / -2276), including 24 production files.
  • Affected components: edge-action
  • Risk drivers: public CLI behavior (+18); dependency or supply chain (+18); failure-handling behavior (+12); generated output (+12)
  • Regression evidence: Changed regression tests are included, reducing risk.
  • Confidence: High because changed-line patches were available for every production file.
  • Required review: Owning-squad review is required for edge-action before merge.

Posted by x-engineering-agent (Reviewer)

@x-engineering-agent x-engineering-agent Bot added the X Engineering Agent Reviewed Agent reviewed this PR label Oct 22, 2026
@JaysonTaiMicrosoft

Copy link
Copy Markdown
Contributor

aaz: Azure/aaz#1136

@JaysonTaiMicrosoft JaysonTaiMicrosoft added Request X Engineering Agent Ask the agent to triage this issue or review this PR and removed Request X Engineering Agent Ask the agent to triage this issue or review this PR X Engineering Agent Reviewed Agent reviewed this PR labels Oct 22, 2026
@x-engineering-agent x-engineering-agent Bot added the X Engineering Agent Reviewed Agent reviewed this PR label Oct 22, 2026
@JaysonTaiMicrosoft

JaysonTaiMicrosoft commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Jean Kim (@kestry) Please ensure that test changes are inline with guidelines set out in https://github.com/Azure/azure-cli/blob/dev/doc/authoring_tests.md.

Scenario tests for the most part act as snapshot tests to ensure contracts are upheld. We shouldn't need to add additional steps and dependencies to CI for test facilitation. The changes in this PR look like a API version bump with the addition of some params added as customizations instead. We just need to ensure the existing scenario tests are re-recorded using azdev ..... --live so the new API version is reflected in the recordings. And any local behavior like --output-directory is unit tested

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

@kestry

Copy link
Copy Markdown
Member Author

JaysonTaiMicrosoft Addressed the test guidance in a7ca7b8.

Removed the added jsonschema requirement, shared CI installation/test steps, and broad synthetic contract suite. The tests use the existing ScenarioTest infrastructure and standard unittest coverage for local behavior and customization edge cases. Pinned-spec validation remains, using the standard library and the test environment's existing PyYAML; no new dependency is required.

Kept useful regression coverage while avoiding unrelated setup changes: GET/PUT field preservation, tag clearing, deployment/download content, and independent/combined/generic filter updates. All eight scenarios have fresh stable-API recordings. The three whose request flows changed were re-recorded again with --live, and all eight final scenarios passed playback with request-body matching. The final 338 recorded interactions pass the spec/hygiene audit; the offline suite passes 147 tests and 77 subtests, including a run that deliberately rejects any jsonschema import. Local linter and style checks also pass.

The PR description now contains the exact validation commands/results and the durable source link to Azure/aaz#1136. Clean regeneration from that PR's source matched all 29 generated Python files. Fresh CI for this commit is running; the earlier head's green checks are not being used as evidence for this revision.

Pin recorded upload fixture bytes and validate fractional timestamps consistently on Python 3.10. Retain strict request matching and spec validation without new dependencies.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@kestry

Copy link
Copy Markdown
Member Author

Pushed 418a0a2 to fix the failures in build 364524:

  • Every Python job hit the same upload-body mismatch: the Windows recording contains CRLF JavaScript bytes, while Linux checked out LF bytes. A fixture-local .gitattributes now preserves the recorded bytes on both platforms. Strict request-body matching remains enabled, with new JS/ZIP fixture-to-recording assertions.
  • Python 3.10 additionally rejected seven cassette audits because datetime.fromisoformat only accepts three/six fractional digits there. Validation now checks fractional syntax separately from calendar/time parsing, accepting the service's seven-digit timestamps while still rejecting malformed fractions, dates, times, and offsets.

The correction changes only tests, fixture metadata, and test documentation; no recordings, production/generated code, dependencies, or shared CI setup changed. The affected scenario passes playback; 188 offline tests and 77 subtests pass with jsonschema unavailable. Linux/Python 3.10 reproduced the original parser failure and now passes all 338 recorded interactions plus the fractional timestamp regressions. Style, explicit test-file lint, and the pre-commit scan pass.

For the still-visible older review findings: the added CI steps/dependencies were removed in a7ca7b8, and the PR description links Azure/aaz#1136 at 39a5b2f, with green metadata checks and the clean-regeneration result for all 29 generated files. The download-option thread remains resolved; standard unittest coverage is retained in test_edge_action_custom.py.

Aditya Pujara (@a0x1ab) Could you rerun Azure Pipelines with /azp run for 418a0a2? The new GitHub Actions checks started, but Azure Pipelines still lists only the previous head's builds; my earlier /azp run was rejected for insufficient privileges.

@x-engineering-agent x-engineering-agent Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Jean Kim (@kestry) Ready for human review. See the X Engineering Agent Report.

@x-engineering-agent x-engineering-agent Bot removed the Request X Engineering Agent Ask the agent to triage this issue or review this PR label Oct 22, 2026
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

@kestry

Copy link
Copy Markdown
Member Author

The rerun is green at 418a0a2: pipeline 364537 passed all five Python 3.10-3.14 integration/build jobs, and breaking-change pipeline 364538 passed with only the three intended optional execution-filter parameter additions. GitHub Actions checks also pass.

The requested cross-platform playback is verified as well: the same upload cassette passes on Windows and Linux, and the complete Linux suite passed 196 tests and 77 subtests, including all eight scenarios, with network access disabled. No recordings or production behavior were changed to obtain these results. The nullable validationStatus and swapDefault final-response compatibility allowances remain covered.

The latest review reports no actionable defects on this commit, and no inline threads remain unresolved. The PR description now includes the completed CI and Linux playback evidence.

Keep the public README focused on installation and command behavior. Move generation, customization, and test guidance into a linked development guide and remove transient verification notes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 2 pipeline(s).

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

Labels

X Engineering Agent Reviewed Agent reviewed this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants