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
Follow-up to #10668 after the initial 0.1.0-preview release and registry update in #10729.
Add azd host-native prompts for omitted environment, optional resource prefix, supported region, and new-resource role assignment (default No).
Replace per-model confirmations with a catalog multi-select showing model/version/kind/SKU and recommended defaults. Allow empty selection and correction of conflicting versions; require default-No confirmation before deployment.
Render a readable generation summary by default while preserving the explicit JSON result shape and output-none behavior.
Preserve explicit flags, reject explicit empty/conflicting inputs before host access, and keep noninteractive behavior deterministic.
Address the P2 diagnostic and discoverability findings described below.
Update user guidance and regression coverage. Prepare 0.1.1-preview; date the initial release 2026-10-27.
P2 findings
Finding
Resolution
CU-003: explicitly empty endpoint/API version falls back
Existing validation already rejects these selectors. Add command regressions with configured fallbacks and installed-host checks confirming rejection without changing persisted defaults or opening a service session.
CU-007: unhelpful analysis/analyzer failures
Include validated service codes, deterministic not-found/conflict guidance, and bounded per-input failure reasons in the original analysis error. Retain successful outputs and privacy protections; diagnostics do not issue another analysis request.
CU-009: incomplete help namespace
Existing help already uses azd ai cu. Add regression assertions for root, analysis, analyzer, and validation help, including subcommand guidance.
CU-010: unlocatable offline schema errors
Report one-based source line/column without exposing authored field names or rejected values. Cover nested/array properties, escaped names, Unicode, CRLF, missing properties, and ambiguous dotted paths; retain successful validation's structured output shape.
P1 and P3 findings from the bug-bash report are outside this follow-up's added scope.
Compatibility and boundaries
Authentication, subscription selection, and environment lifecycle remain owned by azd.
--no-prompt and --output json skip the new generation wizard. JSON alone does not disable the existing subscription selector.
No automatic azd up, no existing-resource role assignments, and no generated hook or JSON schema changes.
Generation writes files only. Interactive model deployment remains post-provision and requires confirmation; cancellation does not roll back resources already provisioned by azd.
Failure diagnostics omit raw service messages, authored content, file paths, and credential-bearing URLs. Analysis reports retain their existing structure, with more actionable error text.
Offline schema columns count Unicode characters; tabs count as one character. Missing properties use the containing object when available, and ambiguous dotted paths list all matching source locations.
Validation
Rebased the scoped interactive follow-up onto main, incorporating the cross-platform release-test fixes in #10727.
Latest local validation on Linux at head 9469f0f2c:
Full extension race suite: go test -race ./... -count=1 -timeout=5m
Extension-scoped golangci-lint run ./... and Go/documentation cspell: passed.
Freshly rebuilt 0.1.1-preview installed-host smoke against released azd 1.37.0: passed.
The macOS diagnostic fixture failure was reproduced using a symlinked temporary root, fixed with the existing canonical-root test helper, and verified with race tests for analysis/localio/testutil under both regular and symlinked roots. Production path safety was not relaxed.
Additional local validation:
Full extension suite: go test ./... -count=1 -timeout=5m
Full nested REST-client suite: go test ./... -count=1 -timeout=5m
Interactive follow-up: go test -race ./internal/cmd ./internal/infra -count=1 -timeout=5m and go vet ./internal/cmd ./internal/infra
P2 changes: go test -race ./internal/schema ./internal/analysis ./internal/cuclient ./internal/cmd -count=1 -timeout=5m
P2 changes: go vet ./internal/schema ./internal/analysis ./internal/cuclient ./internal/cmd
Go formatting and whitespace checks
Freshly built, version-stamped 0.1.1-preview installed into an isolated released azd 1.37.0 host; TestInstalledHostOffline passed, including explicit empty/conflicting flag rejection, unchanged persisted defaults, privacy-safe schema coordinates, and no-output-directory assertions. The test blocks external network access after local installation setup.
Manifest, version file, and changelog version consistency
Full-repository preflight was not run. Latest-head extension CI was explicitly requested in this comment. Azure Pipeline 7006716 completed successfully, including native Linux/macOS/Windows checks, ARM64 cross-builds/validation, and PR bundle packaging/publication. Extension lint and spelling checks also passed. The published test bundle reports 0.1.1-preview.pr.10734.7006716; this is an unsigned development build, not a registry release.
Manual terminal acceptance (2026-10-27)
Keyboard-driven acceptance was performed in VS Code / WSL with released azd 1.37.1 and the installed PR bundle 0.1.1-preview.pr.10734.7006716, separately from the automated installed-host smoke:
Completed subscription selection and the generation wizard: default environment dev, blank resource prefix, region selection with arrow keys and filtering, and role assignment default [y/N] No.
Confirmed the generated local environment retained the selected region, blank prefix, and AZD_ASSIGN_ROLES="false".
Cancelled at the environment-name prompt with Ctrl+C and verified that no output directory was created.
Entered an invalid path-like environment name, verified it was rejected and re-prompted, inspected the error hint, then corrected the name and completed generation.
Supplied explicit environment/prefix/region/role inputs and completed generation without the corresponding wizard questions.
Completed --no-prompt generation using a configured default subscription and the default environment/region.
Verified explicit JSON output retained all 16 top-level fields without human-readable summary text.
Verified complete azd ai cu infra help, rejection of explicitly empty endpoint/API version despite environment fallbacks, and offline schema error line/column locations. The pasted test file had no indentation, so column 1 was correct.
Opened the live model picker against an existing Foundry resource. Verified recommendation labels/preselection, arrow-key navigation, Space selection/deselection, filtering, and restoring the full list after clearing the filter.
Cancelled the model picker with Ctrl+C before submitting selections. The command reported cancellation and the local model file remained []; the deployment/default-configuration path was not reached.
No Azure provisioning, model deployment, role assignment, or service-configuration changes were performed during acceptance. The model-picker test read the existing resource's analyzer metadata and ARM model catalog. Deployment confirmation, conflicting-version correction, and successful/failed deployment flows retain automated coverage but were not manually exercised. CU-007 live service-failure scenarios were not re-run; their diagnostics are covered by automated tests.
Observations and follow-up
Invalid wizard input is rejected, but its reason is currently exposed through the ? hint rather than immediately displayed.
A transient cursor/redraw jump was reported while entering an environment name in VS Code / WSL; it was not reproduced during the subsequent checks and is not claimed fixed.
Windows startup latency remains unresolved: repeated PR-bundle help took about 2.3-2.8 seconds, including about 2.4 seconds when invoking the binary directly, versus about 0.3 seconds through azd / 0.1 seconds directly for released 0.1.0-preview. Go initialization tracing located about 1.3 seconds in protobuf's self-binary sampling, versus about 0.54 ms in the released binary. The PR executable is unsigned and the released executable has a valid signature, but signing/security scanning has not been established as the cause.
Independently installed the same PR zip on Linux and verified its version. Across five runs, median help times were 0.057 seconds for azd, 0.120 seconds for CU through azd, and 0.049 seconds for the direct CU binary; protobuf initialization took 0.20 ms. The Windows delay was not reproduced on Linux. A same-code Windows local-build or signed-build comparison is still pending.
Remaining review and validation boundaries
Formal design / Dev Manager review of prompt precedence, recommendation/confirmation semantics, and changed default human output remains required.
Maintainer disposition of the observations above, especially the unresolved Windows PR-bundle startup delay.
Native Windows/macOS automated validation passed; keyboard-driven acceptance was performed in WSL, not native macOS or the full native Windows wizard.
No live provisioning/deployment acceptance was performed. Any additional mutating Azure validation requires explicit authorization.
Draft intentionally: implementation and offline validation were authorized ahead of formal review; do not merge until the review and validation gates are complete.
Add host-native generation prompts, a model multi-select flow, readable summaries, and regression coverage. Prepare 0.1.1-preview and date the initial release.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Azure Pipelines:
Successfully started running 1 pipeline(s).
26 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.
Address P2 analysis and analyzer error guidance and privacy-safe schema source locations. Add regressions for explicit empty selectors and full extension help paths.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Thanks for the contribution! The linked issue isn't in the current milestone yet.
Thank you for logging this issue; our team is reviewing it. If you need urgent prioritization, tag Rick Winter (@RickWinter) and Kristen Womack (@kristenwomack) to let us know.
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
Authoring validation can report incorrect source paths for alias fallbacks, and a discovered region outside the supported list can cause the environment prompt to loop indefinitely.
Improves the Content Understanding extension’s interactive infrastructure workflow for #10733 while keeping authentication and deployment lifecycle owned by azd. Generation remains separate from Azure deployment.
Changes:
Adds host-native generation prompts, a model multi-select with explicit deployment confirmation, and readable generation summaries.
Adds privacy-preserving service failure details and source coordinates for offline schema errors, with regression coverage.
Updates user guidance and prepares 0.1.1-preview.
Paths below are relative to cli/azd/extensions/azure.ai.content-understanding/.
File
Description
version.txt
Bumps the extension version.
internal/schema/locations.go
Maps validation findings to source coordinates.
internal/schema/locations_test.go
Tests Unicode, arrays, and ambiguous paths.
internal/cuclient/polling.go
Includes validated operation error codes.
internal/cuclient/pipeline.go
Adds service codes and actionable failure guidance.
internal/cuclient/pipeline_test.go
Tests diagnostic guidance and privacy protections.
internal/cmd/installed_host_test.go
Extends installed-host validation regressions.
internal/cmd/infra.go
Adds wizard orchestration and readable summaries.
internal/cmd/infra_test.go
Updates infrastructure fixtures and prompt mocks.
internal/cmd/infra_prompts.go
Implements generation prompts and model selection.
internal/cmd/infra_prompts_test.go
Covers precedence, output modes, and cancellation.
internal/cmd/infra_playback_test.go
Exercises interactive post-provision model setup.
internal/cmd/infra_host.go
Connects host services to the new prompts.
internal/cmd/help_test.go
Verifies the full extension help namespace.
internal/cmd/analyzer_validate.go
Adds source locations to validation errors.
internal/cmd/analyzer_validate_test.go
Tests private-field coordinates and empty selectors.
internal/cmd/analyzer_testing_playback_test.go
Updates expected operation failure diagnostics.
internal/analysis/run.go
Includes bounded per-input failure details.
internal/analysis/run_test.go
Tests diagnostic bounds, redaction, and request counts.
extension.yaml
Aligns the manifest version.
docs/usage.md
Documents diagnostics and default output changes.
docs/provisioning.md
Explains wizard, selection, and confirmation behavior.
CHANGELOG.md
Records preview changes and the initial release date.
Retry only validation errors for the prompted infrastructure field. Resolve authoring diagnostics against the selected alias without remapping literal spec findings or changing structured finding output. Add regression coverage and document source-location behavior.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
The embedded README still tells users to decline model confirmations, which now cancels setup instead of deploying without models, and needs to document clearing picker selections or setting CU_MODEL_SELECTION=none.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Update README guidance for declining model confirmation
The generated project's README still says “Decline every model confirmation to deploy no models” (internal/infra/assets/README.md:97). Following that instruction now cancels postprovision before CU environment configuration instead of completing setup without models. Update the embedded README to tell users to clear all picker selections or set CU_MODEL_SELECTION=none, and explain that declining confirmation cancels setup.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #10733.
Follow-up to #10668 after the initial
0.1.0-previewrelease and registry update in #10729.0.1.1-preview; date the initial release2026-10-27.P2 findings
azd ai cu. Add regression assertions for root, analysis, analyzer, and validation help, including subcommand guidance.P1 and P3 findings from the bug-bash report are outside this follow-up's added scope.
Compatibility and boundaries
--no-promptand--output jsonskip the new generation wizard. JSON alone does not disable the existing subscription selector.azd up, no existing-resource role assignments, and no generated hook or JSON schema changes.Validation
Rebased the scoped interactive follow-up onto main, incorporating the cross-platform release-test fixes in #10727.
Latest local validation on Linux at head
9469f0f2c:go test -race ./... -count=1 -timeout=5mgolangci-lint run ./...and Go/documentationcspell: passed.0.1.1-previewinstalled-host smoke against released azd 1.37.0: passed.Additional local validation:
go test ./... -count=1 -timeout=5mgo test ./... -count=1 -timeout=5mgo test -race ./internal/cmd ./internal/infra -count=1 -timeout=5mandgo vet ./internal/cmd ./internal/infrago test -race ./internal/schema ./internal/analysis ./internal/cuclient ./internal/cmd -count=1 -timeout=5mgo vet ./internal/schema ./internal/analysis ./internal/cuclient ./internal/cmd0.1.1-previewinstalled into an isolated released azd 1.37.0 host;TestInstalledHostOfflinepassed, including explicit empty/conflicting flag rejection, unchanged persisted defaults, privacy-safe schema coordinates, and no-output-directory assertions. The test blocks external network access after local installation setup.Full-repository preflight was not run. Latest-head extension CI was explicitly requested in this comment. Azure Pipeline 7006716 completed successfully, including native Linux/macOS/Windows checks, ARM64 cross-builds/validation, and PR bundle packaging/publication. Extension lint and spelling checks also passed. The published test bundle reports
0.1.1-preview.pr.10734.7006716; this is an unsigned development build, not a registry release.Manual terminal acceptance (2026-10-27)
Keyboard-driven acceptance was performed in VS Code / WSL with released azd 1.37.1 and the installed PR bundle
0.1.1-preview.pr.10734.7006716, separately from the automated installed-host smoke:dev, blank resource prefix, region selection with arrow keys and filtering, and role assignment default[y/N] No.AZD_ASSIGN_ROLES="false".--no-promptgeneration using a configured default subscription and the default environment/region.azd ai cu infrahelp, rejection of explicitly empty endpoint/API version despite environment fallbacks, and offline schema error line/column locations. The pasted test file had no indentation, so column 1 was correct.[]; the deployment/default-configuration path was not reached.No Azure provisioning, model deployment, role assignment, or service-configuration changes were performed during acceptance. The model-picker test read the existing resource's analyzer metadata and ARM model catalog. Deployment confirmation, conflicting-version correction, and successful/failed deployment flows retain automated coverage but were not manually exercised. CU-007 live service-failure scenarios were not re-run; their diagnostics are covered by automated tests.
Observations and follow-up
?hint rather than immediately displayed.Remaining review and validation boundaries
Draft intentionally: implementation and offline validation were authorized ahead of formal review; do not merge until the review and validation gates are complete.