Skip to content

Enable policy-governed operations in chat orchestration - #1748

Merged
Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-planner-action-investigation
Oct 10, 2026
Merged

Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-planner-action-investigation

Conversation

@paullizer

@paullizer Paul Lizer (paullizer) commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Orchestration previously prohibited operations and filtered M365 writes, so an email request could become a limitation-only answer despite a configured email integration. Add explicit gather/operate intent and authorized named inputs so plans can research, prepare content, act, and report the actual outcome without keyword heuristics.
  • Preserve enabled functions, permissions, sharing approvals, and manual/delayed/automatic delivery policies. Omitted intent remains gathering, keeping old M365 plans read-only until replanned.
  • Bind outgoing M365 actions to their original owned orchestration step. Private conditional operation receipts reuse confirmed results and prevent blind replay of uncertain or changed effects, including after an SDK catches a post-call failure. Generic tools and opaque remote agents use conservative recovery; this is not provider-independent exactly-once delivery.
  • Show operation intent in the existing V2 plan view and refresh existing outgoing-action cards after integration steps, interrupted streams, and run reconciliation. Complete inputs are rejected rather than truncated when size or model budgets are exceeded.

Linked issue

N/A - no associated issue.

Release Notes & Latest Features

  • New Feature
  • Bug Fix
  • UI Enhancement
  • Breaking Change
  • Internal only

Is this visible to end users?

  • Yes
  • No

Is this admin-facing (Admin Settings, governance, deployment, config)?

  • Yes
  • No

Existing integration configuration and governance apply; no new admin toggle or permission is introduced.

Should this become a Latest Feature card?

  • Yes
  • No
  • Already added

Screenshot needed for the card?

  • Yes
  • No
  • Attached

Release notes and a Latest Feature card were not changed. Release-note approval was requested but no user decision was available.

Version bump

  • application/single_app/config.py VERSION third segment bumped, or not needed because this is docs-only
  • deployers/version.txt bumped, or not needed because deployers/ was not changed

Application version: 0.261.320 -> 0.261.321. No deployer changes.

Testing / validation

Final combined regression command, from the repository root:

$env:PYTHONPATH = "$PWD\application\single_app;$PWD\functional_tests"
& 'C:\Users\paullizer\.copilot\session-state\2d5bbbcf-1af3-467f-9342-4fa1680d1cb4\files\operation-test-env\Scripts\python.exe' -m pytest functional_tests\test_orchestration_operation_planning.py functional_tests\test_orchestration_operation_runtime.py functional_tests\test_orchestration_operation_inputs.py functional_tests\test_orchestration_action_runtime.py functional_tests\test_orchestration_m365_actions.py functional_tests\test_orchestration_m365_approval_retry_flow.py functional_tests\test_m365_pending_delivery.py functional_tests\test_orchestration_recovery_safety.py -q --disable-warnings

Result: 176 passed. The isolated environment used repository-pinned Semantic Kernel 1.39.4 and compatible cryptography to resolve a host OpenSSL import failure; production dependency manifests and global packages were unchanged.

  • npm --prefix .\application\v2_ui run build -- --outDir ..\..\ui_tests\artifacts\orchestration-plan-editor - passed; existing large-chunk warning remains. Build artifacts are not committed.
  • python .\scripts\build_docs_inventory.py - succeeded; no semantic inventory changes.
  • python .\functional_tests\test_docs_app_surface_coverage.py - 7/7 passed.
  • python .\functional_tests\test_docs_site_quality.py - 6/6 passed.

Additional recorded validation: compatibility suite 246 passed, browser action-display suite 18 passed, browser editor/inline approval/outgoing-card suite 52 passed, TypeScript check, blocked-network cold imports, and whitespace check passed. Exact invocations for these additional checks are not reproduced here because they were not retained in the handoff summary. Counts overlap and are not a unique total.

No real email or invitation was sent. Live planner-model selection and the original deployed run were not verified; production deployment is unchanged.

Documentation

  • Release notes updated, or not needed
  • Feature documentation updated, or not needed
  • Fix documentation updated, or not needed

Updated orchestration/M365 feature docs, admin guidance, plan-review guide, email/calendar references, and chat-control guidance. Added docs/explanation/fixes/ORCHESTRATION_OPERATION_CAPABILITY_FIX.md with root causes, behavior, recovery boundaries, and validation limits. Release notes remain a follow-up pending user approval.

Security checklist

  • New Flask routes include @swagger_route(security=get_auth_security())
  • Settings sent to non-admin frontends use sanitize_settings_for_user()
  • Browser JavaScript is served from local SimpleChat static assets only; no CDN-hosted JS
  • No secrets, keys, connection strings, or local-only artifacts are included

No new routes or raw frontend settings are introduced. Projected capability metadata excludes secrets; existing identity, conversation, action, and integration policy checks remain in force. External text and named inputs do not grant authority for extra recipients or operations.

Add explicit operation intent, authorized named inputs, M365 delivery origins, durable retry receipts, and outgoing-action UI recovery. Preserve existing delivery policies and read-only saved plans; document the change in v0.261.321.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread application/single_app/functions_orchestration_operations.py Fixed
Comment thread application/single_app/functions_action_catalog.py
Comment thread application/single_app/functions_m365_operations.py
Comment thread application/single_app/functions_m365_runtime.py
Comment thread application/single_app/functions_orchestration_operations.py
Comment thread functional_tests/test_orchestration_operation_inputs.py Fixed
Comment thread functional_tests/test_orchestration_operation_planning.py Fixed
Comment thread functional_tests/test_orchestration_operation_runtime.py Fixed
Comment thread functional_tests/test_orchestration_operation_runtime.py Fixed
Comment thread functional_tests/test_orchestration_operation_runtime.py Fixed
Observe scoped UUID changes, preserve explicitly registered test fixtures, remove unused tuple bindings, and cover early imports plus real web and scheduler bootstrap in normal and optimized Python. Document deferred dependency graph cycles without claiming lazy imports remove them.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit 7e5f64c into paullizer-react-v2-ui Oct 10, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants