Repository navigation
Explain the search result cache under Azure AI Search in V2 admin - #1665
Merged
Paul Lizer (paullizer) merged 4 commits intoOct 6, 2026
Merged
Paul Lizer (paullizer) merged 4 commits into
Paul Lizer (paullizer) merged 4 commits into
Conversation
The V2 fallback scan filed enable_search_result_caching under Web Search as a bare key-named switch, because "search" tied Web Search and Azure AI Search and Web Search comes first in navigation order. Declare it in a "Search result cache" group of azure-ai-search-section with help that explains what is cached, what forces a fresh search, and why to leave it on, and add the previously uneditable cache lifetime (search_cache_ttl_seconds, 60-3600 s, shown only while caching is on). Both are recorded as V2-only. Caching stays on by default. Docs move the setting from Scale to Knowledge, and version is 0.261.260. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… to 0.261.262 #1662 merged as 0.261.260, the number this branch had taken, and #1663 as 0.261.261. Both release note sections are kept, with this branch's on top. The fix doc, feature doc note, test headers and the new check's assert_app_version_at_least move to 0.261.262. The capability placement test keeps #1663's forced tabular parity check and this branch's relocation. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… to 0.261.263 #1664 merged as 0.261.262, the number this branch had taken. Both release note sections are kept, with this branch's on top. The fix doc, feature doc note, test headers and the new check's assert_app_version_at_least move to 0.261.263. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 6, 2026
a8179f5
into
paullizer-react-v2-ui
11 checks passed
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 6, 2026
…Indexer deployer fix to 0.261.264 Resolve the config.py VERSION, release notes, and fixes index conflicts. The base already used 0.261.260 through 0.261.263, so this fix moves to 0.261.264 in its release notes section, fix document, deployer READMEs, preflight script header, and test headers. The base's own 0.261.260 Web Search entry is unchanged. Deployer version stays 1.0.33 because no incoming commit changed deployers/. Refs #1666 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 6, 2026
… Enhanced Extraction section to 0.261.265 Resolve the conflicts with paullizer-react-v2-ui, keeping both sides: - config.py: VERSION 0.261.265, after 0.261.264 on the base. - release_notes.md: this change on top as v0.261.265. - SettingsSection.tsx: pass both fieldsByKey (#1662) and runtimeFlags to isFieldVisible; the open_until_set reader passes fieldsByKey too. - test_v2_admin_section_logic.ts: both header lines, both imports and both sets of appended checks. - test_v2_admin_capability_placement.py: header version. #1662 renamed readDependencyValue to readSettingValue, which the text merge did not flag, so applyEnableEffect now calls readSettingValue. Renumber this change's own 0.261.260 references to 0.261.265. The base's 0.261.260 (the Web Search nested settings fix) is unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 6, 2026
…ber the File Sync single card to 0.261.266 Keep both sides of each conflict: the group `anchor` descriptor alongside `open_until_set`, both new vocabulary and section-logic checks, and both Knowledge doc entries. Anchored panels and their placement now pass the field index and runtime flags, and use the open-until-set group reader, the same way the base's card body does. 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 6, 2026
, #1671, #1674) and renumber the Operations settings parity to 0.261.269 Conflict resolutions: - admin_settings_fields.py: keep the full Operations block. The Application Insights and Health Check declarations #1670 added beside Appearance are superseded by it, and its mixed-source telemetry switch moves into the Operations Application Insights section, after the global logging readouts. Keep #1668's on_enable documentation and both sides' V2_ONLY_FIELDS entries. - route_backend_v2.py: fold content_understanding_supported into _build_runtime_flags. - SettingsSection.tsx, AdminSettingsPage.tsx, adminFields.ts: keep both the section guide and runtimeFlags props, and on_enable beside the Operations field properties. - operations.md, release_notes.md and tests: keep both sides. Both enable_dai_debug and enable_mixed_source_development_telemetry are documented rather than exempted, and Workspaces and Operations are both fully described. - Renumber this branch's 0.261.260 references to 0.261.269; the base's own 0.261.260 Web Search fix references are unchanged. 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
…rosoft#1665, microsoft#1667, microsoft#1668) and renumber the mixed-source settings fix to 0.261.266 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
enable_search_result_cachingunder Knowledge > Web & Research > Web Search, as a bare switch labelled with its key. It had no declared field, so theenable_*fallback scan placed it by word stems. "search" ties Web Search and Azure AI Search, and Web Search wins because it comes first in navigation order. The setting actually caches workspace document searches against Azure AI Search, not web search. Nothing on the page told an admin what it did or whether to leave it on.search_cache_ttl_secondsas Cache lifetime (seconds): 60 to 3,600, default 300, shown only while caching is on. The runtime already read this value, but no interface could edit it.functions_settings.pyand in theutils_cache.get_cache_settings()fallback. A cache hit skips the query embedding and one semantic-ranked hybrid query per in-scope index, and it returns the same sources for the same question. Reuse is safe because the cache key includes a fingerprint of every in-scope document (id, version, content screening state). If an admin has already saved it as Off, that value is kept.docs/admin/knowledge.mdexplains the cache, lists both settings, and adds a troubleshooting row.docs/admin/scale.md.After: rendered by the new Playwright test from the built SPA, using the real field schema and synthetic fixture settings.
Notes for reviewers
V2_ONLY_FIELDS. The classic Azure AI Search card briefly had a control in late 2025, but the classic save handler never stored it and the control was removed. The classic page is unchanged, and the new functional test fails if a classic form starts submitting either key.suffix; only range controls do.Linked issue
N/A, there is no associated issue. The investigation found two existing search cache problems. This PR doesn't change them, but each is worth its own issue:
invalidate_group_search_cacheandinvalidate_public_workspace_search_cachefilter onCONTAINS(c.doc_scope, <id>), butdoc_scopestores only the scope name. So they delete nothing, unless the group call passesdocument_id. Document fingerprints still keep results correct. The cache lifetime is what bounds staleness for changes that do not alter a document's version.search_cachecontainer has no Cosmos TTL:config.pysets none, and the Bicep and Terraform templates set it to null. An expired entry is deleted only when the same search is read again or an invalidation happens to match it. Entries for searches that are never repeated accumulate.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-only (0.261.261 -> 0.261.262)deployers/version.txtbumped, or not needed becausedeployers/was not changedTesting / validation
All results are from the merged tree: this branch plus V2 at
d2d7b1d44.npm ciran once before the merge, and the merge did not change the lockfile.From
functional_tests/:python test_search_result_cache_admin_setting.py(new)python test_v2_admin_capability_placement.pypython test_v2_admin_nested_setting_reads.pypython test_v2_admin_secret_field_handling.pypython test_admin_settings_fields_registry_integrity.pypython test_v2_admin_knowledge_web_research.pypython test_v2_admin_knowledge_extraction.pypython test_v2_admin_knowledge_audio_video.pypython test_v2_admin_knowledge_file_sync.pypython test_v2_admin_schema_vocabulary.pypython test_v2_admin_settings_normalization.pypython test_v2_admin_field_renderer_coverage.pypython test_v2_admin_settings_layout.pypython test_shared_ai_connections_admin_schema.pypython test_docs_app_surface_coverage.pypython test_docs_site_quality.pyFrom the repo root:
python scripts\build_docs_inventory.py --checkpython -m pytest functional_tests/test_search_result_cache_admin_setting.py functional_tests/test_v2_admin_capability_placement.py -q -p no:cacheprovidernpm --prefix application/v2_ui ci --no-audit --no-fund --loglevel=errornpm --prefix application/v2_ui run buildtsc -bandvite build)python -m pytest ui_tests/test_v2_admin_search_result_cache.py ui_tests/test_v2_admin_settings_wide_layout.py -q -p no:cacheproviderFour tests already fail and are unrelated to this change. Each fails the same way on V2
d2d7b1d44without this branch, checked in a clean worktree fromfunctional_tests/:python test_v2_admin_settings_schema.py: 10/11. The default forcore-plugin-toggles.m365_trusted_download_hostsis[], not astr.python test_admin_settings_nav_map.py: 3/4. Thecontent-screeningtab has no matching pane.python test_admin_settings_sidebar_card_parity.py: 3/4. Them365-retrieval-configurationcard has no sidebar destination.python test_v2_admin_security_parity.py: 7/8. Nothing claimschat_content_settings_presentincontent-screening.html.Manual: reviewed the Playwright screenshot shown above.
Documentation
Security checklist
@swagger_route(security=get_auth_security())(no new routes)sanitize_settings_for_user()(no change; only the admin field schema changed)