Repository navigation
Fix document status classification across uploads and workspaces - #1789
Merged
Paul Lizer (paullizer) merged 3 commits intoOct 20, 2026
Conversation
Align terminal status predicates across Python, React and classic workspace consumers so filenames and retry details cannot stop polling or force completion. Preserve failure, screening and approval behavior, add cross-runtime and SDK-backed regressions, and bump the application to 0.261.349. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve both the upload status fix and the base branch's saved-memory resolution changes. Refresh this fix's version references and verify the combined regressions, browser workflows and storage inventory. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve incoming SQL diagnostics alongside document status classification and refresh the fix's version references and integration evidence. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 20, 2026
359c98e
into
microsoft:paullizer-react-v2-ui
11 of 12 checks passed
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
A filename containing
failedcaused a successfully processed attachment to display Failed and stop polling. Similar substring checks could mistake filenames or intermediate processing details for completion.0.261.353to0.261.354. The base merges preserve incoming saved-memory resolution and SQL connection diagnostics changes alongside this fix.No schema migration, automatic re-upload, timeout increase or authorization change. Historical stored percentages are not rewritten. No live upload or deployment was performed. External harness findings remain separate session artifacts and are not included in this PR.
Linked issue
N/A. The requester explicitly asked not to create an issue.
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 changedTesting / validation
Backend commands used an isolated Python environment with the application's pinned Cosmos SDK 4.9.0, Flask 3.1.3 and Werkzeug 3.1.6. Interpreter paths are shown as
pythonfor portability. For the network-blocked gate,PYTHONPATHincludedapplication\single_appandfunctional_tests, andPYTEST_ADDOPTS=-x.python -u .\scripts\check_cosmos_response_boundaries.py --run-contracts- passed before the base merge: 1,163 tests and 244 subtests; 1,067 owners, 412 doubles, zero review gaps.python -m pytest .\ui_tests\test_v2_chat_upload_status.py .\ui_tests\test_document_status_classification.py .\ui_tests\test_chat_workspace_upload_progress_polling.py .\ui_tests\test_group_document_filename_xss_rendering.py -x -q --tb=short- passed: 101 tests using local assets and intercepted APIs, not live uploads.python -m pytest .\ui_tests\test_v2_chat_upload_status.py::test_removing_processing_upload_cancels_tracking -q --tb=short -x- passed: 1 test, after strengthening cancellation coverage with simulated time beyond polling intervals.python -m pytest .\functional_tests\test_document_processing_status.py .\functional_tests\test_v2_chat_context_picker.py .\functional_tests\test_v2_documents_explorer.py .\functional_tests\test_content_screening_read_boundaries.py::SearchBoundaryTests::test_chat_readiness_cannot_infer_clearance_from_progress -q --tb=short -x- passed: 96 tests.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 -q --tb=short -x- passed: 30 tests.npm --prefix .\application\v2_ui run typecheck- passed.npm --prefix .\application\v2_ui run build- passed, with the existing bundle-size warning.python .\functional_tests\test_docs_app_surface_coverage.py- passed: 7 checks, including inventory freshness; also passed after both base merges.python .\functional_tests\test_docs_site_quality.py- passed: 6 checks; also passed after both base merges.git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol --no-pager diff --check- passed before commit.Earlier base integration at
f6a1a7e65:python -m pytest -p test_support.cosmos_network_guard .\functional_tests\test_document_processing_status.py .\functional_tests\test_v2_chat_context_picker.py .\functional_tests\test_v2_documents_explorer.py .\functional_tests\test_document_search_metadata_sync.py .\functional_tests\test_orchestration_request_memory_resolution.py .\functional_tests\test_fact_memory_read_only_context.py .\functional_tests\test_orchestration_conversation_sources.py -x -q --tb=short --disable-warnings- passed: 194 tests and 5 subtests.python -m pytest .\ui_tests\test_v2_chat_upload_status.py .\ui_tests\test_document_status_classification.py .\ui_tests\test_chat_workspace_upload_progress_polling.py -x -q --tb=short- passed: 27 tests.python .\scripts\check_cosmos_response_boundaries.py- passed: 1,067 owners, 412 doubles, zero review gaps.Latest base integration at
00c80b8cb, incorporating base0ffe306d8and resolving the version-only conflict to0.261.354:python -m pytest -p test_support.cosmos_network_guard .\functional_tests\test_document_processing_status.py .\functional_tests\test_v2_chat_context_picker.py .\functional_tests\test_v2_documents_explorer.py .\functional_tests\test_document_search_metadata_sync.py .\functional_tests\test_orchestration_request_memory_resolution.py .\functional_tests\test_fact_memory_read_only_context.py .\functional_tests\test_orchestration_conversation_sources.py .\functional_tests\test_sql_connection_diagnostics.py .\functional_tests\test_sql_connection_diagnostics_runtime.py .\functional_tests\test_plugin_routes_cosmos_contract.py -x -q --tb=short --disable-warnings- passed: 308 tests and 5 subtests, including incoming SQL diagnostics and plugin-route SDK evidence, with network access blocked.python -m pytest .\ui_tests\test_v2_chat_upload_status.py .\ui_tests\test_document_status_classification.py .\ui_tests\test_chat_workspace_upload_progress_polling.py -x -q --tb=short- passed: 27 tests.python .\scripts\check_cosmos_response_boundaries.py- passed: 1,067 owners, 412 doubles, zero review gaps.git -c core.whitespace=blank-at-eol,blank-at-eof,space-before-tab,cr-at-eol --no-pager diff --cached --check- passed before the merge commit.Known unrelated limitation: a broader backend run passed 339 tests before failing in
test_content_screening_read_boundaries.py::SearchBoundaryTests::test_explicit_held_search_selection_errors_without_embedding_or_search. Its extractedhybrid_searchnamespace omits the existingcurrent_public_chat_scopedependency. The same NameError reproduces using the original test source from HEAD against unchanged search code. That fixture repair is outside this fix; the directly affected chat-readiness test passes.Documentation
Added
docs/explanation/fixes/DOCUMENT_STATUS_TEXT_CLASSIFICATION_FIX.mdwith root cause, behavior, compatibility limits and validation. Release notes were offered but left unchanged without approval. No new feature, control or settings key was introduced.Security checklist
@swagger_route(security=get_auth_security())sanitize_settings_for_user()No new routes or settings payloads. Existing authorization and screening boundaries remain unchanged.