Ctrl K
ComunidadGuías…

feature-map/azure-devops.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Azure DevOps pull requests

Azure DevOps Services sessions show pull requests in the shared Pull Requests
panel, composer controls, and Canvas cards. The execution host's PAT or Azure
CLI sign-in reads the request. The panel identifies Azure requests with `!`.

## Sub-features

- `summary`: organization/project/repository, request title, description and status.
- `comments`: request comments on their own tab, whose label shows the count.
- `changes`: local file diff and expanded context pinned to displayed revisions, with a path filter and copy-path and open actions. Find searches the fetched patch from the toolbar search button, or Cmd/Ctrl+F while focus is in the Changes tab.
- `associations`: link, select and unlink a request from another repository.
- `partial`: retain loaded results and explain incomplete data or unavailable diffs.
- `auth`: an authenticated PAT works without the Azure CLI; account switching is absent.
- `tracking`: supported successful agent mutations associate their resulting request.
- `render-recovery`: Panel render failures offer **Try again** without removing
  chat, Workspace tabs or mobile Close.

## How to get to it (user POV)

- `desktop-rail`: open Workspace and choose Pull Requests.
- `desktop-composer`: click the request number beside the session composer.
  Hover it to open a request in a new tab from the status preview; see
  [pull-request-conversations.md](pull-request-conversations.md).
- `mobile-composer`: tap the request number to open the full-screen panel.
- `canvas`: when Canvas is enabled, follow a request link on a session card.
- `agent-tool`: create or update a request through the session's agent tools.

A session with one PR opens its details directly under **Pull Requests**.
With multiple PRs, select a row in the list to open its details;
**All pull requests** returns to the list. Stored metadata and unlinking remain
available while the host is offline; checks and merge controls resume after
reconnection.
On desktop, mobile and Canvas, **Try again** retries failed panel content;
switching sessions also clears a failed panel. Healthy chat drafts stay mounted.

## Driving it with the repro environment

Preconditions: use the [Verify Omnigent skill](skills/verify-omnigent/SKILL.md)
and an isolated instance. Browser fixtures replace provider responses and do
not contact Azure DevOps or invoke the Azure CLI.

Shared render recovery has component coverage in
`web/src/components/RenderErrorBoundary.test.tsx` and
`web/src/shell/AppShell.pullRequestTabVisibility.test.tsx`. For each panel entry
above, inject a panel render exception, confirm chat and tab/Close controls
remain usable, clear the fault, and choose **Try again**. Switching sessions
should also recover. This is separate from provider authentication failures.

- `desktop-rail`, `desktop-composer`, and `mobile-composer`:
  `tests/e2e_ui/azure_devops/test_azure_devops_tab.py::test_azure_devops_tab_shows_provider_repo_and_pull_request`
  opens Summary and Changes, then expands unchanged context. The rail variant
  also proves a signed-in credential works without the Azure CLI.
- Associations:
  `tests/e2e_ui/azure_devops/test_azure_devops_tab.py::test_azure_link_select_unlink_explains_outside_workspace_diff`
  links another repository's request, shows its diff limitation, switches
  selection and removes it.
- Partial and unsupported states:
  `tests/e2e_ui/azure_devops/test_azure_devops_tab.py::test_azure_partial_results_keep_loaded_data_and_explain_unavailable_diff`
  and
  `tests/e2e_ui/azure_devops/test_azure_devops_tab.py::test_unsupported_remote_shows_empty_state_without_a_provider_name`
  check visible explanations, including the Comments tab's incomplete-list
  notice, without implying an empty successful response.
- `canvas`:
  `tests/e2e_ui/azure_devops/test_azure_devops_tab.py::test_azure_canvas_link_uses_provider_identity`
  checks the request's `!` number and exact external URL.
- `agent-tool`: browser fixtures do not verify automatic tracking. Use a permitted
  test repository and the [observer instructions](../docs/AZURE_DEVOPS.md#observer-limits);
  after a successful supported creation or update, confirm the resulting request
  appears in the panel. Reads and comments must not add an association.

## Gotchas

- The tab retains the generic Pull Requests label; its provider heading, number
  and Canvas link use Azure DevOps metadata.
- An authenticated PAT does not require the Azure CLI. Managed sandbox credential
  provisioning and Azure DevOps Server on premises are separate features.
- Linked requests outside the checkout can show a summary but have no local
  diff. Missing commits may finish fetching in the background; refresh to retry.
- Mocked browser evidence proves rendering and interaction, not live account
  access, local git fetching, or native agent tracking.
- Keep screenshots and recordings outside the tracked tree.