Repository navigation
Fix Orchestrate in shared chats, Microsoft 365 steps and agents in plans - #1676
Merged
Paul Lizer (paullizer) merged 5 commits intoOct 7, 2026
Merged
Paul Lizer (paullizer) merged 5 commits into
Paul Lizer (paullizer) merged 5 commits into
Conversation
Action and agent steps now trust the signed-in session the same way manual chat does, instead of re-attesting the live configuration. Microsoft 365 action steps no longer fail with "A required retained result is unavailable or changed", and local agents (including agents with Microsoft 365 actions) can run as plan steps. - Session-trusted references for action and agent sources (access is still re-checked on every read; older attested results stay readable). - Agent steps enter a Microsoft 365 step scope for the agent's own actions. - Specific refusal codes are kept in diagnostics, and integration failures get a dedicated message. - Composer seeds an explicit @agent or @model tag into the Orchestrate plan. Fixes #1660 Fixes #1661 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
- Composer: in a shared conversation, Orchestrate applies the manual chat send rule first. A message for people only is posted to the thread with no plan. - The conversation owner's requests are planned against a hidden backing record at the shared id. The question and answer are mirrored into the shared thread after membership is rechecked. Lookups by the shared id skip the backing, republished answers update the shared copy, and deleting the shared conversation deletes the backing. - Microsoft 365: in a shared conversation the requester's explicit request is their consent, recorded as a shared_by_request audit event. Workflow "Run as" approvals are unchanged. - Fix docs, admin and guide updates, release notes, and tests for this change and the previous commit. Fixes #1659 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the personal conversation authorization helper for summary reads, clarify collaboration message return shapes, and remove CodeQL error/notice patterns from shared Orchestrate tests and helpers. Refresh affected isolated tests so they cover the new route dependencies and version policy. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
- Capture container reads, HTTP calls and lookups before asserting in the shared Orchestrate tests, so no checked operation runs inside an assert. - Add test_orchestration_collaboration_codeql_alerts.py: the collaboration mirror helper returns three values on every path, the orchestration module uses one collaboration import style, and both collaboration modules import cold and offline in either order, in normal and optimized Python. - List the new test in the shared conversations fix doc. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… 0.261.270 The Operations settings parity (#1675) took 0.261.269, so this pull request's version, release notes section and version references move to 0.261.270. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Paul Lizer (paullizer)
merged commit Oct 7, 2026
d8eeec1
into
paullizer-react-v2-ui
11 checks passed
Paul Lizer (paullizer)
added a commit
that referenced
this pull request
Oct 7, 2026
…ditors to 0.261.271 Brings in the shared Orchestrate fixes (#1676), which took 0.261.270, the version this pull request had moved to. - config.py: VERSION 0.261.271 (both sides had moved to 0.261.270). - release_notes.md: this pull request's section moves to v0.261.271 above the base's v0.261.270 Orchestrate section, which is kept unchanged. - Renumbered this pull request's 30 other 0.261.270 references; the fix doc's version transition now reads 0.261.270 -> 0.261.271. The base's own 0.261.270 references are untouched. - No other files changed on both sides; docs/_data/app_surface.yml regenerated and unchanged. 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
shared_by_requestaudit event, without a pending approval. Workflow Run as approvals and history publication approvals are unchanged.Linked issue
Fixes #1659
Fixes #1660
Fixes #1661
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.268 → 0.261.269)deployers/version.txtbumped, or not needed becausedeployers/was not changedTesting / validation
All runs are on this branch rebased onto
paullizer-react-v2-uiat 7bc21b6, Python 3.12 on Windows, withPYTHONPATH=application/single_app;functional_tests(plus a local shim that setswerkzeug.__version__for the installed Werkzeug).New and changed tests, each with
python -m pytest <file> -q -p no:cacheprovider:functional_tests/test_orchestration_session_trusted_sources.py: passed (9)functional_tests/test_orchestration_m365_actions.py: passed (18)functional_tests/test_orchestration_shared_conversations.py: passed (10)functional_tests/test_orchestration_shared_backing_lookups.py: passed (12)functional_tests/test_m365_shared_request_consent.py: passed (12)functional_tests/test_m365_provider_core.py: passed (124)test_orchestration_external_bootstrap.pypassed (72),test_orchestration_external_sources.pypassed (39, plus 102 subtests),test_orchestration_external_configuration_capture.pypassed (110),test_orchestration_external_preflight_adapter.pypassed (227),test_orchestration_local_agent_capture.pypassed (30),test_orchestration_turn_recovery_identifiers.pypassed (6),test_document_provenance_versions_and_guards.pypassed (161)node functional_tests/test_v2_shared_orchestration_routing.mjs: passed (8/8)python ui_tests/test_v2_shared_orchestration_routing.py: passed (4/4). Three of the four fail against the upstream composer.Regression comparison:
python -m pytest functional_tests/<file> -q -p no:cacheprovidereach. They cover everytest_orchestration_*,test_agent_delegation*and*m365*file, plus the collaboration, conversation, export, scope lock, retention, MCP, upload and provenance tests for the changed lookups. Result: 8,767 passed, and 149 failed in 31 files.test_orchestration_plan_revision_routes.pyfails setup on both withImportError: cannot import name 'enabled_required'. No regressions.UI:
npm run typecheckandnpm run buildinapplication/v2_ui: passed.ui_tests/test_v2_orchestration_*.pyfiles, afternpm --prefix .\application\v2_ui run build -- --outDir ..\..\ui_tests\artifacts\orchestration-plan-editor: 26 passed.test_v2_orchestration_plan_editor_backend.pyerrors in setup, because it reusestest_orchestration_plan_revision_routes.py, which has the pre-existingImportErrorabove.test_v2_collaboration_ux.py(4),test_v2_new_chat_reset.py(7),test_v2_chat_image_uploads.py(15),test_v2_chat_deleted_messages.py(2),test_v2_inline_maps.py(5),test_v2_media_galleries.py(5),test_v2_plan_editor_references.py(11),test_v2_sidebar_conversation_scroll.py(9) andtest_v2_workflow_ask_ai_proposal.py(3).Docs and route policy:
python functional_tests/test_docs_app_surface_coverage.py: 7/7 passedpython functional_tests/test_docs_site_quality.py: 6/6 passedpython functional_tests/route_tests/test_route_blueprint_policy_inventory.py: 12/12 passedpython functional_tests/route_tests/test_route_unauthenticated_policy_contract.py: 7/7 passedpython functional_tests/route_tests/test_route_policy_test_coverage.py: 2/2 passedNot run, because they need a deployment. After deploying, repeat the scenarios from the issues:
external_configuration_unavailableforaction_invokeoragent_invokesteps.Documentation
docs/explanation/release_notes.md, 0.261.269)docs/admin/orchestration.md,docs/guides/microsoft-365-conversation-data.md)ORCHESTRATION_SESSION_TRUSTED_ACTION_AGENT_STEPS_FIX.md,ORCHESTRATION_SHARED_CONVERSATIONS_FIX.md)Security checklist
@swagger_route(security=get_auth_security())(no new routes)sanitize_settings_for_user()(no settings payload changes)