@uipath/skills 1.197.0 → 1.197.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/uipath-ixp/SKILL.md +2 -2
  5. package/skills/uipath-ixp/references/label-documents-guide.md +1 -1
  6. package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +1 -1
  7. package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
  8. package/skills/uipath-platform/SKILL.md +10 -1
  9. package/skills/uipath-review/SKILL.md +21 -10
  10. package/skills/uipath-review/references/api-workflows/api-workflow-review-checklist.md +72 -0
  11. package/skills/uipath-review/references/bpmn/bpmn-review-checklist.md +92 -0
  12. package/skills/uipath-review/references/coded-apps/coded-app-review-checklist.md +16 -15
  13. package/skills/uipath-review/references/flows/flow-common-issues.md +1 -25
  14. package/skills/uipath-review/references/flows/flow-review-checklist.md +12 -67
  15. package/skills/uipath-review/references/rpa/long-running-workflow-issues.md +2 -2
  16. package/skills/uipath-review/references/rpa/modern-studio-issues.md +2 -2
  17. package/skills/uipath-review/references/rpa/rpa-common-issues.md +15 -59
  18. package/skills/uipath-review/references/rpa/rpa-review-checklist.md +17 -16
  19. package/skills/uipath-review/references/solution-review-guide.md +1 -1
  20. package/skills/uipath-rpa/SKILL.md +7 -8
  21. package/skills/uipath-rpa/references/cli-reference.md +7 -6
  22. package/skills/uipath-rpa/references/debugging.md +117 -56
  23. package/skills/uipath-rpa/references/environment-setup.md +2 -2
  24. package/skills/uipath-rpa/references/ui-automation-guide.md +12 -2
  25. package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
  26. package/skills/uipath-rpa/references/validation-guide.md +9 -12
  27. package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
  28. package/skills/uipath-troubleshoot/SKILL.md +68 -137
  29. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-action-failed-after-find.md +1 -1
  30. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-cell-targeting-failures.md +1 -1
  31. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-element-not-found.md +1 -1
  32. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-get-text-empty-or-wrong-result.md +2 -1
  33. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-invalid-descriptor.md +1 -1
  34. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-scroll-search-failures.md +1 -1
  35. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-silent-failures-and-false-results.md +1 -1
  36. package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/delete-range-failures.md +2 -1
  37. package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/investigation_guide.md +1 -1
  38. package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/connection-and-auth-failures.md +3 -1
  39. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/investigation_guide.md +1 -0
  40. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/authentication-token-invalid.md +1 -1
  41. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/email-trigger-connection-event-failure.md +2 -2
  42. package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +1 -1
  43. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/application-not-found.md +2 -2
  44. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-coordinate-off-screen.md +2 -2
  45. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-disabled.md +3 -3
  46. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-fix.md +3 -3
  47. package/skills/uipath-troubleshoot/references/activity-packages/word-activities/investigation_guide.md +1 -1
  48. package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-silent-no-substitution.md +2 -0
  49. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/overview.md +26 -0
  50. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/app-request-trigger-connection-lost.md +40 -0
  51. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/handle-app-request-null-reference.md +34 -0
  52. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/initialize-hub-connection-aggregate-failure.md +40 -0
  53. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/summary.md +9 -0
  54. package/skills/uipath-troubleshoot/references/escalation.md +98 -0
  55. package/skills/uipath-troubleshoot/references/investigation_guide.md +41 -1
  56. package/skills/uipath-troubleshoot/references/knowledge-base-guide.md +22 -24
  57. package/skills/uipath-troubleshoot/references/presenting.md +143 -0
  58. package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +2 -0
  59. package/skills/uipath-troubleshoot/references/products/integration-service/cns-error-codes-reference.md +91 -0
  60. package/skills/uipath-troubleshoot/references/products/integration-service/dap-error-codes-reference.md +109 -0
  61. package/skills/uipath-troubleshoot/references/products/integration-service/overview.md +9 -3
  62. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/activity-configuration-corrupt.md +52 -0
  63. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-invalid.md +2 -2
  64. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-not-resolved.md +47 -0
  65. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-general-exception.md +2 -2
  66. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-authenticated.md +46 -0
  67. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-found.md +53 -0
  68. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connector-unavailable.md +48 -0
  69. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-dependency-unavailable.md +59 -0
  70. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-events-callback-failed.md +55 -0
  71. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-operation-conflict.md +41 -0
  72. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-permission-denied.md +54 -0
  73. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-solutions-install-failed.md +66 -0
  74. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-trigger-operation-failed.md +48 -0
  75. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/http-client-exception.md +44 -0
  76. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/missing-required-input.md +38 -0
  77. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/request-failed.md +49 -0
  78. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-mapping-mismatch.md +43 -0
  79. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/token-refresh-failed.md +42 -0
  80. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/trigger-execution-failed.md +47 -0
  81. package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +43 -0
  82. package/skills/uipath-troubleshoot/references/products/maestro/investigation_guide.md +4 -4
  83. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
  84. package/skills/uipath-troubleshoot/references/products/orchestrator/investigation_guide.md +13 -27
  85. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-pending-stale-dispatch.md +2 -2
  86. package/skills/uipath-troubleshoot/references/runtime-exceptions/playbooks/argument-null-exception.md +1 -1
  87. package/skills/uipath-troubleshoot/references/summary.md +33 -12
  88. package/skills/uipath-troubleshoot/references/templates/playbook-template.md +1 -1
  89. package/version-manifest.json +1 -1
  90. package/skills/uipath-troubleshoot/agents/depth-verifier.md +0 -164
  91. package/skills/uipath-troubleshoot/agents/hypothesis-generator.md +0 -42
  92. package/skills/uipath-troubleshoot/agents/hypothesis-tester.md +0 -103
  93. package/skills/uipath-troubleshoot/agents/presenter.md +0 -160
  94. package/skills/uipath-troubleshoot/agents/scope-checker.md +0 -42
  95. package/skills/uipath-troubleshoot/agents/shared.md +0 -97
  96. package/skills/uipath-troubleshoot/agents/triage.md +0 -148
  97. package/skills/uipath-troubleshoot/schemas/evidence.schema.md +0 -118
  98. package/skills/uipath-troubleshoot/schemas/hypotheses.schema.md +0 -71
  99. package/skills/uipath-troubleshoot/schemas/scope-check.schema.md +0 -27
  100. package/skills/uipath-troubleshoot/schemas/state.schema.md +0 -145
@@ -0,0 +1,47 @@
1
+ ---
2
+ confidence: medium
3
+ ---
4
+
5
+ # Trigger Execution Failed (DAP-RT-1050 / DAP-RT-1051 / DAP-RT-1052 / DAP-RT-1053)
6
+
7
+ > **Fault bucket: mixed — classify per code.** `1051`/`1050` → **🛠 B2** (connector trigger endpoint / malformed provider payload — provider-side, wait/escalate). `1053` → **🛠 B1** (object name / operation null or empty — handled by connector configuration, the customer cannot fix it → escalate). `1052` is **debug-only and never appears in runtime telemetry** — out of scope for runtime triage. Lead with the bucket that matches the emitted code. See [dap-error-codes-reference.md](../dap-error-codes-reference.md#fault-ownership--the-two-bucket-decision).
8
+
9
+ ## Context
10
+
11
+ What this looks like — trigger (polling/webhook) runtime codes:
12
+
13
+ | Code | Name | Specific cause | Bucket |
14
+ |---|---|---|:---:|
15
+ | `DAP-RT-1051` | TriggerExecutionFailed | Trigger evaluation call failed or returned empty — connector trigger endpoint issue | 🛠 B2 |
16
+ | `DAP-RT-1050` | TriggerDataMissing | Event payload missing the expected event ID — malformed webhook/poll payload | 🛠 B2 |
17
+ | `DAP-RT-1053` | TriggerInvalidConfiguration | Trigger object name or operation is null/empty — set by connector configuration, not customer-settable | 🛠 B1 |
18
+ | `DAP-RT-1052` | TriggerNoMatches | Zero events matched — **debug-mode-only signal; never emitted in runtime telemetry** | — |
19
+
20
+ What can cause it (cause IDs map to Resolution steps below):
21
+ - **CA001** — Connection used by the trigger is inactive or expired (`1051`)
22
+ - **CA002** — Connector trigger endpoint changed, errored, or returned an unexpected shape (`1051`)
23
+ - **CA003** — Webhook/poll payload from the provider is malformed or missing the event ID (`1050`)
24
+ - **CA004** — Connector configuration produced a null/empty trigger object name or operation — a connector-metadata defect, not a user-settable field (`1053`)
25
+
26
+ What to look for:
27
+ - `ConnectionId` and `RequestId` in the customEvent
28
+ - For `1053`: no provider status — the null/empty object/operation originates in connector configuration, before the provider call
29
+ - Whether the trigger subscription still exists in the external service
30
+
31
+ > The Maestro/Orchestrator-surfaced view (subscription missing, robot lacks Triggers permission, debug-vs-deploy bindings) is [trigger-not-firing.md](./trigger-not-firing.md). Use it for "events occur but no job/instance starts"; use this playbook when a `DAP-RT-105x` code is emitted during trigger evaluation.
32
+
33
+ ## Investigation
34
+
35
+ 1. **Classify the code first.** `1052` (NoMatches) is a debug-mode-only signal — it will not appear in runtime execution telemetry, so it is not a runtime fault to investigate. For `1053`, the fault is in connector configuration (null/empty object name or operation), not a user-settable field — route to escalation, not workflow edits.
36
+ 2. **Read the connection resource file** — identify the connector and connection (see "Connection Resource File" in [overview.md](../overview.md)).
37
+ 3. `uip is connections ping <connection-id>` — verify the trigger's connection is active (primary cause of `1051`).
38
+ 4. `uip is triggers objects <connector-key> <operation>` / `uip is triggers describe ...` — verify the trigger object type and expected payload schema.
39
+ 5. For `1050`: inspect the provider payload (from logs/`RequestId`) for the missing event ID — a provider-side or subscription-config problem.
40
+
41
+ ## Resolution
42
+
43
+ - **`CA001` — `DAP-RT-1051`, connection inactive:** re-authenticate via `uip is connections edit <connection-id>` (see [connection-auth-expired.md](./connection-auth-expired.md) for auth-expiry).
44
+ - **`CA002` — `DAP-RT-1051`, endpoint issue:** verify the trigger object/operation is still supported by the connector; reconfigure if the connector changed.
45
+ - **`CA003` — `DAP-RT-1050`:** verify the subscription in the external service emits the expected event shape; recreate the trigger subscription if the payload contract drifted.
46
+ - **`CA004` — `DAP-RT-1053` (escalate — not customer-fixable):** the trigger object name or operation is null/empty, set by connector configuration. The customer cannot fix this from their workflow. Escalate to the Integration Service owner team with the `DAP-RT-1053` code, `RequestId`, and connector key.
47
+ - **`DAP-RT-1052`:** debug-mode-only signal — never emitted in runtime telemetry. If seen during a debug run, it just means the trigger filter matched zero events; it is not a runtime fault and needs no action.
@@ -2,6 +2,49 @@
2
2
 
3
3
  **Investigation guide:** [investigation_guide.md](./investigation_guide.md) — data correlation rules and testing prerequisites for Integration Service investigations
4
4
 
5
+ **DAP runtime error codes:** [dap-error-codes-reference.md](./dap-error-codes-reference.md) — `DAP-<LAYER>-<CODE>` catalog, telemetry customEvent fields, the two-bucket fault-ownership decision, retry semantics, and code → playbook map. **Start here when the error carries a `DAP-…` code.**
6
+
7
+ **CNS (Connection Service) error codes:** [cns-error-codes-reference.md](./cns-error-codes-reference.md) — `CNS<code>` catalog for the Connection Service HTTP API (connections/connectors/triggers CRUD, portal UI, Maestro and runtime service calls), wire format (`{code, message, traceId}`), telemetry dimensions, overloaded-code traps, retry semantics, and code → playbook map. **Start here when the error carries a `CNS…` code** — when both a DAP and a CNS code are present, the CNS code is the more specific signal.
8
+
9
+ ## Fault ownership — classify before routing
10
+
11
+ Lead every DAP runtime answer with the bucket. The code → bucket tables are the primary classifier; "service error" is your judgment (there is no `IsServiceError` field), derived from whether a provider status is present. Decision rule: no provider status returned (IS-side exception) → take the code's bucket (**B1** for platform/connector defects, **A** for connection/input customer-config codes); a provider status returned (`ProviderErrorCode` present, e.g. `DAP-RT-1101`) → 4xx auth/input → **Bucket A** (customer fixes it); `429`/`5xx` → **Bucket B2** (provider-side, wait/escalate). Full rule in [dap-error-codes-reference.md](./dap-error-codes-reference.md#fault-ownership--the-two-bucket-decision).
12
+
13
+ ## By DAP runtime error code
14
+
15
+ Keyed on the IS-native `DAP-RT`/`DAP-GE` code emitted in execution telemetry (and `ProviderErrorCode` for `DAP-RT-1101`). **Bucket** column: 👤 A = customer-resolvable · 🛠 B1 = IS platform/connector defect (escalate) · 🛠 B2 = provider outage (wait/escalate).
16
+
17
+ | Codes | Bucket | Confidence | Description | Playbook |
18
+ |-------|:---:|:---:|-------------|----------|
19
+ | `DAP-RT-1101` | 👤 A / 🛠 B2 | High | RequestFailed — route by `ProviderErrorCode`: 4xx auth/input → A; 429/5xx → B2 | [request-failed.md](./playbooks/request-failed.md) |
20
+ | `DAP-GE-3004` | 🛠 B1 | High | FailedToGetAccessToken — IS could not get a **first-party UiPath service** token (Orchestrator, Feature Flag service), NOT a connection credential; retry, escalate if sustained | [token-refresh-failed.md](./playbooks/token-refresh-failed.md) |
21
+ | `DAP-GE-3000` `DAP-GE-3005` `DAP-RT-1002` | 👤 A | High | Connection not resolved — deleted/cross-workspace, disabled, or no connection bound | [connection-not-resolved.md](./playbooks/connection-not-resolved.md) |
22
+ | `DAP-RT-1003` `DAP-RT-1007` | 👤 A | High | Missing required input argument or property | [missing-required-input.md](./playbooks/missing-required-input.md) |
23
+ | `DAP-RT-1103` | 🛠 B2 | High | HttpClientException — network-level failure, target host unreachable (DNS/firewall/TLS) | [http-client-exception.md](./playbooks/http-client-exception.md) |
24
+ | `DAP-RT-1050` `DAP-RT-1051` `DAP-RT-1053` | 🛠 B2 / 🛠 B1 | Medium | Trigger eval failed or payload missing → B2; `1053` null/empty object/operation (connector config) → B1 escalate. (`DAP-RT-1052` is debug-only — never at runtime) | [trigger-execution-failed.md](./playbooks/trigger-execution-failed.md) |
25
+ | `DAP-RT-1005` `DAP-RT-1155` `DAP-RT-1156` | 🛠 B1 | Medium | Response could not be mapped to the activity output type — connector schema drift | [response-mapping-mismatch.md](./playbooks/response-mapping-mismatch.md) |
26
+ | `DAP-RT-1000` `DAP-RT-1001` `DAP-RT-1004` `DAP-RT-1008` `DAP-RT-1100` `DAP-GE-3001` | 🛠 B1 | Medium | Activity config null/malformed/unversioned or failed migration — corrupt config blob | [activity-configuration-corrupt.md](./playbooks/activity-configuration-corrupt.md) |
27
+
28
+ ## By CNS (Connection Service) error code
29
+
30
+ Keyed on the `code` field of the Connection Service API error body (`{ "code": "CNS…", "message": "…", "traceId": "…" }`). ⚠ Several codes are overloaded across subsystems (`CNS1025`, `CNS1001`, `CNS1050`, `CNS1048`/`CNS1026`) — read the message and failing operation before routing; full trap list in [cns-error-codes-reference.md](./cns-error-codes-reference.md).
31
+
32
+ | Codes | Bucket | Confidence | Description | Playbook |
33
+ |-------|:---:|:---:|-------------|----------|
34
+ | `CNS1006` `CNS1000` `CNS1049` `CNS1003` | 👤 A | High | Connection not found from the caller's context — deleted, cross-workspace, no connections for connector, stale auth session | [cs-connection-not-found.md](./playbooks/cs-connection-not-found.md) |
35
+ | `CNS1008` `CNS1021` `CNS1061` | 👤 A | High | Connection not in authorized state — expired/revoked token, unauthenticated shell, wrong auth type; re-authenticate | [cs-connection-not-authenticated.md](./playbooks/cs-connection-not-authenticated.md) |
36
+ | `CNS1045` `CNS1044` `CNS1046` `CNS1047` `CNS1043` `CNS3001` | 👤 A | High | Permission/authorization denied — folder permission (`Connections.View`), OAuth scope, client allow-list, Automation Ops policy | [cs-permission-denied.md](./playbooks/cs-permission-denied.md) |
37
+ | `CNS1001` `CNS1002` `CNS1004` → A · `CNS1075` `CNS2045` → B1 | 👤 A / 🛠 B1 | High | Connector unavailable — wrong/missing/disabled connector reference (A); connector deployment/catalog drift (B1, `CNS1075` is a deliberate non-retryable 409) | [cs-connector-unavailable.md](./playbooks/cs-connector-unavailable.md) |
38
+ | `CNS1020` `CNS1014` `CNS1025` `CNS1039` → A · `CNS2004` → B1 | 👤 A / 🛠 B1 | High | Trigger CRUD failed — bad ID, delete blocked by active processes, malformed/S2S request (A); persisted config undeserializable (B1) | [cs-trigger-operation-failed.md](./playbooks/cs-trigger-operation-failed.md) |
39
+ | `CNS1005` `CNS2000` `CNS1015`–`CNS1019` `CNS1024` `CNS1029` `CNS2011` | 🛠 B1 | Medium | Inbound event-callback processing failed (machine-to-machine) — customer symptom is a trigger that doesn't fire; `CNS1005` has a large benign baseline | [cs-events-callback-failed.md](./playbooks/cs-events-callback-failed.md) |
40
+ | `CNS2003` `CNS2005` `CNS2006` `CNS2007` `CNS2009` `CNS2010` `CNS2012` `CNS2001` `CNS2008` `CNS1036` → B1 · `CNS1042` `CNS1101` → B2 | 🛠 B1 / 🛠 B2 | High | Internal dependency failed (SQL/Orchestrator/Identity/message bus → B1) or the third-party provider is erroring/rate-limiting (B2) — retry, then escalate | [cs-dependency-unavailable.md](./playbooks/cs-dependency-unavailable.md) |
41
+ | `CNS3002` `CNS1007` `CNS1038` | 🔧 / 👤 A | High | Conflict/duplicate — in-progress migration/backfill lock (ops), duplicate-key create race, duplicate name | [cs-operation-conflict.md](./playbooks/cs-operation-conflict.md) |
42
+ | `CNS1050` `CNS1055`–`CNS1074` (Solutions subset) | 👤 A / 🛠 B1 | Medium | Solutions package install/validation — spec errors, connector-version reconciliation, shell connections, stuck publish | [cs-solutions-install-failed.md](./playbooks/cs-solutions-install-failed.md) |
43
+
44
+ ## By symptom (Maestro/Orchestrator-surfaced)
45
+
46
+ Keyed on the Maestro IntSvc code (`102002`…) or the user-facing message. Same underlying failures from the Maestro/Orchestrator surface.
47
+
5
48
  | Issue | Confidence | Description | Playbook |
6
49
  |-------|:---:|-------------|----------|
7
50
  | Connection Invalid or No Access | High | "connection is invalid or you do not have access" — connection missing, disabled, or caller lacks permissions | [connection-invalid.md](./playbooks/connection-invalid.md) |
@@ -43,12 +43,12 @@ After the Orchestrator job data bundle (job details, logs, history) is collected
43
43
  1. **Determine runtime type** — check the job's `RuntimeType` or `Source` field. If it's a ProcessOrchestration job (Maestro), gather Maestro-specific data below. Standard Orchestrator jobs don't need these steps.
44
44
  2. **Determine the Maestro process type** — `bpmn`, `flow`, or `case`. Every Maestro CLI invocation requires this segment (`uip maestro bpmn ...`, `uip maestro flow ...`, `uip maestro case ...`). Identify the type from the source artifact (`.bpmn`, `.flow`, Case JSON), the `processType` field on the instance/incident, or by asking the user. Examples below use `<type>` as a placeholder — substitute the actual type.
45
45
  3. **Resolve the Maestro instance ID** — for ProcessOrchestration jobs, the **Orchestrator job key IS the Maestro instance ID**. They are the same GUID. Do NOT use `ParentJobKey` — that is the parent Orchestrator job, not the Maestro instance.
46
- - **User provided a job key and `RuntimeType` is `ProcessOrchestration`**: the job key is the instance ID. Go directly to `uip maestro <type> instance get <job-key> -f <folder-key>`.
47
- - **User provided a job key and `RuntimeType` is NOT `ProcessOrchestration`** (standard child job): the child job was spawned by a Maestro service task. Check `ParentJobKey` — that parent job's key may be the instance ID. Try `uip maestro <type> instance get <parent-job-key> -f <folder-key>`.
46
+ - **User provided a job key and `RuntimeType` is `ProcessOrchestration`**: the job key is the instance ID. Go directly to `uip maestro <type> instance get <job-key> --folder-key <folder-key>`.
47
+ - **User provided a job key and `RuntimeType` is NOT `ProcessOrchestration`** (standard child job): the child job was spawned by a Maestro service task. Check `ParentJobKey` — that parent job's key may be the instance ID. Try `uip maestro <type> instance get <parent-job-key> --folder-key <folder-key>`.
48
48
  - **Neither works**: search with `uip maestro <type> incident summary --output json` to find the `processKey`, then `uip maestro <type> processes incidents <process-key> --folder-key <folder-key>` to find incident records containing the `instanceId`. If the process type is unknown, try each (`bpmn`, `flow`, `case`) in turn.
49
49
  - **`instance list` may return empty** for completed or faulted instances. Always try `instance get` directly before concluding an instance doesn't exist. Do NOT rely on `instance list` alone.
50
- 4. **Full incident details** — `uip maestro <type> instance incidents <instance-id> -f <folder-key>`. This returns `errorDetails` with stack traces. Do NOT use `uip maestro <type> incident summary` — that returns summaries only without error details.
51
- 5. **Element executions** — `uip maestro <type> instance element-executions <instance-id> -f <folder-key>` to see what each element did and where execution stopped.
50
+ 4. **Full incident details** — `uip maestro <type> instance incidents <instance-id> --folder-key <folder-key>`. This returns `errorDetails` with stack traces. Do NOT use `uip maestro <type> incident summary` — that returns summaries only without error details.
51
+ 5. **Element executions** — `uip maestro <type> instance element-executions <instance-id> --folder-key <folder-key>` to see what each element did and where execution stopped.
52
52
  6. **Child jobs** — if the process has service tasks, list child jobs and check their state and error messages. The child's failure reason is often the actual root cause.
53
53
 
54
54
  ## Top-20 Error Quick Route
@@ -32,7 +32,7 @@ What to look for:
32
32
 
33
33
  ## Resolution
34
34
 
35
- - **If Personal Automation quota exhausted:** request a license upgrade via [self-service license increase](https://uipath.atlassian.net/wiki/spaces/LIC/pages/2834596253), or wait for the monthly quota reset
35
+ - **If Personal Automation quota exhausted:** request a license upgrade via the organization admin or UiPath account manager, or wait for the monthly quota reset
36
36
  - **If Agentic Units expired:** allocate AU from **Admin > Organization > Subscriptions** or contact the UiPath account manager
37
37
  - **If recurring:** redesign the workflow to use a tenant-level Unattended robot instead of Personal Automation so quotas come from the shared pool
38
38
 
@@ -1,13 +1,8 @@
1
1
  # Orchestrator Investigation Guide
2
2
 
3
- ## Output Capture Pattern
3
+ ## Output Capture
4
4
 
5
- Every `uip` data-gathering command below assumes two patterns to keep the agent's context lean AND preserve an audit trail:
6
-
7
- 1. **Filter at the source with `--output-filter`** — only pull the fields you actually need. Do NOT fetch the full response and truncate the output with `[:3000]` or similar post-hoc slicing — that silently drops information.
8
- 2. **Save AND inspect in one call with `| tee`** — pipe the filtered response through `tee` to `.local/investigations/raw/<command>.json`. The response is visible in the tool result for immediate use AND saved on disk for the hypothesis-tester to re-read later. **Run `mkdir -p .local/investigations/raw` once before the first fetch — `tee` does not create the directory and will otherwise drop the file silently.**
9
-
10
- Reference shape:
5
+ Follow the generic guide § Output Capture (filter at source; `| tee` for small/filtered results, `>` + selective read-back for heavy/unfilterable ones; filter-failure fallback; anti-patterns). Orchestrator-specific filter expressions appear inline in each command below. Reference shape:
11
6
 
12
7
  ```
13
8
  uip or jobs list --folder-key <key> --state Faulted \
@@ -16,16 +11,7 @@ uip or jobs list --folder-key <key> --state Faulted \
16
11
  | tee .local/investigations/raw/triage-jobs-list.json
17
12
  ```
18
13
 
19
- **Filter-failure fallback.** If `--output-filter '<jsonpath>'` returns an empty result, an error, or a shape the agent cannot interpret (likely cause: a field name in the documented filter has drifted from the current CLI response schema), retry the SAME command ONCE without `--output-filter` to see the actual response shape. Use that unfiltered response for the current call, and note the stale filter in your evidence summary so the discrepancy gets fixed in the guide. Do NOT silently swallow filter errors — they mean the documented filter is stale.
20
-
21
- Anti-patterns — do NOT do these:
22
-
23
- - `uip <cmd> --output json > file.json` — redirect alone hides stdout; the agent then needs an extra turn running `python -c "json.load(...)"` just to see what it fetched.
24
- - `uip <cmd> --output json | head -c 3000` or any byte/character slice — truncation silently drops fields that may be required by the playbook downstream.
25
- - Fetching the unfiltered full response when only 2–3 fields are needed — bloats the agent's context and the cache-read budget on every subsequent turn.
26
- - Inventing JSONpath field names on the fly. Use only the filter expressions documented in this guide for each command. If a documented filter fails, apply the filter-failure fallback above — do NOT guess different field names.
27
-
28
- If the CLI's `--output-filter` cannot express the shape you need, see `scripts/` for skill-provided filter helpers, OR fetch with a minimal field set first and only re-fetch with more fields when a specific gap forces it.
14
+ If `--output-filter` cannot express the shape you need, see `scripts/` for skill-provided filter helpers, or fetch a minimal field set first and re-fetch more only when a gap forces it.
29
15
 
30
16
  ## Data Correlation
31
17
 
@@ -38,17 +24,17 @@ Before fetching ANY job, queue, or asset data, resolve identity first:
38
24
  - **(A) User named a folder explicitly in the prompt** (e.g., "the failed job in *Shared*", "in *PurchaseOrderProcessing* folder") → continue with step A below.
39
25
  - **(B) User did NOT name a folder** (e.g., "investigate my last failed job", "my automation broke") → **STOP and ask the user. Do NOT run `uip or jobs list` looking for the failed job. Do NOT iterate over folder keys hoping to find it. Do NOT infer the folder from `project.json` — that is a hint to surface in the ask, not a selector to commit on.** Go directly to step B below.
40
26
 
41
- The above is non-negotiable. The single most expensive triage failure mode is `jobs list` enumeration against arbitrary folders trying to "find" a job whose folder is unspecified — it burns 20–40 turns and an extra subagent dispatch before the orchestrator's sanity gate catches the wrong pick. Asking the user is 2 turns. Always cheaper.
27
+ The above is non-negotiable. The single most expensive anchoring failure mode is `jobs list` enumeration against arbitrary folders trying to "find" a job whose folder is unspecified — it burns 20–40 turns before the correlation check catches the wrong pick. Asking the user is 2 turns. Always cheaper.
42
28
 
43
29
  ---
44
30
 
45
31
  **Step A — User named a folder.** Resolve its key:
46
32
  ```
47
33
  uip or folders list --output json \
48
- --output-filter "[?DisplayName=='<name>'].{Key:Key,FullyQualifiedName:FullyQualifiedName}" \
34
+ --output-filter "[?Name=='<name>'].{Key:Key,Path:Path,Type:Type}" \
49
35
  | tee .local/investigations/raw/triage-folders-list.json
50
36
  ```
51
- If the result is empty (no folder with that name), write `needs_input.json` listing the available folders and asking the user to confirm the correct one. Do NOT guess. Proceed once the key is resolved.
37
+ If the result is empty (no folder with that name), ask the user via `AskUserQuestion`, listing the available folders as options to confirm the correct one. Do NOT guess. Proceed once the key is resolved.
52
38
 
53
39
  ---
54
40
 
@@ -57,12 +43,12 @@ Before fetching ANY job, queue, or asset data, resolve identity first:
57
43
  1. Run folders list ONCE to get candidates:
58
44
  ```
59
45
  uip or folders list --output json \
60
- --output-filter "[].{Key:Key,DisplayName:DisplayName,FullyQualifiedName:FullyQualifiedName}" \
46
+ --output-filter "[].{Key:Key,Name:Name,Path:Path,Type:Type}" \
61
47
  | tee .local/investigations/raw/triage-folders-list.json
62
48
  ```
63
- 2. Write `needs_input.json` with the candidate folder names as `options`. If `project.json` exists in the working directory and its `name` matches one of the folders, put that folder FIRST in the options list with the label `"<folder> (your current project)"` — surface the hint, do not select for the user. Ask: *"Which folder is the failing job in?"*
64
- 3. Return to the orchestrator. Do NOT continue with any data fetch.
65
- 4. On re-spawn with the user's answer, record the chosen folder in `state.json` and proceed to step 2 (Process).
49
+ 2. Ask via `AskUserQuestion` with the candidate folder names as options. If `project.json` exists in the working directory and its `name` matches one of the folders, put that folder FIRST in the options list with the label `"<folder> (your current project)"` — surface the hint, do not select for the user. Ask: *"Which folder is the failing job in?"*
50
+ 3. Do NOT continue with any data fetch until the user answers.
51
+ 4. Record the chosen folder in `.local/investigations/notes.md` and proceed to step 2 (Process).
66
52
 
67
53
  **Bounded fallback** — applies ONLY when the user explicitly answers step B.3 with "I don't know" / "no preference" / equivalent. Run ONCE without folder filter, pick the most-recent, record the folder, proceed:
68
54
  ```
@@ -92,7 +78,7 @@ If data doesn't match: **discard it**. Do NOT fetch details for jobs or items fr
92
78
 
93
79
  ## Job Data Bundle
94
80
 
95
- For every job under investigation, gather these in order. Follow the Output Capture Pattern above pipe through `tee` and filter at the source.
81
+ For every job under investigation, gather these in order. Follow the generic guide § Output Capture filter at the source, `tee` the filtered results, `>` the dense/unfiltered ones (e.g. traces).
96
82
 
97
83
  1. **Job details** — state, input/output arguments, timing, machine info, error details
98
84
  ```
@@ -115,9 +101,9 @@ For every job under investigation, gather these in order. Follow the Output Capt
115
101
  4. **Job traces** — execution traces (activity states, variable snapshots, execution path). Available for all job types.
116
102
  ```
117
103
  uip or jobs traces <key> --output json \
118
- | tee .local/investigations/raw/triage-job-traces.json
104
+ > .local/investigations/raw/triage-job-traces.json
119
105
  ```
120
- Traces are dense; consider filtering by activity name or error attribute when re-fetching for hypothesis testing.
106
+ Traces are dense and unfiltered — redirect with `>` (not `tee`) so the full body stays out of context, then read back only the activity/error entries you need. Filter by activity name or error attribute when re-fetching for hypothesis testing.
121
107
 
122
108
  This is the baseline. Domain-specific data gathering builds on it — see the investigation guide for each matched domain (UI Automation, Integration Service, Maestro) for additional steps after the baseline.
123
109
 
@@ -34,7 +34,7 @@ What can cause it:
34
34
  - An Unattended runtime is licensed and free to take the job. `uip or licenses info` reports `Used.Unattended` = the count of **connected/allocated** Unattended runtimes, NOT the count of running jobs. The template's connected idle runtime holds its slot, so `Used == Allowed` is *expected and healthy* when that slot belongs to the assigned template — it is NOT exhaustion. Confirm the runtime is idle rather than busy with a different job: `uip or jobs list --folder-key <key> --state Running --output json`. If no OTHER Unattended job is Running, the licensed runtime is available for this job. Treat the license as the blocker ONLY when a *different* Running Unattended job holds the slot.
35
35
  4. **All four prerequisites confirmed AND PendingReasons.Errors unchanged AND JobHistory shows no re-evaluation** → the conclusion is stale-dispatch.
36
36
 
37
- > **Do not invent a folder-assignment cause.** The PendingReasons text "…there is none connected to this folder" is Orchestrator's eligibility verdict **captured at dispatch time** — not live proof that the machine template is unassigned from the folder. No `uip` command enumerates folder→machine-template assignments, so a "template not assigned to the folder" root cause cannot be evidenced and MUST NOT be confirmed (shared.md invariants #1, #9). If `machines list` shows the assigned template currently has a connected runtime AND `JobHistory` has only the original Pending entry, the codes are stale: this playbook applies and the fix is stop + re-trigger — not a folder reconfiguration.
37
+ > **Do not invent a folder-assignment cause.** The PendingReasons text "…there is none connected to this folder" is Orchestrator's eligibility verdict **captured at dispatch time** — not live proof that the machine template is unassigned from the folder. No `uip` command enumerates folder→machine-template assignments, so a "template not assigned to the folder" root cause cannot be evidenced and MUST NOT be confirmed (SKILL.md §1 invariants #1 no-fabrication and #8 symptom-≠-cause). If `machines list` shows the assigned template currently has a connected runtime AND `JobHistory` has only the original Pending entry, the codes are stale: this playbook applies and the fix is stop + re-trigger — not a folder reconfiguration.
38
38
 
39
39
  ## Resolution
40
40
 
@@ -58,7 +58,7 @@ Do NOT attempt to "fix" the stale codes by reassigning the template, adding the
58
58
  | `JobHistory` past the original entry | Maybe | No (only the original Pending entry) |
59
59
  | Remediation | Provision the missing prerequisite | Stop + re-trigger |
60
60
 
61
- Both playbooks can match in triage. Triage records both; the hypothesis tester resolves which one applies by checking the four "currently resolved" signals plus `JobHistory` shape. If all four are resolved AND `JobHistory` is unchanged, this playbook wins.
61
+ Both playbooks can match on the shared Pending signals. When both match, resolve which one applies by checking the four "currently resolved" signals plus `JobHistory` shape. If all four are resolved AND `JobHistory` is unchanged, this playbook wins.
62
62
 
63
63
  > **Fields that look like discriminators but aren't.** `Job.MachineKey` is **empty for both** no-host and stale-dispatch on a stuck Pending job — Orchestrator only populates `MachineKey` after a host *accepts* the job, which by definition has not happened. Empty `MachineKey` is the normal Pending-state value and MUST NOT be used to eliminate stale-dispatch (or to confirm no-host). Use only the signals in the table above: `robotVersions` populated, credential/mode confirmed, license slot held by the idle runtime, and `JobHistory` shape.
64
64
 
@@ -31,7 +31,7 @@ What to look for:
31
31
 
32
32
  1. **Get the stack trace** — for local execution, list `%localappdata%\UiPath\logs\` and open the log for today's date (if not found, ask for the error date); for Orchestrator, get job traces. Confirm the fault originates from the user's workflow code
33
33
  2. Extract the parameter name from the error message (`Parameter 'paramName'`) — this is the key troubleshooting signal
34
- 3. Locate the faulted activity in source code and match the parameter name to the activity's input properties or the method being called
34
+ 3. Locate the faulted activity in source code and match the parameter name to the activity's input properties or the method being called. The stack trace names the workflow file (e.g. `Main.xaml` at the faulting activity) — check the working directory top level for the project (`project.json` + that file) and read it before presenting; tracing WHY the argument was null requires source. If absent, ask for the project path and present the parameter-level finding as **unconfirmed** — do not enumerate candidate null sources as findings
35
35
  4. Trace the argument source: find where the null value originates (variable assignment, activity output, config lookup, argument binding). Check if the assignment is conditional or depends on external data
36
36
  5. Check for missing defaults — does the variable have a default value? Is there a fallback for null?
37
37
  6. If intermittent: compare input data between successful and failed executions
@@ -1,6 +1,6 @@
1
- # Troubleshooting Reference Router
1
+ # Domain Catalog
2
2
 
3
- Start here. Find the product or package that matches the user's issue, then follow the links to drill down into playbooks.
3
+ Domain descriptions, namespaces, and CLI entry points. Runtime routing greps the playbook corpus directly (SKILL.md §4) use this catalog to cross-check a (system, entity) classification, map exception namespaces to owning packages, browse a domain's playbook index during escalation, and route silent failures via the no-signature table below.
4
4
 
5
5
  ## Orchestrator
6
6
 
@@ -29,13 +29,15 @@ Agentic orchestration platform built on Orchestrator. BPMN-based process design
29
29
 
30
30
  ## Integration Service
31
31
 
32
- Connector platform for third-party integrations (Salesforce, Outlook, SAP, Slack, etc.). Manages OAuth connections, exposes activities for automations and BPMN processes, and provides event-based triggers. Issues here involve connection failures, expired authentication, triggers not firing, and operation errors. Connection errors from Integration Service often surface through Maestro or Orchestrator as the calling product. Also covers the runtime exceptions thrown by the connector activities (`ConnectorActivity`, `ConnectorTriggerActivity`, `ConnectorHttpActivity`): `GeneralException`/`RuntimeException` with `DAP-GE-*`/`DAP-RT-*` codes, and `UiPath.Ipc`/`UiPath.CoreIpc` `RemoteException`.
32
+ Connector platform for third-party integrations (Salesforce, Outlook, SAP, Slack, etc.). Manages OAuth connections, exposes activities for automations and BPMN processes, and provides event-based triggers. Issues here involve connection failures, expired authentication, triggers not firing, and operation errors. Connection errors from Integration Service often surface through Maestro or Orchestrator as the calling product. Also covers the runtime exceptions thrown by the connector activities (`ConnectorActivity`, `ConnectorTriggerActivity`, `ConnectorHttpActivity`): `GeneralException`/`RuntimeException` with `DAP-GE-*`/`DAP-RT-*` codes, and `UiPath.Ipc`/`UiPath.CoreIpc` `RemoteException` — plus the `CNS…` error codes returned by the Connection Service HTTP API (connections/connectors/triggers CRUD, permissions, event callbacks, Solutions installs).
33
33
 
34
34
  Namespaces: `UiPath.IntegrationService.Activities`, `UiPath.IntegrationService.Activities.Runtime.Exceptions`
35
35
 
36
36
  CLI: `uip is --help`
37
37
 
38
38
  - [products/integration-service/overview.md](./products/integration-service/overview.md) — Product overview, connectors, connections, and CLI commands
39
+ - [products/integration-service/dap-error-codes-reference.md](./products/integration-service/dap-error-codes-reference.md) — DAP runtime error-code catalog, telemetry customEvent fields, retry semantics, code → playbook map
40
+ - [products/integration-service/cns-error-codes-reference.md](./products/integration-service/cns-error-codes-reference.md) — CNS (Connection Service API) error-code catalog: wire format, fault buckets, overloaded-code traps, retry semantics, code → playbook map
39
41
  - [products/integration-service/summary.md](./products/integration-service/summary.md) — All playbooks for Integration Service issues
40
42
 
41
43
  ## Agents
@@ -145,15 +147,6 @@ Namespaces: `UiPath.Database.Activities`
145
147
  - [activity-packages/database-activities/overview.md](./activity-packages/database-activities/overview.md) — Package overview, connection model, key activities, and common failure patterns
146
148
  - [activity-packages/database-activities/summary.md](./activity-packages/database-activities/summary.md) — All playbooks for Database Activities issues
147
149
 
148
- ## Python Activities
149
-
150
- Activities for running Python code from a UiPath workflow via the `UiPath.Python.Activities` package. A `Python Scope` initializes an out-of-process Python engine (bound through Python.NET) that its child activities — `Load Python Script`, `Invoke Python Method`, `Get Python Object` — run against. Issues here involve engine-initialization failures (invalid `Path`, `Target` bitness mismatch, `Library path` missing for Python > 3.9 on Windows, unsupported Python version, missing .NET Desktop Runtime 6+), script load/import errors (`ModuleNotFoundError`, top-level syntax/exception, unresolved local imports), and hangs / oversized return data. Engine-config and module errors often surface only on the robot host — the scope uses the interpreter at `Path` and Windows environment variables, not the IDE's venv/conda env.
151
-
152
- Namespaces: `UiPath.Python.Activities`
153
-
154
- - [activity-packages/python-activities/overview.md](./activity-packages/python-activities/overview.md) — Package overview, Python Scope execution model and properties, and common failure patterns
155
- - [activity-packages/python-activities/summary.md](./activity-packages/python-activities/summary.md) — All playbooks for Python Activities issues
156
-
157
150
  ## Web Activities
158
151
 
159
152
  Activities for outbound HTTP calls and payload deserialization. `HttpClient` (legacy, RestSharp) and `NetHttpRequest` (modern, `System.Net.Http`) issue HTTP requests; `DeserializeJson`, `DeserializeJsonArray`, and `DeserializeXml` parse a string into a typed object / `JArray` / `XDocument`. Issues here involve HTTP request failures (`System.Net.WebException` — status / DNS / connection / SSL), request timeouts (`System.TimeoutException`), null request inputs (`System.NullReferenceException`), modern-activity faults wrapped in `System.AggregateException`, malformed JSON/XML payloads (`Newtonsoft.Json.JsonReaderException` / `System.Xml.XmlException`), JSON type mismatches (`Newtonsoft.Json.JsonSerializationException`), and null/empty payloads (`System.ArgumentNullException`). These activities propagate raw framework exceptions — the faulted activity class + exception class is the discriminator. A malformed/null deserialize fault is frequently a symptom of an upstream HTTP call.
@@ -163,6 +156,15 @@ Namespaces: `UiPath.Web.Activities`
163
156
  - [activity-packages/web-activities/overview.md](./activity-packages/web-activities/overview.md) — Package overview, activity families, and common failure patterns
164
157
  - [activity-packages/web-activities/summary.md](./activity-packages/web-activities/summary.md) — All playbooks for Web Activities issues
165
158
 
159
+ ## App Events (Workflow Events) Activities
160
+
161
+ Internal activities that connect a **UiPath App** (or a Studio Web app preview) to the robot running the App's workflows. They are `[Internal]` — a user never places them — so failures surface as **a job invoked by an App faulting**, with the activity name (`HandleAppRequest`, `AppRequestTrigger`, `InitializeHubConnection`) appearing in the job error / trace spans rather than the user's project. The App↔robot channel runs in one of two modes: RobotJS (legacy local pipe) or SignalR (modern hub). These activities propagate raw .NET framework exceptions (no package-specific wrapper), so the faulted activity class + exception class is the discriminator: `HandleAppRequest` `NullReferenceException` (a null deref inside the App-invoked workflow), `AppRequestTrigger` `TimeoutException`/`IOException`/`InvalidOperationException` (App↔robot channel/transport lost), and `InitializeHubConnection` `AggregateException` (SignalR hub bootstrap failed — unwrap the inner).
162
+
163
+ Namespaces: `UiPath.WorkflowEvents.Activities`
164
+
165
+ - [activity-packages/workflowevents-activities/overview.md](./activity-packages/workflowevents-activities/overview.md) — Package overview, connection modes, activity types, and common failure patterns
166
+ - [activity-packages/workflowevents-activities/summary.md](./activity-packages/workflowevents-activities/summary.md) — All playbooks for App Events (Workflow Events) Activities issues
167
+
166
168
 
167
169
  ## Playbooks
168
170
 
@@ -175,3 +177,22 @@ All playbooks use the same headers: `## Context`, `## Investigation` (optional),
175
177
  | **Low** | General symptoms → multiple causes | General guidance or absent | Robot unresponsive → could be heartbeat, network, or machine issue |
176
178
 
177
179
  Template and full guide: [templates/playbook-template.md](./templates/playbook-template.md) | [knowledge-base-guide.md](./knowledge-base-guide.md)
180
+
181
+ ## No-signature routing
182
+
183
+ For problems with nothing greppable (no exception, no error code — silent failures, hangs, wrong results), map the symptom to a domain, then check that domain's `summary.md` for the matching silent playbook:
184
+
185
+ | Symptom | Domain | Entry |
186
+ |---|---|---|
187
+ | Job/run Successful but the action had no effect or output is wrong | The acting activity's package (ui-automation, word, excel, gsuite, o365, database, system) | Activity-level trace logs — look for zero-count lines ("Replaced 0 occurrence"), Simulate/inert-verify configurations, provider quirks |
188
+ | Job stuck Pending | orchestrator | `PendingReasons` on the job record — its error codes ARE greppable signatures; re-grep after fetching |
189
+ | Job/instance stuck Running | orchestrator (plain job) / maestro (BPMN instance) | Child-job states + open incidents; a Maestro instance with an Open incident is blocked until the incident is resolved |
190
+ | Works in Debug, fails deployed | maestro | Debug-vs-deploy silent playbook |
191
+ | Duplicate task/element executions | maestro | Boundary-event silent playbook |
192
+ | Traces/evidence missing or disappearing | maestro / orchestrator retention | Silent playbooks; retention windows |
193
+ | Robot unresponsive, heartbeat gaps | orchestrator | Machine/session state via the orchestrator investigation guide |
194
+ | Hang mid-activity, no fault, no timeout | The activity's package | Package overview "common failure patterns" (e.g., Word background modal dialogs, Python stdout flooding) |
195
+ | Reads/writes the wrong files with no error | The activity's package | Relative-path resolution quirks (e.g., Python per-package WorkingFolder) |
196
+ | Slowness / degradation without errors | Owning product | Product overview + `uip docsai ask` |
197
+
198
+ Cross-domain rule: the symptom's *reporting* surface is not necessarily the owning domain — extract entity keys from the fetched records and follow them one hop before settling on a domain.
@@ -7,7 +7,7 @@ confidence: high | medium | low
7
7
  ## Context
8
8
 
9
9
  What this looks like:
10
- - <observable symptom 1>
10
+ - <observable symptom 1 — quote verbatim error strings (exception FQN, message fragment, error code); routing greps for them>
11
11
  - <observable symptom 2>
12
12
 
13
13
  What can cause it:
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "skillsVersion": "1.197.0",
3
+ "skillsVersion": "1.197.2",
4
4
  "targetCli": "^1.197.0"
5
5
  }
@@ -1,164 +0,0 @@
1
- # Depth-Verifier Sub-Agent
2
-
3
- Gate confirmed root-cause hypotheses for depth. Output: a `verdict`
4
- (`verified` | `shallow`) + gap list the orchestrator uses to decide —
5
- present the resolution, or re-spawn one more hypothesis-tester round.
6
- Do NOT generate hypotheses, run CLI, or rewrite findings (see Invariants).
7
-
8
- ## Inputs you read
9
- - `.local/investigations/state.json` — for `matched_playbooks` and `scope`
10
- - `.local/investigations/hypotheses.json` — every hypothesis with
11
- `is_root_cause: true`
12
- - The matched playbook file referenced by
13
- `state.json.matched_playbooks[*].path` — read its `## Context` cause
14
- list ("What can cause it") and `## Resolution` section
15
- - `.local/investigations/evidence/*.json` — for cause-specific evidence
16
-
17
- ## The three depth checks (per confirmed hypothesis)
18
-
19
- 1. **Specific cause named.** The hypothesis's `evidence_summary` (or
20
- description) names *one* item from the playbook's cause list ("What
21
- can cause it", under `## Context`) verbatim or as a tight paraphrase —
22
- specific, not a vague generalization (e.g. "the connection is invalid"
23
- when the playbook lists four distinct sub-causes).
24
-
25
- 2. **Evidence pinned to the cause.** Evidence files contain a datum that
26
- distinguishes the chosen cause from its siblings in the same
27
- cause list. Symptom-level data (e.g. "ping returned 404") fits
28
- multiple causes — not enough. Require evidence that singles out *this*
29
- cause: file contents, ownership, folder bindings, configuration flags,
30
- trace attributes.
31
-
32
- 3. **Resolution alignment.** The playbook's `## Resolution` must contain
33
- a branch keyed on the named cause. If it offers multiple branches
34
- under "If X, then …", confirm one corresponds to the cause named in
35
- check 1. (The hypothesis's `resolution` field is written later by the
36
- orchestrator — do not depend on it being populated here.)
37
-
38
- ## Causal precedence
39
-
40
- A root cause is an *originating fault*: an event that, had it not
41
- occurred, would mean the failure never happened. A hypothesis that
42
- instead describes a consequence, propagation pattern, or persistence
43
- of an upstream fault is not a root cause — even if every check above
44
- passes — because eliminating the consequence does not prevent the
45
- fault.
46
-
47
- Apply two precedence checks:
48
-
49
- 1. **Explicit-event check.** List every event the hypothesis treats
50
- as given (the inputs to its causal chain) and ask "why did that
51
- occur?". If any input has a more upstream answer that the current
52
- hypothesis does not address, this hypothesis is downstream.
53
-
54
- 2. **Implicit-presupposition check.** A persistence or
55
- state-transition narrative typically *presupposes* an upstream
56
- condition without naming it as an event — e.g., "state X did not
57
- transition" presupposes "the system needed to transition out of
58
- X", which presupposes "the system entered X for a reason worth
59
- investigating". Identify the presupposed upstream condition and
60
- require a separate hypothesis answering "why is the system in
61
- that condition?". If `hypotheses.json` does not contain such a
62
- hypothesis (or contains one still `pending`), the current
63
- hypothesis cannot be root cause.
64
-
65
- If either check finds a missing upstream, reject the verdict — emit
66
- `shallow` with a `gaps` entry of `kind: "textual"` and
67
- `check: "causal_precedence"` (a string identifier distinct from the
68
- numbered depth checks 1–3 above; the orchestrator routes on `kind`,
69
- not on `check`), detail
70
- `"hypothesis describes consequence/persistence; upstream of <X> not investigated"`.
71
- The orchestrator must test the upstream condition before any
72
- downstream hypothesis can be accepted as root cause.
73
-
74
- ## Output
75
-
76
- Write `.local/investigations/depth-check.json`:
77
-
78
- ```json
79
- {
80
- "schema_version": "1.1",
81
- "verdict": "verified", // or "shallow"
82
- "hypothesis_id": "H1",
83
- "playbook_path": "<path from state.json.matched_playbooks>",
84
- "named_cause": "<verbatim or quoted paraphrase from the playbook's 'What can cause it' list>",
85
- "evidence_for_cause": [
86
- "<file path under .local/investigations/evidence/ or .local/investigations/raw/>"
87
- ],
88
- "resolution_alignment": "matches", // or "mismatch", or "missing"
89
- "gaps": [
90
- {
91
- "kind": "factual", // or "textual"
92
- "check": 2, // 1, 2, or 3 (corresponds to the depth check)
93
- "detail": "<one-line description of the gap>"
94
- }
95
- ]
96
- }
97
- ```
98
-
99
- If multiple hypotheses are flagged `is_root_cause: true`, write one
100
- entry per hypothesis as an array under a top-level `"checks"` key
101
- instead.
102
-
103
- If `verdict` is `shallow`, list every missing dimension in `gaps`. The
104
- orchestrator routes by gap `kind` (see Gap classification below).
105
-
106
- ## Gap classification
107
-
108
- Each gap MUST be classified as either `factual` or `textual` so the
109
- orchestrator can decide whether re-spawning the hypothesis-tester is
110
- worth the cost.
111
-
112
- - **`kind: "factual"`** — applies to **check 2 only** (Evidence pinned).
113
- The evidence files do not contain a datum that singles out the named
114
- cause from neighboring causes in the same playbook list. Re-running
115
- the hypothesis-tester *can* fix this by gathering more CLI output,
116
- reading additional project-source files, or inspecting trace span
117
- attributes.
118
-
119
- - **`kind: "textual"`** — applies to **checks 1 and 3** (Specific cause
120
- named, Resolution alignment). The cause is named imprecisely
121
- (paraphrase too loose, wrong sub-cause picked from a list of similar
122
- causes) or the resolution branch listed in the hypothesis is the
123
- wrong one for the named cause. Re-running the hypothesis-tester will
124
- NOT fix this — the cause/resolution narrative is the *generator's*
125
- output, not the tester's. The orchestrator handles textual gaps by
126
- accepting the hypothesis at reduced confidence and surfacing the gap
127
- to the user via the presenter, rather than re-running tests.
128
-
129
- **A textual gap on check 1 (cause naming) does NOT invalidate the
130
- matched playbook's `## Resolution` procedure.** Cause label and
131
- remediation path are separable. When the matched playbook's resolution
132
- is interactive (e.g., "show the user the recovered selector and ask
133
- whether to apply"), that procedure remains the authoritative resolution
134
- even if the cause description has been refined or partially refuted.
135
- Do NOT advise switching to another playbook's resolution just because
136
- that other playbook better names the cause — the original playbook's
137
- remediation must still run. Note the cause refinement in the gap
138
- `detail` so the presenter can surface it alongside the unchanged
139
- resolution. The only situation in which the resolution branch itself
140
- should change is a check 3 gap (Resolution alignment) — flag that
141
- separately.
142
-
143
- If a single check produces a gap that has both factual and textual
144
- character (e.g., evidence is missing AND the named cause is
145
- paraphrased), emit two separate gap entries — one of each kind.
146
-
147
- ## Invariants
148
-
149
- - You do NOT alter `hypotheses.json` or `state.json`.
150
- - You do NOT call sub-agents.
151
- - You do NOT run uip commands.
152
- - You read playbooks from paths in `state.json.matched_playbooks` —
153
- same rule as every other agent.
154
- - Apply the standard `shared.md` invariants. In particular, **symptom
155
- ≠ cause**: a symptom-level match alone does not satisfy check 1
156
- or check 2.
157
-
158
- ## When you may declare `verified` despite incomplete evidence
159
-
160
- If a playbook's cause list ("What can cause it") is truly exhaustive but a
161
- specific cause cannot be distinguished from the available data
162
- (genuine data gap, not laziness), declare `verdict: shallow` with
163
- `gaps: ["cannot disambiguate causes X vs Y from available evidence"]`.
164
- The orchestrator will route to `needs_input` rather than re-test.
@@ -1,42 +0,0 @@
1
- # Hypothesis Generator Sub-Agent
2
-
3
- Produce ranked hypotheses based on investigation state and evidence.
4
-
5
- See `shared.md` § Invariants and § Confidence-Level Behavior first.
6
-
7
- ## Inputs
8
-
9
- - `.local/investigations/state.json`
10
- - `.local/investigations/evidence/` — all evidence so far
11
- - `.local/investigations/hypotheses.json` — if re-invoked (deepening or scope adjustment)
12
-
13
- ## Output
14
-
15
- Write or update: `.local/investigations/hypotheses.json` — see `schemas/hypotheses.schema.md`
16
-
17
- ## Steps
18
-
19
- 1. **Read state + evidence + signals.** Read `state.json`, `evidence/triage-initial.json` (especially its `signals` array — the structured fact inventory triage produced), and the matched + eliminated playbook lists. Verify the evidence relates to the user's reported problem (correct process, queue, entity). If it doesn't, STOP — write `needs_input.json` (see shared.md) flagging the mismatch.
20
- 2. **If re-invoked:** read existing hypotheses; skip those in `generation_context.eliminated_ids` (never regenerate eliminated ones). On `trigger: deepening`, each new sub-hypothesis MUST name a *distinct upstream cause* for the parent's confirmed state — not a reworded paraphrase. If you cannot name a distinct upstream cause, write `needs_input.json` instead of restating.
21
- 3. **Read matched playbooks** from `state.json.matched_playbooks` — these are pre-ranked by `signal_match_count` (highest specificity first). Honor that ordering: H1 is drafted from the top-ranked playbook, H2 from the second-ranked, etc. **Never draft hypotheses from playbooks in `eliminated_playbooks`** — those have been disproved by signals already.
22
-
23
- Generate hypotheses for **every** matched playbook in a **single round** (see Single-round coverage rule in `shared.md`). The number of hypotheses per playbook follows the confidence-level behavior table in `shared.md` ("Generator" column).
24
-
25
- **Cite signals.** Each hypothesis records `signals_supporting` — the names of signals from `evidence/triage-initial.json.signals` that drove this hypothesis. A hypothesis with zero supporting signals is a contract violation: every drafted hypothesis must trace back to at least one observed signal, otherwise it is unfounded speculation.
26
- 4. **Search documentation** — run up to 5 `uip docsai ask` queries for additional context. If after playbooks + 5 queries you still lack context: generate from what you have. If you truly cannot generate any hypothesis, write `needs_input.json` (see shared.md).
27
- 5. **Inspect for explicit fault signals first.** Before drafting any hypothesis, scan triage evidence for explicit fault data — exception stacks, error codes, faulted-state details, error-level logs, incidents, element/activity errorDetails. If any fault signal is present, the **originating-fault hypothesis** (what caused the fault to occur) MUST be drafted first and assigned the highest confidence. Persistence, propagation, cleanup, recovery-gap, or state-transition hypotheses go *after* it. Never lead the hypothesis set with a pattern that explains how a fault was handled or how its consequences propagated when an explicit fault stack is on hand.
28
-
29
- 6. **Generate hypotheses**, each with:
30
- - Description, scope level, confidence, reasoning
31
- - **Source citation** — which reference doc, search result, or playbook informed it
32
- - `to_confirm` and `to_eliminate` evidence requirements
33
- - `to_eliminate` MUST include execution path verification for multi-step hypotheses
34
- - **Evidence requirements must be grounded in triage data.** Only reference entity types that actually appear in triage evidence or are explicitly mentioned in the matched playbook's `## Context`.
35
- - **Evidence requirements must be feasible.** Check `state.json` data gaps before writing steps. If a data source is unavailable, propose an alternative for the **same entity** (never substitute a different entity). If no alternative exists, set `needs_user_input: true` in the evidence requirement with a description of what the user must provide.
36
-
37
- ## Boundaries
38
-
39
- - Do NOT run uip commands against the platform — that's the tester's job
40
- - Do NOT test hypotheses — generate them with evidence requirements
41
- - Do NOT present hypotheses to the user — write them to `hypotheses.json`
42
- - Do NOT read source code files or query live platform data — that's the tester's job. Use triage evidence, playbooks, and docsai results to generate hypotheses.