Skip to content

Fix same-conversation action credential continuation - #1776

Merged
Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-credential-continuation-failure
Oct 17, 2026
Merged

Paul Lizer (paullizer) merged 2 commits into
paullizer-react-v2-uifrom
paullizer-credential-continuation-failure

Conversation

@paullizer

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

Copy link
Copy Markdown
Contributor

Summary

  • Fix successful credential saves followed by failed same-conversation continuation. Initial workspace chat and resume used different tool inventories and defaults, causing the execution-signature guard to reject the application's own reconstruction.
  • Retain the actual server-owned per-user, global, or agent-core construction profile in new chat continuation descriptors and share the corresponding registrations. Resume builds a fresh invocation-local agent with matching capabilities, resolves the saved credentials at the blocked tool boundary, and persists the answer in the original conversation without reposting the question or replaying completed tools.
  • Preserve authorization, current configuration/model/tool checks, destination confirmation, identity revisions, and single-use continuation protections. Add safe allowlisted failure diagnostics, fresh-construction and browser/backend regressions, and versioned documentation. Bump the application from 0.261.344 to 0.261.346: the continuation fix was implemented in 0.261.345, and explicit browser-fixture reuse was added during review in 0.261.346.
  • Apply to new requests only, including new requests in existing conversations. No old-request repair, migration, automatic replay, new connector adapters, or production deployment. Target the user-approved paullizer-react-v2-ui base.

Linked issue

N/A. The user chose not to create an 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

Should this become a Latest Feature card?

  • Yes
  • No
  • Already added

Screenshot needed for the card?

  • Yes
  • No
  • Attached

Release notes were offered but approval was unavailable, so docs/explanation/release_notes.md is unchanged. The feature documentation, user guide, and new fix documentation describe the change.

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

Testing / validation

Python commands used the session virtual environment and the repository's application/functional-test import paths. Application storage, model transport, and provider transport were offline; the browser regression drives the real React card and actual Flask credential/message routes. No live user credentials or production mutations were used.

  • python -m pytest ui_tests\test_v2_action_credentials_backend.py ui_tests\test_playwright_connection_auth.py ui_tests\test_v2_action_credentials.py -q --tb=short - 26 passed after the fixture-only review fix in 3ed7615e4. This explicitly reuses the shared fixture through its imported module, preserving module-local discovery and local/Azure browser selection without suppressing CodeQL's unused-import warning.
  • python -m pytest functional_tests\test_action_credentials_chat_reconstruction.py ui_tests\test_v2_action_credentials_backend.py -q --tb=short - 17 passed on the continuation implementation, including genuinely absent Fact Memory settings, fresh agents, streaming, existing conversation history, new/selected/replaced identities, rejected credentials, persistence failure, real Yamcs protobuf results, and same-conversation browser response delivery.
  • python -m pytest ui_tests\test_v2_action_credentials_backend.py ui_tests\test_v2_action_credentials.py -q --tb=short - 23 passed.
  • python -m pytest functional_tests\test_action_credentials_chat_reconstruction.py functional_tests\test_action_credentials_sk_continuation.py functional_tests\test_action_personal_credentials.py functional_tests\test_action_credentials_orchestration_continuation.py functional_tests\test_action_credentials_bootstrap.py functional_tests\test_agent_delegation_runtime.py functional_tests\test_agent_delegation_auth_handoff.py functional_tests\test_logged_core_plugins.py functional_tests\test_global_agent_scope_gate.py -q --tb=short - 154 passed, 1 failed. The failure is the pre-existing synthetic thought-tracker test described below.
  • python scripts\check_cosmos_response_boundaries.py --run-contracts - 1,079 passed and 244 subtests passed, with external networking blocked. Inventory review: 1,066 owners, 409 doubles, zero review gaps.
  • 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 - 30 passed.
  • node .\functional_tests\test_v2_action_personal_credentials.mjs - passed authoring, projection, transport, and stream checks.
  • npm --prefix .\application\v2_ui run build -- --logLevel error - passed, including TypeScript compilation.
  • python .\functional_tests\test_docs_app_surface_coverage.py - 7/7 passed; committed application-surface inventory is current.
  • python .\functional_tests\test_docs_site_quality.py - 6/6 passed.
  • git diff --check and git diff --cached --check - passed.

Known baseline failures, not hidden or relaxed by this change:

  • python -m pytest functional_tests\test_logged_core_plugins.py -q --tb=short fails because its synthetic tracker records no thought events. The same failure was reproduced independently with unchanged baseline application source.
  • Nine AST-extraction failures in test_agent_delegation_entrypoints.py were reproduced identically against unchanged baseline source. Those fixtures omit dependencies referenced by the extracted functions. This PR does not claim that broader suite is green or change unrelated fixtures.

Documentation

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

Updated PERSONAL_ACTION_CREDENTIALS.md and the personal-action-credentials user guide. Added ACTION_CREDENTIAL_CHAT_RECONSTRUCTION_FIX.md with the root cause, construction contract, scope, validation results, and baseline limitations. Release-note approval remains outstanding as noted above.

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 routes or frontend settings responses were added. Existing security decorators are unchanged. Construction metadata is server-owned and excluded from agent serialization; it does not grant access. New diagnostics retain only allowlisted failure codes, static stages, exception types, and hashed correlations, not exception messages or credential/provider payloads.

Preserve server-owned construction profiles across credential pauses without weakening execution guards. Add fresh-agent and browser regressions, safe diagnostics, and versioned documentation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment thread ui_tests/test_v2_action_credentials_backend.py Fixed
Reference the shared Playwright fixture through its imported module to retain pytest discovery without an unused import. Record the passing browser checks and bump the patch version.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@paullizer
Paul Lizer (paullizer) merged commit 6a70fc3 into paullizer-react-v2-ui Oct 17, 2026
12 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