Repository navigation
Bring V2 admin Scale settings to parity with the classic page - #1681
Merged
Paul Lizer (paullizer) merged 4 commits intoOct 7, 2026
Conversation
- Declare all seven Scale sections in admin_settings_fields.py: the Redis connection with a Key Vault-aware key field and connection test, Redis Metrics and Explorer, the conversation cache, DAI metrics with diagnostics behind enable_dai_debug, Cosmos maintenance, the throughput console and guardrails, and the container policy workbench. - Enforce the classic throughput policy rules on V2 saves through the new structured collect_cosmos_throughput_policy_errors, report RU/s values the server rounds, and keep container policy timestamps from storage. - Add the label_variants and requires.when schema descriptors, and a "Used by" line driven by requires.target_section. - Fix flag-gated fields being dropped inside settings cards, which hid the Inbound MCP settings while its preview was enabled. - Confirm every action that changes a production resource, keep a capacity change busy until the status is read again, and keep validate-access readings out of the status manual changes estimate from. - Add Scale parity, normalization, browser-logic and UI tests, the admin page rewrite, a feature doc and release notes for 0.261.260. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
With the preview enabled the card rendered empty; the page had already dropped the "preview disabled" notice, so it never appeared in its place. Text-only: the release note and the regression check's comment. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Resolve the 15 conflicts with paullizer-react-v2-ui and reconcile the Scale work with what landed there: - DAI diagnostics now follow the Document Access Index diagnostics switch the V2 Operations work declares under Debug Logging (enable_dai_debug), as a depends_on key, so they appear as soon as it is turned on. The dai_debug_enabled runtime flag and the enable_dai_debug suppression are gone. - The base already passes runtime flags into SettingsSection, so the duplicate release note and regression check for that fix are dropped. - collectRequirements, deriveSectionStatus, computeSectionStatus and buildSectionDependents take the base's fieldsByKey and then runtimeFlags. - The Scale docs point the search result cache at Azure AI Search, where the base now declares it. - test_v2_admin_nested_setting_reads accepts arguments after the field index in the page's section status call. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ity to 0.261.274 The Governance group landed as 0.261.273, so this work moves to the next free patch: VERSION, its release-note section, and the version markers in this branch's tests, fixture and feature doc. Governance's own 0.261.273 markers are unchanged. Governance also added in-page navigation for prerequisite links, through SettingsSection's onNavigate and the page's navigateToSetting, which leads to the section owning a hidden target's condition. The notice now uses that implementation, so this branch's isSectionAvailable gate, navigateWithin and availableSectionIds are removed. The "Used by" line keeps its dependents prop and links through the same navigateToSetting. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 7, 2026
b8db49d
into
microsoft:paullizer-react-v2-ui
11 checks passed
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 7, 2026
Brings in the Scale settings parity work (#1681), which also took 0.261.274. - admin_settings_fields.py: Scale joins the fully described groups in the module notes, alongside the Backup & Recovery component note. - adminFields.ts: search text includes keywords, label variants and endpoint lists. - AdminSettingsPage.tsx: keep both sets of imports; section status keeps the Backup & Recovery override and passes the target's runtimeFlags; keep the target's section-dependents and throughput-validation memos; render both the leave dialog and CosmosCapacityConfirm. Still one useBlocker. - test_v2_admin_capability_placement.py: Backup & Recovery and Scale are both fully described groups. - Version 0.261.275: the Backup & Recovery release-notes entry moves to its own section above Scale's 0.261.274, and this feature's test and doc headers follow it. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
14 of 24 tasks
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 7, 2026
…61.275 Brings in the Scale group (#1681), which took 0.261.274, so this branch moves to 0.261.275. Six conflicts, each resolved by keeping both sides: - admin_settings_fields.py: the related_section docstring stays, and the fully described groups list both Scale and Help. The Help constants sit beside the Scale groups and Cosmos limits. The recipient and visibility validators sit beside the Redis port and container-policy checks. - SettingsSection.tsx: the section-status provider wraps the base's new "Used by" dependents line as well as the requirement notices. - AdminSettingsPage.tsx: one adminSections import with buildSectionDependents and readSectionValue, plus the base's cosmosThroughput import. - release_notes.md: this branch's entries move to a v0.261.275 section, above the base's v0.261.274 Scale section. - test_v2_admin_capability_placement.py: both history lines and narratives are kept, FULLY_DESCRIBED_GROUP_IDS includes scale and help, and invariant 1 now names Scale, which the base's tuple already held. - ui_tests/fixtures/v2_admin_settings.py: both history lines are kept, and the built-in Help stubs run before the base's test-supplied extra_routes. This branch's own version references move to 0.261.275. The base's 0.261.274 Scale lines are left as they are. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
added a commit
to paullizer/simplechat
that referenced
this pull request
Oct 7, 2026
Brings in V2 at 919375b (microsoft#1682, VERSION 0.261.275), which also includes microsoft#1681 (VERSION 0.261.274). Conflicts: - docs/explanation/release_notes.md: V2's file byte-for-byte, with this branch's own (v0.261.256) section inserted at the very top, above V2's first section, (v0.261.275). Every V2 section is unchanged. - application/single_app/config.py merged cleanly to V2's file (VERSION 0.261.275), because this branch hadn't changed it since the last merge. The renumber commit sets the final number. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
Most of the V2 Admin Settings Scale group was missing from the field schema, so V2 drew only the
enable_*switches its fallback scan could guess. Admins could not edit the Redis connection, cache TTLs, Cosmos resource or throughput guardrails in V2, and none of the classic page's operational panels existed. This brings Scale to parity with the classic page in the existing V2 design language: section cards, a capability switch with its dependents nested beneath it, collapsible groups, and links between related sections.enable_dai_debug) is on under Operations > Debug Logging, matching the classic page. Cosmos Maintenance shows index and stale-cache status with on-demand runs. Cosmos DB Throughput adds the resource, guardrails, access validation and manual scaling, and Cosmos Metrics is a list-beside-detail container workbench whose policies save with the page.label_variants,requires.when), and a "Used by" line on cards that other sections depend on.Worth a careful look:
redis-monitoring,redis-explorer,app-maintenance,cosmos-throughput). A parity test pins their paths, methods and guards againstroute_backend_settings.py, and the maintenance request bodies againstadmin_settings.js.functions_cosmos_throughput.pygainscollect_cosmos_throughput_policy_errors, which returns structured errors.validate_cosmos_throughput_policy_settings, which V1 calls, now wraps it and returns the same messages as before.enable_dai_debugkey, the switch the V2 Operations work declared under Debug Logging, so they appear as soon as it is turned on. Scale itself has no toggle for it.navigateToSettingfrom Add the Governance group to V2 Admin Settings #1680, which leads to the section owning a hidden target's condition. The "Used by" line links through the same function.collectRequirements,deriveSectionStatus,computeSectionStatusandbuildSectionDependentstake the base'sfieldsByKeyand thenruntimeFlags.redis_auth_typenow seeds'key'instead of''. Every reader already treats an empty value as key auth, so runtime behavior is unchanged.Screenshots (UI test fixture, synthetic data)
Redis Cache with Key Vault authentication selected: the Key Vault prerequisite, and "Used by" on both cards
Redis Metrics with the inline Redis Explorer
Confirming a manual scale
Cosmos Metrics workbench with a container policy edited in place
Linked issue
N/A (no tracking issue for this work)
Release Notes & Latest Features
Is this visible to end users?
Is this admin-facing (Admin Settings, governance, deployment, config)?
Should this become a Latest Feature card?
Screenshot needed for the card?
Version bump
application/single_app/config.pyVERSIONthird segment bumped, or not needed because this is docs-onlydeployers/version.txtbumped, or not needed becausedeployers/was not changedSynced with
paullizer-react-v2-uiat485d51aaby merge commit8d3024e2and renumbered to 0.261.274, because the Governance group (#1680) took 0.261.273.Testing / validation
Run from the repo root in PowerShell with
$env:PYTHONDONTWRITEBYTECODE="1", on the merge result committed as8d3024e2:npx tsc -b --noEmit(inapplication/v2_ui): passednpm run build(inapplication/v2_ui): passedpython -m pytest (Get-ChildItem functional_tests -Filter "test_v2_admin_*.py").FullName functional_tests/test_cosmos_throughput_autoscale_logic.py functional_tests/test_pytest_return_false_guard.py functional_tests/test_search_result_cache_admin_setting.py functional_tests/test_ai_connection_embedding_defaults_api.py functional_tests/test_content_screening_admin_settings_fix.py -p no:cacheprovider -q: 436 passed, 12 failed. All 12 fail identically on the base485d51aaand are unrelated to Scale:test_v2_admin_security_parity.py::test_every_v1_security_field_is_claimed(unclaimedchat_content_settings_presentmarker),test_v2_admin_settings_schema.py::test_defaults_match_their_field_type(m365_trusted_download_hostsdefault[]),test_v2_admin_settings_rail_collapse.py::test_the_rail_collapses_to_labelled_icons(disabled={delegationDirty}assertion), and 9 checks intest_ai_connection_embedding_defaults_api.py.python -m pytest (Get-ChildItem ui_tests -Filter "test_v2_admin_*.py").FullName -p no:cacheprovider -q: 159 passed across all 14 V2 admin UI suites, including Governance (local Chromium)python -m pytest functional_tests/route_tests/test_route_blueprint_policy_inventory.py functional_tests/route_tests/test_route_unauthenticated_policy_contract.py functional_tests/route_tests/test_route_policy_test_coverage.py -p no:cacheprovider -q: 21 passedpython scripts/build_docs_inventory.py --check: inventory in syncpython functional_tests/test_docs_app_surface_coverage.py: 7/7 passedpython functional_tests/test_docs_site_quality.py: 6/6 passedfunctional_tests/route_tests/test_workflow_*_policy.py. They fail at import on this machine (import OpenSSLraisesAttributeError: module 'lib' has no attribute 'GEN_EMAIL', a local pyOpenSSL/cryptography mismatch), and this change touches no workflow code.test_v2_admin_scale_settings.py. An automated review found three issues, all fixed with coverage: a second scale could be sent while the status refreshed, policy inputs rewrote half-typed numbers, and Validate access replaced the status that manual changes estimate from. Playwright screenshots were reviewed at desktop and 390px widths, light and dark, and XL text.New tests:
test_v2_admin_scale_parity.py(17),test_v2_admin_scale_normalization.py(13),test_v2_admin_scale_logic.pywithtest_v2_admin_scale_logic.ts(18 checks, browser mirrors against generated Python cases), andui_tests/test_v2_admin_scale_settings.py(15).Documentation
Release notes: new v0.261.274 section. Feature doc:
docs/explanation/features/V2_ADMIN_SCALE_SETTINGS.md. Admin docs:docs/admin/scale.mdrewritten to cover every Scale setting, readout and action. No fix doc is needed: this PR carries no bug fix of its own.Security checklist
@swagger_route(security=get_auth_security())(no new routes)sanitize_settings_for_user()(admin-only surface;redis_keyis a declared secret, so V2 receives only the redaction placeholder)