@uipath/skills 1.201.0-preview.621 → 1.202.0-preview.635

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 (415) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.cursor-plugin/plugin.json +1 -1
  4. package/CODEOWNERS +41 -29
  5. package/README.md +1 -0
  6. package/assets/skill-status.json +13 -2
  7. package/assets/uip-catalog-snapshot.json +95 -46
  8. package/package.json +2 -1
  9. package/skills/uipath-admin/SKILL.md +107 -197
  10. package/skills/uipath-admin/references/audit-commands.md +69 -120
  11. package/skills/uipath-admin/references/audit-workflow-guide.md +101 -152
  12. package/skills/uipath-admin/references/authorization/authorization-commands.md +121 -210
  13. package/skills/uipath-admin/references/authorization/check-access.md +39 -63
  14. package/skills/uipath-admin/references/authorization/grant-permissions.md +38 -49
  15. package/skills/uipath-admin/references/authorization/permission-catalog.md +32 -34
  16. package/skills/uipath-admin/references/authorization/role-assignment-management.md +96 -99
  17. package/skills/uipath-admin/references/authorization/role-management.md +113 -142
  18. package/skills/uipath-admin/references/diagnose/CAPABILITY.md +13 -14
  19. package/skills/uipath-admin/references/diagnose/{references/failure-modes.md → failure-modes.md} +90 -46
  20. package/skills/uipath-admin/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +21 -14
  21. package/skills/uipath-admin/references/external-app-management.md +42 -39
  22. package/skills/uipath-admin/references/identity-commands.md +72 -625
  23. package/skills/uipath-admin/references/identity-troubleshoot-guide.md +73 -95
  24. package/skills/uipath-admin/references/ip-restriction/bypass-rule-management.md +25 -54
  25. package/skills/uipath-admin/references/ip-restriction/enforcement-management.md +19 -31
  26. package/skills/uipath-admin/references/ip-restriction/ip-range-management.md +48 -45
  27. package/skills/uipath-admin/references/ip-restriction/ip-restriction-commands.md +89 -146
  28. package/skills/uipath-admin/references/key-concepts.md +24 -0
  29. package/skills/uipath-admin/references/organization-management.md +49 -70
  30. package/skills/uipath-admin/references/organizations-commands.md +39 -74
  31. package/skills/uipath-admin/references/pat-management.md +25 -38
  32. package/skills/uipath-admin/references/robot-account-management.md +16 -14
  33. package/skills/uipath-admin/references/smtp-management.md +19 -14
  34. package/skills/uipath-admin/references/tenant-management.md +1 -1
  35. package/skills/uipath-admin/references/tenants-commands.md +82 -148
  36. package/skills/uipath-admin/references/user-management.md +70 -56
  37. package/skills/uipath-agents/SKILL.md +4 -3
  38. package/skills/uipath-agents/references/authentication.md +4 -3
  39. package/skills/uipath-agents/references/coded/capabilities/datafabric.md +465 -0
  40. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -0
  41. package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +2 -0
  42. package/skills/uipath-agents/references/coded/capabilities/human-in-the-loop.md +12 -6
  43. package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
  44. package/skills/uipath-agents/references/coded/frameworks/langgraph-integration.md +48 -16
  45. package/skills/uipath-agents/references/coded/frameworks/openai-agents-integration.md +1 -1
  46. package/skills/uipath-agents/references/coded/lifecycle/deployment.md +11 -1
  47. package/skills/uipath-agents/references/coded/quickstart.md +11 -8
  48. package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +3 -3
  49. package/skills/uipath-agents/references/lowcode/capabilities/memory/memory.md +19 -2
  50. package/skills/uipath-agents/references/lowcode/evaluations/evaluate.md +2 -2
  51. package/skills/uipath-agents/references/lowcode/evaluations/orchestrator-eval-run.md +409 -155
  52. package/skills/uipath-agents/references/lowcode/evaluations/running-evaluations.md +2 -2
  53. package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
  54. package/skills/uipath-aops/SKILL.md +313 -0
  55. package/skills/uipath-aops/assets/templates/pipeline-dto-template.json +15 -0
  56. package/skills/uipath-aops/references/discovery-flow.md +312 -0
  57. package/skills/uipath-aops/references/migration-guide.md +146 -0
  58. package/skills/uipath-aops/references/pipeline-dto-guide.md +276 -0
  59. package/skills/uipath-aops/references/save-and-run-guide.md +156 -0
  60. package/skills/uipath-api-workflow/SKILL.md +48 -6
  61. package/skills/uipath-api-workflow/assets/templates/file-base64-roundtrip-example.json +154 -0
  62. package/skills/uipath-api-workflow/assets/templates/nested-control-flow-example.json +0 -1
  63. package/skills/uipath-api-workflow/references/cli-reference.md +20 -1
  64. package/skills/uipath-api-workflow/references/expressions-and-context.md +19 -0
  65. package/skills/uipath-api-workflow/references/files-and-base64.md +153 -0
  66. package/skills/uipath-api-workflow/references/operating-published-workflows.md +3 -2
  67. package/skills/uipath-api-workflow/references/task-types.md +89 -3
  68. package/skills/uipath-api-workflow/references/testing-and-evals.md +224 -0
  69. package/skills/uipath-api-workflow/references/troubleshooting.md +124 -4
  70. package/skills/uipath-coded-apps/SKILL.md +4 -2
  71. package/skills/uipath-coded-apps/assets/scripts/dashboards/build-dashboard.mjs +1 -1
  72. package/skills/uipath-coded-apps/references/dashboards/CAPABILITY.md +11 -1
  73. package/skills/uipath-coded-apps/references/dashboards/plugins/build/impl.md +5 -3
  74. package/skills/uipath-coded-apps/references/dashboards/plugins/deploy/impl.md +1 -0
  75. package/skills/uipath-coded-apps/references/oauth-client-setup.md +2 -0
  76. package/skills/uipath-coded-apps/references/pack-publish-deploy.md +18 -0
  77. package/skills/uipath-coded-apps/references/sdk/orchestrator.md +4 -0
  78. package/skills/uipath-connector-builder/SKILL.md +7 -5
  79. package/skills/uipath-connector-builder/references/debugging.md +5 -1
  80. package/skills/uipath-connector-builder/references/element-json.md +3 -1
  81. package/skills/uipath-connector-builder/references/standard-resources.md +37 -6
  82. package/skills/uipath-functions/SKILL.md +134 -222
  83. package/skills/uipath-functions/references/js/authoring-guide.md +141 -0
  84. package/skills/uipath-functions/references/js/bindings-guide.md +120 -0
  85. package/skills/uipath-functions/references/js/calling-uipath-apis-guide.md +112 -0
  86. package/skills/uipath-functions/references/js/coded-app-wiring-guide.md +103 -0
  87. package/skills/uipath-functions/references/js/deployment-guide.md +109 -0
  88. package/skills/uipath-functions/references/js/http-semantics-guide.md +80 -0
  89. package/skills/uipath-functions/references/js/job-mode-guide.md +114 -0
  90. package/skills/uipath-functions/references/js/local-dev-guide.md +107 -0
  91. package/skills/uipath-functions/references/python/workflow-guide.md +224 -0
  92. package/skills/uipath-governance/SKILL.md +9 -8
  93. package/skills/uipath-governance/references/compliance-pack/catalog/impl.md +36 -8
  94. package/skills/uipath-governance/references/compliance-pack/coverage/impl.md +14 -12
  95. package/skills/uipath-governance/references/compliance-pack/disable/impl.md +5 -3
  96. package/skills/uipath-governance/references/compliance-pack/full-apply/impl.md +7 -5
  97. package/skills/uipath-governance/references/compliance-pack/partial-apply/impl.md +14 -7
  98. package/skills/uipath-governance/references/compliance-pack/partial-apply/planning.md +3 -1
  99. package/skills/uipath-governance/references/compliance-pack/preview-gate.md +1 -1
  100. package/skills/uipath-governance/references/compliance-pack/query/impl.md +4 -2
  101. package/skills/uipath-governance/references/diagnose/CAPABILITY.md +12 -12
  102. package/skills/uipath-governance/references/diagnose/{references/failure-modes.md → failure-modes.md} +5 -5
  103. package/skills/uipath-governance/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +2 -2
  104. package/skills/uipath-governance/references/disambiguation-guide.md +15 -7
  105. package/skills/uipath-human-in-the-loop/SKILL.md +107 -9
  106. package/skills/uipath-human-in-the-loop/references/hitl-casetask-action.md +413 -0
  107. package/skills/uipath-insights/SKILL.md +21 -14
  108. package/skills/uipath-insights/references/alerts-reads-guide.md +242 -0
  109. package/skills/uipath-insights/references/filter-discovery-guide.md +1 -1
  110. package/skills/uipath-insights/references/jobs-commands-guide.md +2 -2
  111. package/skills/uipath-ixp/references/cli-reference.md +1 -1
  112. package/skills/uipath-ixp/references/improve-prompts-guide.md +5 -6
  113. package/skills/uipath-maestro-bpmn/SKILL.md +87 -15
  114. package/skills/uipath-maestro-bpmn/references/diagnose/CAPABILITY.md +10 -10
  115. package/skills/uipath-maestro-bpmn/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +1 -1
  116. package/skills/uipath-maestro-bpmn/references/expression-authoring.md +12 -2
  117. package/skills/uipath-maestro-bpmn/references/operate/CAPABILITY.md +12 -12
  118. package/skills/uipath-maestro-bpmn/references/operate/{references/run.md → run.md} +2 -2
  119. package/skills/uipath-maestro-bpmn/references/operate/{references/ship.md → ship.md} +3 -3
  120. package/skills/uipath-maestro-bpmn/references/patterns/ai-decision-review-guide.md +138 -0
  121. package/skills/uipath-maestro-bpmn/references/patterns/approval-chain-guide.md +136 -0
  122. package/skills/uipath-maestro-bpmn/references/patterns/composing-guide.md +113 -0
  123. package/skills/uipath-maestro-bpmn/references/patterns/external-wait-guide.md +145 -0
  124. package/skills/uipath-maestro-bpmn/references/patterns/failure-escalation-guide.md +103 -0
  125. package/skills/uipath-maestro-bpmn/references/patterns/high-volume-batch-guide.md +107 -0
  126. package/skills/uipath-maestro-bpmn/references/patterns/queue-distribution-guide.md +129 -0
  127. package/skills/uipath-maestro-bpmn/references/patterns/smart-triage-guide.md +129 -0
  128. package/skills/uipath-maestro-bpmn/references/registry-workflow.md +15 -0
  129. package/skills/uipath-maestro-bpmn/references/shared/local-metadata-regeneration-guide.md +67 -36
  130. package/skills/uipath-maestro-bpmn/references/shared/project-layout.md +6 -5
  131. package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +23 -5
  132. package/skills/uipath-maestro-bpmn/validator/bpmn-spec.json +101 -53
  133. package/skills/uipath-maestro-case/SKILL.md +23 -24
  134. package/skills/uipath-maestro-case/references/bindings-and-expressions.md +30 -17
  135. package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -5
  136. package/skills/uipath-maestro-case/references/brownfield.md +3 -3
  137. package/skills/uipath-maestro-case/references/case-commands.md +8 -4
  138. package/skills/uipath-maestro-case/references/case-editing-operations.md +19 -19
  139. package/skills/uipath-maestro-case/references/case-schema.md +17 -3
  140. package/skills/uipath-maestro-case/references/connector-integration.md +25 -16
  141. package/skills/uipath-maestro-case/references/connector-trigger-impl.md +15 -15
  142. package/skills/uipath-maestro-case/references/connector-trigger-planning.md +32 -29
  143. package/skills/uipath-maestro-case/references/entry-points-sync.md +2 -1
  144. package/skills/uipath-maestro-case/references/evals/evals.json +11 -11
  145. package/skills/uipath-maestro-case/references/implementation.md +74 -44
  146. package/skills/uipath-maestro-case/references/phased-execution.md +23 -21
  147. package/skills/uipath-maestro-case/references/placeholder-tasks.md +28 -23
  148. package/skills/uipath-maestro-case/references/planning.md +37 -252
  149. package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +3 -3
  150. package/skills/uipath-maestro-case/references/plugins/case/planning.md +8 -6
  151. package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +3 -3
  152. package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/planning.md +11 -10
  153. package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +6 -6
  154. package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +12 -12
  155. package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +4 -4
  156. package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +10 -9
  157. package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +5 -5
  158. package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +16 -14
  159. package/skills/uipath-maestro-case/references/plugins/logging/impl-json.md +3 -3
  160. package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +15 -15
  161. package/skills/uipath-maestro-case/references/plugins/sla/planning.md +20 -21
  162. package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +6 -6
  163. package/skills/uipath-maestro-case/references/plugins/stages/planning.md +9 -9
  164. package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +9 -9
  165. package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +38 -38
  166. package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -3
  167. package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +24 -20
  168. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -3
  169. package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +24 -20
  170. package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +4 -4
  171. package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +25 -21
  172. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +30 -22
  173. package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +44 -28
  174. package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +10 -10
  175. package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +27 -23
  176. package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +3 -3
  177. package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +3 -3
  178. package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +25 -22
  179. package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +3 -3
  180. package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +25 -21
  181. package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +4 -4
  182. package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +5 -4
  183. package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +9 -9
  184. package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +30 -19
  185. package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +4 -4
  186. package/skills/uipath-maestro-case/references/plugins/triggers/manual/planning.md +8 -7
  187. package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +3 -3
  188. package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +5 -4
  189. package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +5 -5
  190. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +7 -7
  191. package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +21 -17
  192. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +29 -21
  193. package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +23 -21
  194. package/skills/uipath-maestro-case/references/registry-discovery.md +5 -5
  195. package/skills/uipath-maestro-flow/.maintenance/README.md +35 -28
  196. package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +19 -1
  197. package/skills/uipath-maestro-flow/.maintenance/check-links.sh +3 -0
  198. package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +2 -2
  199. package/skills/uipath-maestro-flow/SKILL.md +66 -76
  200. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +75 -72
  201. package/skills/uipath-maestro-flow/references/author/brownfield.md +90 -0
  202. package/skills/uipath-maestro-flow/references/author/{references/editing-operations-cli.md → editing-operations-cli.md} +9 -4
  203. package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +373 -0
  204. package/skills/uipath-maestro-flow/references/author/editing-operations.md +103 -0
  205. package/skills/uipath-maestro-flow/references/author/{references/greenfield.md → greenfield.md} +32 -20
  206. package/skills/uipath-maestro-flow/references/author/planning-arch.md +342 -0
  207. package/skills/uipath-maestro-flow/references/author/planning-impl.md +283 -0
  208. package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +227 -0
  209. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agent/planning.md +2 -2
  210. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agentic-process/impl.md +2 -2
  211. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/agentic-process/planning.md +1 -1
  212. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/api-workflow/impl.md +2 -2
  213. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/api-workflow/planning.md +1 -1
  214. package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
  215. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/batch-transform/planning.md +1 -1
  216. package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +449 -0
  217. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector/planning.md +3 -3
  218. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector-trigger/impl.md +20 -18
  219. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/connector-trigger/planning.md +2 -2
  220. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +427 -0
  221. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +185 -0
  222. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/decision/impl.md +5 -0
  223. package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
  224. package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
  225. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/flow/impl.md +2 -2
  226. package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +178 -0
  227. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/hitl/planning.md +14 -1
  228. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/http/impl-connector.md +4 -4
  229. package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
  230. package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
  231. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/http/planning.md +3 -3
  232. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-agent/impl.md +6 -6
  233. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-agent/planning.md +1 -1
  234. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-voice-agent/impl.md +4 -4
  235. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/inline-voice-agent/planning.md +1 -1
  236. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/ixp/impl.md +8 -8
  237. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/loop/impl.md +1 -1
  238. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/loop/planning.md +1 -1
  239. package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
  240. package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
  241. package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
  242. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/rpa/planning.md +1 -1
  243. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/scheduled-trigger/impl.md +6 -8
  244. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/script/impl.md +5 -5
  245. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/script/planning.md +1 -1
  246. package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
  247. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/subflow/planning.md +1 -1
  248. package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
  249. package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
  250. package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
  251. package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
  252. package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +241 -0
  253. package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/transform/planning.md +1 -1
  254. package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +39 -37
  255. package/skills/uipath-maestro-flow/references/diagnose/{references/failure-modes.md → failure-modes.md} +22 -22
  256. package/skills/uipath-maestro-flow/references/diagnose/{references/troubleshooting-guide.md → troubleshooting-guide.md} +60 -1
  257. package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +27 -25
  258. package/skills/uipath-maestro-flow/references/evaluate/{references/commands-reference.md → commands-reference.md} +58 -7
  259. package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
  260. package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
  261. package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +21 -21
  262. package/skills/uipath-maestro-flow/references/operate/{references/manage.md → manage.md} +4 -4
  263. package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
  264. package/skills/uipath-maestro-flow/references/operate/{references/ship.md → ship.md} +5 -5
  265. package/skills/uipath-maestro-flow/references/shared/action-nodes.md +30 -22
  266. package/skills/uipath-maestro-flow/references/shared/cli-commands.md +76 -184
  267. package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +49 -60
  268. package/skills/uipath-maestro-flow/references/shared/file-format.md +32 -11
  269. package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +49 -104
  270. package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +66 -103
  271. package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +4 -4
  272. package/skills/uipath-planner/SKILL.md +1 -1
  273. package/skills/uipath-planner/assets/templates/case/case-sdd-template.md +5 -3
  274. package/skills/uipath-planner/references/case/case-design-lane-guide.md +1 -1
  275. package/skills/uipath-planner/references/case/case-design-layers-guide.md +2 -2
  276. package/skills/uipath-planner/references/non-pdd-lane-guide.md +2 -1
  277. package/skills/uipath-planner/references/pdd-driven-lane-guide.md +3 -2
  278. package/skills/uipath-planner/references/sdd-generation-guide.md +1 -0
  279. package/skills/uipath-planner/scripts/case/audit_sdd.py +77 -1
  280. package/skills/uipath-platform/SKILL.md +6 -4
  281. package/skills/uipath-platform/references/integration-service/activities.md +7 -4
  282. package/skills/uipath-platform/references/integration-service/reference-resolution.md +28 -0
  283. package/skills/uipath-platform/references/integration-service/resources.md +11 -0
  284. package/skills/uipath-platform/references/integration-service/triggers.md +2 -2
  285. package/skills/uipath-platform/references/licensing/diagnose/CAPABILITY.md +80 -0
  286. package/skills/uipath-platform/references/licensing/diagnose/references/failure-modes.md +147 -0
  287. package/skills/uipath-platform/references/licensing/diagnose/references/troubleshooting-guide.md +125 -0
  288. package/skills/uipath-platform/references/licensing/licensing.md +3 -0
  289. package/skills/uipath-platform/references/licensing/user-licenses-allocations.md +5 -0
  290. package/skills/uipath-platform/references/orchestrator/run-jobs.md +11 -2
  291. package/skills/uipath-platform/references/traces/feedback.md +4 -4
  292. package/skills/uipath-platform/references/traces/traces.md +1 -1
  293. package/skills/uipath-process-mining/SKILL.md +6 -6
  294. package/skills/uipath-process-mining/references/lifecycle-and-rbac.md +10 -8
  295. package/skills/uipath-process-mining/references/model-editing.md +1 -1
  296. package/skills/uipath-process-mining/references/querying.md +4 -3
  297. package/skills/uipath-review/SKILL.md +171 -541
  298. package/skills/uipath-review/references/agents/agents-lowcode-rules.md +73 -92
  299. package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +4 -0
  300. package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +73 -180
  301. package/skills/uipath-review/references/architecture-assessment-guide.md +93 -105
  302. package/skills/uipath-review/references/review-workflow-guide.md +1 -1
  303. package/skills/uipath-review/references/rpa/modern-studio-issues.md +44 -44
  304. package/skills/uipath-review/references/rpa/rpa-common-issues.md +251 -321
  305. package/skills/uipath-review/references/rpa/rpa-review-checklist.md +1 -1
  306. package/skills/uipath-review/references/rule-catalog-workflow.md +25 -45
  307. package/skills/uipath-review/references/rule-format.md +21 -21
  308. package/skills/uipath-rpa/.maintenance/pattern-card-maintenance.md +1 -1
  309. package/skills/uipath-rpa/CLAUDE.md +4 -5
  310. package/skills/uipath-rpa/SKILL.md +40 -246
  311. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/FindText.md +2 -10
  312. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetColorAtPosition.md +2 -10
  313. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetCursorPosition.md +2 -10
  314. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetField.md +13 -13
  315. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetFieldAtPosition.md +2 -10
  316. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetScreenArea.md +27 -8
  317. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetText.md +2 -14
  318. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/GetTextAtPosition.md +2 -10
  319. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/MoveCursor.md +3 -11
  320. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/MoveCursorToText.md +2 -10
  321. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendControlKey.md +2 -8
  322. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendKeys.md +2 -10
  323. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SendKeysSecure.md +2 -10
  324. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SetField.md +14 -13
  325. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/SetFieldAtPosition.md +4 -7
  326. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession/_common-options.md +29 -0
  327. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession/authoring-paths.md +58 -0
  328. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/TerminalSession.md +197 -11
  329. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitFieldText.md +2 -10
  330. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitScreenReady.md +9 -10
  331. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitScreenText.md +2 -14
  332. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities/WaitTextAtPosition.md +2 -10
  333. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/activities.json +271 -0
  334. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/coded/coded-api.md +61 -3
  335. package/skills/uipath-rpa/references/activity-docs/UiPath.Terminal.Activities/2.10/overview.md +76 -0
  336. package/skills/uipath-rpa/references/cli-reference.md +63 -29
  337. package/skills/uipath-rpa/references/coded/codedworkflow-reference.md +59 -1
  338. package/skills/uipath-rpa/references/coded/operations-guide.md +2 -1
  339. package/skills/uipath-rpa/references/debugging.md +29 -12
  340. package/skills/uipath-rpa/references/environment-setup.md +54 -1
  341. package/skills/uipath-rpa/references/execution-maps-guide.md +10 -9
  342. package/skills/uipath-rpa/references/legacy/activity-docs/_INVOKE-CODE.md +1 -1
  343. package/skills/uipath-rpa/references/uia-starter-guide.md +46 -8
  344. package/skills/uipath-rpa/references/xaml/common-pitfalls.md +3 -4
  345. package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +7 -8
  346. package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +132 -42
  347. package/skills/uipath-solution/SKILL.md +9 -6
  348. package/skills/uipath-solution/references/activate-and-manage.md +11 -6
  349. package/skills/uipath-solution/references/develop-solution.md +39 -28
  350. package/skills/uipath-solution/references/pack-and-deploy.md +49 -1
  351. package/skills/uipath-solution/references/scenarios/failure-modes.md +1 -1
  352. package/skills/uipath-solution/references/scenarios/intra-solution-references.md +3 -3
  353. package/skills/uipath-solution/references/scenarios/manual-edits.md +1 -1
  354. package/skills/uipath-solution/references/scenarios.md +2 -2
  355. package/skills/uipath-solution/references/solution-overview.md +15 -6
  356. package/skills/uipath-tasks/SKILL.md +11 -6
  357. package/skills/uipath-tasks/references/task-assignment.md +5 -0
  358. package/skills/uipath-tasks/references/task-catalogs.md +7 -4
  359. package/skills/uipath-tasks/references/task-completion.md +3 -1
  360. package/skills/uipath-tasks/references/task-data.md +3 -3
  361. package/skills/uipath-tasks/references/task-lifecycle.md +11 -0
  362. package/skills/uipath-tasks/references/task-metadata.md +4 -3
  363. package/skills/uipath-test/SKILL.md +13 -28
  364. package/skills/uipath-test/references/failure-triage-guide.md +90 -0
  365. package/skills/uipath-test/references/playwright-first-mile-guide.md +2 -2
  366. package/skills/uipath-test/references/publish-and-link-guide.md +0 -1
  367. package/skills/uipath-test/references/test-result-report-guide.md +1 -2
  368. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/interpretations/healing-agent-data.md +1 -1
  369. package/skills/uipath-troubleshoot/references/presenting.md +1 -1
  370. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/folder-not-accessible.md +1 -1
  371. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/generic-error-400.md +4 -4
  372. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/integration-service-400.md +2 -2
  373. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/job-operation-timeout.md +1 -1
  374. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/no-suitable-runtime-machine.md +1 -1
  375. package/version-manifest.json +2 -2
  376. package/skills/uipath-maestro-case/scripts/audit_plan.py +0 -231
  377. package/skills/uipath-maestro-flow/references/author/references/brownfield.md +0 -93
  378. package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +0 -545
  379. package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +0 -131
  380. package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -638
  381. package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -306
  382. package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +0 -229
  383. package/skills/uipath-maestro-flow/references/author/references/plugins/batch-transform/impl.md +0 -174
  384. package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +0 -741
  385. package/skills/uipath-maestro-flow/references/author/references/plugins/delay/impl.md +0 -75
  386. package/skills/uipath-maestro-flow/references/author/references/plugins/end/impl.md +0 -65
  387. package/skills/uipath-maestro-flow/references/author/references/plugins/hitl/impl.md +0 -204
  388. package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl-manual.md +0 -65
  389. package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl.md +0 -201
  390. package/skills/uipath-maestro-flow/references/author/references/plugins/merge/impl.md +0 -43
  391. package/skills/uipath-maestro-flow/references/author/references/plugins/merge/planning.md +0 -29
  392. package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +0 -121
  393. package/skills/uipath-maestro-flow/references/author/references/plugins/subflow/impl.md +0 -230
  394. package/skills/uipath-maestro-flow/references/author/references/plugins/summarize/impl.md +0 -198
  395. package/skills/uipath-maestro-flow/references/author/references/plugins/summarize/planning.md +0 -71
  396. package/skills/uipath-maestro-flow/references/author/references/plugins/switch/planning.md +0 -38
  397. package/skills/uipath-maestro-flow/references/author/references/plugins/terminate/impl.md +0 -48
  398. package/skills/uipath-maestro-flow/references/author/references/plugins/transform/impl.md +0 -287
  399. package/skills/uipath-maestro-flow/references/evaluate/references/eval-sets-guide.md +0 -226
  400. package/skills/uipath-maestro-flow/references/evaluate/references/upload-safety.md +0 -82
  401. package/skills/uipath-maestro-flow/references/operate/references/run.md +0 -99
  402. /package/skills/uipath-maestro-bpmn/references/diagnose/{references/failure-modes.md → failure-modes.md} +0 -0
  403. /package/skills/uipath-maestro-bpmn/references/operate/{references/manage.md → manage.md} +0 -0
  404. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/decision/planning.md +0 -0
  405. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/delay/planning.md +0 -0
  406. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/end/planning.md +0 -0
  407. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/flow/planning.md +0 -0
  408. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/ixp/planning.md +0 -0
  409. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/queue/impl.md +0 -0
  410. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/queue/planning.md +0 -0
  411. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/scheduled-trigger/planning.md +0 -0
  412. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/switch/impl.md +0 -0
  413. /package/skills/uipath-maestro-flow/references/author/{references/plugins → plugins}/terminate/planning.md +0 -0
  414. /package/skills/uipath-maestro-flow/references/evaluate/{references/evaluators-guide.md → evaluators-guide.md} +0 -0
  415. /package/skills/uipath-maestro-flow/references/evaluate/{references/running-guide.md → running-guide.md} +0 -0
@@ -1,16 +1,16 @@
1
1
  # RPA Common Issues
2
2
 
3
- Catalog of frequently found issues in UiPath RPA projects, with detection methods and recommended fixes.
3
+ Catalog of frequently found UiPath RPA project issues, with detection methods, severity guidance, and fixes.
4
4
 
5
5
  ## Structural Issues
6
6
 
7
7
  ### Missing .cs.json Metadata Files
8
8
 
9
- **Symptom:** Coded workflow `.cs` files exist without companion `.cs.json` files.
9
+ **Symptom:** Coded workflow `.cs` files lack companion `.cs.json` files.
10
10
 
11
- **Impact:** The workflow won't appear in Studio's entry points or be invocable from other workflows. Arguments won't be discoverable.
11
+ **Impact:** The workflow is absent from Studio entry points, cannot be invoked reliably, and has undiscoverable arguments.
12
12
 
13
- **Detection:**
13
+ **Detection:** Run:
14
14
  ```bash
15
15
  # Find .cs files that should have .cs.json companions
16
16
  # (files with [Workflow] or [TestCase] attributes)
@@ -19,686 +19,616 @@ grep -rl "\[Workflow\]\|\[TestCase\]" --include="*.cs" . | while read f; do
19
19
  done
20
20
  ```
21
21
 
22
- **Fix:** Use `uipath-rpa` skill to regenerate metadata, or run `uip rpa validate` which will flag missing metadata.
22
+ **Fix:** Use `uipath-rpa` skill to regenerate metadata, or run `uip rpa validate` to flag missing metadata.
23
23
 
24
24
  ### Broken Entry Points
25
25
 
26
- **Symptom:** `entryPoints` in project.json references files that don't exist or have been renamed.
26
+ **Symptom:** `project.json` `entryPoints` references missing or renamed files.
27
27
 
28
- **Detection:** Read project.json → `entryPoints` → verify each `filePath` exists on disk.
28
+ **Detection:** Read `project.json` → `entryPoints` and verify every `filePath` exists.
29
29
 
30
- **Fix:** Update `entryPoints` array to match actual workflow files, or remove stale entries.
30
+ **Fix:** Update `entryPoints` to actual workflow files or remove stale entries.
31
31
 
32
32
  ### Windows-Legacy Compatibility Lock-In
33
33
 
34
- **Symptom:** Project uses Windows-Legacy compatibility (`project.json` has no `targetFramework` or `targetFramework: "Legacy"` — the reliable marker; expression language is usually VisualBasic but Legacy C# projects exist).
34
+ **Symptom:** `project.json` lacks `targetFramework` or has `targetFramework: "Legacy"`; this is the reliable marker. Expression language is usually VisualBasic, but Legacy C# projects exist.
35
35
 
36
- **Support status:** Legacy is supported **indefinitely** in Studio LTS (2024.10, 2025.10, 2026.10, and all future LTS releases). It is NOT a deployment blocker. It is NOT a mid-term support risk. Deprecation means "no new features in Legacy," not "Legacy will be removed."
36
+ **Support status:** Legacy is supported **indefinitely** in Studio LTS (2024.10, 2025.10, 2026.10, and all future LTS releases). It is NOT a deployment blocker or mid-term support risk. Deprecation means no new Legacy features, not removal.
37
37
 
38
- **NEVER flag as Critical based on framework alone.** Severity is Warning if blocking desired modern features, Info if Studio LTS is the organizational standard.
38
+ **Severity:** NEVER flag as Critical based on framework alone. Use Warning when it blocks desired modern features, or Info when Studio LTS is the organizational standard.
39
39
 
40
- **When recommending migration, lead with the 2-3 features most relevant to the project's actual pain points** — heavy UI maintenance → Healing Agent + Unified Target + Object Repository; weak testing → coded tests + Test Manager; AI use cases → Autopilot + Agents.
40
+ **Migration guidance:** Lead with the 2-3 features relevant to actual pain points: heavy UI maintenance → Healing Agent + Unified Target + Object Repository; weak testing → coded tests + Test Manager; AI use cases → Autopilot + Agents. SOAP web services are a valid reason to stay on Legacy because they are supported only in Legacy.
41
41
 
42
- **Valid reason to stay on Legacy:** SOAP web services (only supported in Legacy).
43
-
44
- **Route Legacy-specific deep validation to `uipath-rpa` (Legacy mode).** The standard `uip rpa` tooling targets Windows/Cross-platform projects; Legacy mode in `uipath-rpa` uses the `uip rpa-legacy` CLI internally.
42
+ **Tooling:** Route Legacy-specific deep validation to `uipath-rpa` (Legacy mode). Standard `uip rpa` tooling targets Windows/Cross-platform projects; Legacy mode in `uipath-rpa` uses the `uip rpa-legacy` CLI internally.
45
43
 
46
44
  Ranked feature list, severity matrix, migration tooling and blockers, pre-flight order, and post-migration checks: [rpa-review-checklist.md §10 "Windows-Legacy Compatibility"](rpa-review-checklist.md).
47
45
 
48
46
  ### Wrong Expression Language
49
47
 
50
- **Symptom:** XAML files contain expressions in a language that doesn't match the project's `expressionLanguage` setting.
48
+ **Symptom:** XAML expressions do not match the project's `expressionLanguage`.
51
49
 
52
- **Impact:** Expressions fail to compile. VB.NET expressions in a CSharp project (or vice versa) cause validation errors.
50
+ **Impact:** Expressions fail to compile.
53
51
 
54
- **Detection:** Read project.json `expressionLanguage`, then check XAML files for mismatched expression syntax.
52
+ **Detection:** Read `project.json` `expressionLanguage`, then inspect XAML for mismatched syntax.
55
53
 
56
- **Fix:** Rewrite expressions in the correct language, or change the project setting (requires rewriting all expressions).
54
+ **Fix:** Rewrite expressions in the configured language, or change the project setting and rewrite all expressions.
57
55
 
58
56
  ## Performance Issues
59
57
 
60
58
  ### Oversized XAML Files
61
59
 
62
- **Symptom:** XAML workflow files exceeding 500KB, with critical issues above 5MB.
60
+ **Symptom:** XAML exceeds 500KB; files above 5MB are critical and files above 7MB can hang Studio.
63
61
 
64
- **Impact:** Studio becomes slow to open, edit, and save. Files >7MB can hang Studio entirely.
62
+ **Impact:** Studio is slow to open, edit, and save.
65
63
 
66
- **Detection:**
64
+ **Detection:** Run:
67
65
  ```bash
68
66
  find . -name "*.xaml" -size +500k -exec ls -lh {} \;
69
67
  ```
70
68
 
71
- **Fix:** Break large workflows into smaller sub-workflows using Invoke Workflow File. Extract reusable sequences into separate files.
69
+ **Fix:** Split workflows with Invoke Workflow File and extract reusable sequences.
72
70
 
73
71
  ### Hardcoded Delay Activities
74
72
 
75
- **Symptom:** `Delay` activities with fixed time values instead of element-based waits.
73
+ **Symptom:** Fixed-time `Delay` activities replace element-based waits.
76
74
 
77
- **Impact:** Wastes execution time on fast systems, causes timeout failures on slow systems. Non-deterministic behavior.
75
+ **Impact:** Delays waste time on fast systems and fail on slow systems.
78
76
 
79
- **Detection:** Workflow Analyzer rules ST-DBP-026 and ST-PRR-004. Also grep XAML for `Delay` activities.
77
+ **Detection:** Run Workflow Analyzer rules ST-DBP-026 and ST-PRR-004; also grep XAML for `Delay` activities.
80
78
 
81
- **Fix:** Replace with `Element Exists`, `Check App State`, `On Element Appear`, or `Retry Scope` with element-based conditions.
79
+ **Fix:** Use `Element Exists`, `Check App State`, `On Element Appear`, or `Retry Scope` with element-based conditions.
82
80
 
83
81
  ### Progressive Slowdown in Long-Running Processes
84
82
 
85
- **Symptom:** Automation starts fast (30 sec/item) and progressively slows to minutes per item after 1+ hours. No crash — just gets slower.
86
-
87
- **Impact:** Jobs that should take 1 hour take 8. Timeouts, missed SLAs, wasted robot licenses.
83
+ **Symptom:** Processing slows progressively after 1+ hours without crashing.
88
84
 
89
- **Root causes:** Excel processes not killed between iterations (dozens of orphaned EXCEL.EXE accumulate), browser DOM growth in web loops, DataTable variables growing with uncleared temp data, Log Message flooding inside tight loops.
85
+ **Root causes:** Orphaned `EXCEL.EXE`, browser DOM growth, uncleared DataTables, and per-iteration logging.
90
86
 
91
- **Detection:** For processes looping >50 times: verify `KillAllProcesses.xaml` kills Excel/browser processes; check that browser is closed/reopened every 50-100 iterations for web loops; verify no growing DataTable variables inside loops; check for Log Message inside tight loops.
87
+ **Detection:** For loops over 50 iterations, verify `KillAllProcesses.xaml` kills Excel/browser processes; verify browsers close and reopen every 50-100 web iterations; check for growing DataTables and `Log Message` inside tight loops.
92
88
 
93
- **Fix:** Add periodic resource cleanup. Kill Excel in Finally blocks. Close/reopen browser every N iterations. Clear temp variables between iterations. Log summaries before/after loops instead of per-iteration.
89
+ **Fix:** Clean resources periodically; kill Excel in Finally blocks; close/reopen browsers every N iterations; clear temporary variables; log summaries before/after loops instead of every iteration.
94
90
 
95
91
  ### Nested Loops Over Large DataTables
96
92
 
97
- **Symptom:** `For Each Row` nested inside another `For Each Row`, processing large datasets.
93
+ **Symptom:** Nested `For Each Row` or `For Each` activities process large datasets.
98
94
 
99
- **Impact:** O(n^2) complexity. A 1000-row table with nested loops executes 1,000,000 iterations.
95
+ **Impact:** O(n^2) work; 1000 rows can produce 1,000,000 iterations.
100
96
 
101
97
  **Detection:** Search XAML for nested `ForEachRow` or `ForEach` activities.
102
98
 
103
- **Fix:** Use LINQ queries, `Filter Data Table`, `Join Data Table`, or `Dictionary`/`HashSet` lookups instead.
99
+ **Fix:** Use LINQ, `Filter Data Table`, `Join Data Table`, or `Dictionary`/`HashSet` lookups.
104
100
 
105
101
  ### Excessive Logging in Loops
106
102
 
107
- **Symptom:** `Log Message` activities inside tight loops logging every iteration.
103
+ **Symptom:** `Log Message` runs on every iteration of a tight loop.
108
104
 
109
- **Impact:** Floods Orchestrator logs, degrades performance, increases storage costs.
105
+ **Impact:** Orchestrator log flooding, slower execution, and higher storage cost.
110
106
 
111
- **Detection:** Check for Log Message activities inside For Each / While loops.
107
+ **Detection:** Inspect `For Each` and `While` loops for `Log Message` activities.
112
108
 
113
- **Fix:** Log summary before/after the loop. Use counters and log at intervals (every 100 items). Set production log level to Info.
109
+ **Fix:** Log summaries before/after loops, or counters at intervals such as every 100 items. Set production logging to Info.
114
110
 
115
111
  ### Unoptimized Selectors
116
112
 
117
- **Symptom:** Selectors using unstable attributes (`idx`, dynamic IDs, session-specific values).
113
+ **Symptom:** Selectors use unstable attributes such as `idx`, dynamic IDs, or session-specific values.
118
114
 
119
- **Impact:** Intermittent failures, flaky automation runs.
115
+ **Impact:** Intermittent, flaky runs.
120
116
 
121
- **Detection:**
117
+ **Detection:** Run:
122
118
  ```bash
123
119
  grep -r 'idx=' --include="*.xaml" .
124
120
  ```
125
121
 
126
- **Fix:** Use stable attributes (`id`, `name`, `automationid`). Use wildcards for dynamic portions. Use Anchor Base for elements near stable anchors. Use Object Repository for centralized selector management.
122
+ **Fix:** Prefer stable `id`, `name`, and `automationid`; wildcard dynamic portions; use Anchor Base and Object Repository.
127
123
 
128
124
  ## Security Issues
129
125
 
130
126
  ### Hardcoded Credentials
131
127
 
132
- **Symptom:** Passwords, API keys, or connection strings embedded directly in workflow files, Config.xlsx, or source code.
128
+ **Symptom:** Passwords, API keys, or connection strings are embedded in XAML, `Config.xlsx`, or source code.
133
129
 
134
- **Impact:** Credentials exposed in source control, logs, and package files. Critical security vulnerability.
130
+ **Impact:** Credentials may appear in source control, logs, and packages. **Severity: Critical.**
135
131
 
136
- **Detection:**
132
+ **Detection:** Run:
137
133
  ```bash
138
134
  # Check for common credential patterns in all project files
139
135
  grep -ri "password\s*=" --include="*.xaml" --include="*.cs" --include="*.json" .
140
136
  grep -ri "apikey\|api_key\|secret\|token" --include="*.xaml" --include="*.cs" --include="*.json" .
141
137
  ```
142
138
 
143
- **Fix:** Use Orchestrator Credential Assets, external credential stores (CyberArk, Azure Key Vault, HashiCorp Vault), or Windows Credential Manager. Retrieve with `Get Credential` activity.
139
+ **Fix:** Use Orchestrator Credential Assets, CyberArk, Azure Key Vault, HashiCorp Vault, or Windows Credential Manager. Retrieve with `Get Credential`.
144
140
 
145
141
  ### SecureString Misuse
146
142
 
147
- **Symptom:** `SecureString` values converted to plain `String` via `.ToString()` or `new NetworkCredential("", secureString).Password`.
143
+ **Symptom:** `SecureString` becomes plain `String` through `.ToString()` or `new NetworkCredential("", secureString).Password`.
148
144
 
149
- **Impact:** Defeats the purpose of SecureString protection. Password visible in memory and potentially in logs.
145
+ **Impact:** Protection is defeated and the password may enter memory or logs.
150
146
 
151
- **Detection:** Workflow Analyzer rule ST-SEC-009. Grep for `NetworkCredential` or `SecureStringToString` patterns.
147
+ **Detection:** Run Workflow Analyzer rule ST-SEC-009 and grep for `NetworkCredential` or `SecureStringToString` patterns.
152
148
 
153
- **Fix:** Keep passwords as `SecureString` throughout the workflow. Use `Type Secure Text` for UI entry. Pass as `SecureString` arguments.
149
+ **Fix:** Keep passwords as `SecureString`; use `Type Secure Text` and `SecureString` arguments.
154
150
 
155
151
  ### Sensitive Data in Logs
156
152
 
157
- **Symptom:** Log messages containing PII, credentials, or business-sensitive data.
153
+ **Symptom:** Logs contain PII, credentials, or business-sensitive values.
158
154
 
159
- **Impact:** Sensitive data visible in Orchestrator logs, potentially accessible to unauthorized users.
155
+ **Impact:** Sensitive information is exposed through Orchestrator logs.
160
156
 
161
- **Detection:** Review all Log Message activities for variable interpolation that includes sensitive fields.
157
+ **Detection:** Review all `Log Message` interpolations for sensitive fields.
162
158
 
163
- **Fix:** Redact or mask sensitive values before logging. Use Add Log Fields selectively. Review log output in Orchestrator after test runs.
159
+ **Fix:** Redact or mask values, use Add Log Fields selectively, and review Orchestrator output after testing.
164
160
 
165
161
  ## Maintainability Issues
166
162
 
167
163
  ### God Workflows
168
164
 
169
- **Symptom:** Single workflow file containing 50+ activities with deeply nested logic.
165
+ **Symptom:** One file has 50+ activities and deeply nested logic; >200KB is suspicious.
170
166
 
171
- **Impact:** Difficult to understand, debug, test, and modify. High risk of regression when changing anything.
167
+ **Impact:** Difficult understanding, debugging, testing, and safe modification.
172
168
 
173
- **Detection:** Check XAML file size (>200KB is suspicious). Count activities in each workflow. Check nesting depth (Workflow Analyzer rule ST-MRD-009).
169
+ **Detection:** Count activities and nesting depth; run ST-MRD-009.
174
170
 
175
- **Fix:** Extract logical sections into sub-workflows. Each workflow should have a single responsibility. Target 15-30 activities per workflow.
171
+ **Fix:** Extract logical sections into single-responsibility sub-workflows. Target 15-30 activities per workflow.
176
172
 
177
173
  ### Default Activity Names
178
174
 
179
- **Symptom:** Activities with names like "Sequence", "Assign", "If", "Click", "Type Into".
175
+ **Symptom:** Names remain `Sequence`, `Assign`, `If`, `Click`, or `Type Into`.
180
176
 
181
- **Impact:** Impossible to understand workflow logic without reading each activity's properties. Debugging becomes a guessing game.
177
+ **Impact:** Logic cannot be understood without opening properties.
182
178
 
183
- **Detection:** Workflow Analyzer rule ST-MRD-002.
179
+ **Detection:** Run Workflow Analyzer rule ST-MRD-002.
184
180
 
185
- **Fix:** Rename every activity to describe its purpose: "Click 'Login' Button", "Assign Invoice Total", "Check if Customer Exists".
181
+ **Fix:** Rename activities by purpose, such as `Click 'Login' Button`, `Assign Invoice Total`, or `Check if Customer Exists`.
186
182
 
187
183
  ### Magic Strings and Numbers
188
184
 
189
- **Symptom:** Hardcoded string values and numbers scattered throughout workflows (column indices, status codes, file paths, email addresses).
185
+ **Symptom:** Repeated literals such as column indices, status codes, paths, and email addresses are scattered through workflows.
190
186
 
191
- **Impact:** Changes require finding and updating every occurrence. Easy to miss one, causing bugs.
187
+ **Impact:** Changes require error-prone manual replacement.
192
188
 
193
- **Detection:** Workflow Analyzer rule ST-USG-005 (hardcoded activity arguments). Manual review for repeated literal values.
189
+ **Detection:** Run ST-USG-005 and review repeated literals.
194
190
 
195
- **Fix:** Extract to variables, Config.xlsx settings, or Orchestrator assets. Use named constants for status codes and column names.
191
+ **Fix:** Use variables, `Config.xlsx`, Orchestrator assets, and named constants.
196
192
 
197
193
  ### Unused Variables and Dependencies
198
194
 
199
- **Symptom:** Variables declared but never referenced. NuGet packages in dependencies but no activities from them used.
195
+ **Symptom:** Variables are never referenced or packages provide no used activities.
200
196
 
201
- **Impact:** Clutters the project, causes confusion, increases package restore time.
197
+ **Impact:** Clutter, confusion, and slower package restore.
202
198
 
203
- **Detection:** Workflow Analyzer rules ST-USG-009 (unused variables) and ST-USG-010 (unused dependencies).
199
+ **Detection:** Run ST-USG-009 and ST-USG-010.
204
200
 
205
- **Fix:** Remove unused variables and uninstall unused packages.
201
+ **Fix:** Remove unused variables and packages.
206
202
 
207
203
  ### Deep Nesting
208
204
 
209
- **Symptom:** If-Else inside If-Else inside If-Else (>3 levels). For Each inside For Each inside For Each.
205
+ **Symptom:** More than three nested If-Else levels or deeply nested loops.
210
206
 
211
- **Impact:** Extremely difficult to follow logic flow. Error-prone modifications.
207
+ **Impact:** Logic is difficult to follow and modify.
212
208
 
213
- **Detection:** Workflow Analyzer rules ST-MRD-007 (nested If) and ST-MRD-009 (deeply nested activities).
209
+ **Detection:** Run ST-MRD-007 and ST-MRD-009.
214
210
 
215
- **Fix:** Extract nested logic into separate workflows. Use Switch/Flowchart instead of deeply nested If-Else. Use early returns (Flowchart decision nodes) to reduce nesting.
211
+ **Fix:** Extract workflows, use Switch/Flowchart, and use early-return decision nodes.
216
212
 
217
213
  ## Error Handling Issues
218
214
 
219
215
  ### Throw Used Instead of Rethrow (Stack Trace Lost)
220
216
 
221
- **Symptom:** Catch block uses `Throw` activity with `New Exception(exception.Message)` instead of `Rethrow`.
217
+ **Symptom:** A Catch uses `Throw` with `New Exception(exception.Message)` instead of `Rethrow`.
222
218
 
223
- **Impact:** Original stack trace destroyed. Exception appears to originate at the Throw activity's location, not the real failure point. Production debugging becomes guesswork. .NET equivalent of `throw ex` vs `throw`.
219
+ **Impact:** Original stack trace is lost. **Severity: Warning.**
224
220
 
225
- **Detection:** Grep XAML for `<Throw>` activities inside `<Catch>` blocks creating new exception objects. Should use `Rethrow` activity (no arguments) to preserve stack trace.
221
+ **Detection:** Inspect `<Throw>` inside `<Catch>` that creates a new exception. It should use argument-free `Rethrow`.
226
222
 
227
- **Fix:** Replace `Throw New Exception(...)` with `Rethrow`. If you must wrap the exception, pass the original as `InnerException`: `Throw New Exception("context", exception)`.
228
-
229
- **Severity:** Warning
223
+ **Fix:** Replace with `Rethrow`; if wrapping is required, use `Throw New Exception("context", exception)`.
230
224
 
231
225
  ### Global Exception Handler Causing Cascading Retry Storms
232
226
 
233
- **Symptom:** Project has `GlobalHandler.xaml` that sets `result = Retry` without filtering which activities should retry.
234
-
235
- **Impact:** Nested activity failures trigger the Global Handler at every parent level. A 3-retry configuration actually produces dozens of retries (6 inner × 3 outer = 18 total). Documented cases of infinite loops.
227
+ **Symptom:** `GlobalHandler.xaml` unconditionally sets `result = Retry`.
236
228
 
237
- **Detection:** Read `GlobalHandler.xaml`. If `result` is set to `Retry` unconditionally (no filtering by activity type / exception type), flag.
229
+ **Impact:** Parent handlers multiply nested retries: a 3-retry configuration nested one level produces `6 inner × 3 outer = 18` executions, with documented cases of infinite loops. **Severity: Warning.**
238
230
 
239
- **Fix:** Conditionalize retry by activity type — exclude Throw, Rethrow, Try-Catch, and Retry Scope. Only retry specific transient-failure-prone activities (HTTP, UI actions).
231
+ **Detection:** Read `GlobalHandler.xaml`; flag unconditional retry without activity- or exception-type filtering.
240
232
 
241
- **Severity:** Warning
233
+ **Fix:** Exclude Throw, Rethrow, Try-Catch, and Retry Scope. Retry only selected transient-prone activities such as HTTP and UI actions.
242
234
 
243
235
  ### Global Exception Handler + REFramework (Redundant and Conflicting)
244
236
 
245
- **Symptom:** Project has both `Framework/` folder (REFramework) AND `GlobalHandler.xaml`.
237
+ **Symptom:** Both `Framework/` and `GlobalHandler.xaml` exist.
246
238
 
247
- **Impact:** REFramework already has comprehensive Try-Catch in every state and uses specific exceptions for state transitions. The Global Handler catches exceptions REFramework needs to propagate, interfering with retry/recovery logic.
239
+ **Impact:** The global handler interferes with REFramework state transitions and recovery. **Severity: Warning.**
248
240
 
249
- **Detection:** Check for both `Framework/` directory and `GlobalHandler.xaml` in the project.
241
+ **Detection:** Check for both paths.
250
242
 
251
- **Fix:** Remove `GlobalHandler.xaml` in REFramework projects. Use REFramework's built-in error handling (`SetTransactionStatus`, `RetryCurrentTransaction`).
252
-
253
- **Severity:** Warning
243
+ **Fix:** Remove `GlobalHandler.xaml` from REFramework projects and use `SetTransactionStatus` and `RetryCurrentTransaction`.
254
244
 
255
245
  ### Empty Catch Blocks
256
246
 
257
- **Symptom:** Try-Catch with empty Catch body — exception is silently swallowed.
247
+ **Symptom:** Catch body is empty.
258
248
 
259
- **Impact:** Errors go undetected. Process appears to succeed but produces incorrect results.
249
+ **Impact:** Errors are silently swallowed.
260
250
 
261
- **Detection:** Workflow Analyzer rule ST-DBP-003.
251
+ **Detection:** Run ST-DBP-003.
262
252
 
263
- **Fix:** At minimum, log the exception. Decide whether to re-throw, handle, or escalate.
253
+ **Fix:** At minimum log the exception; then handle, rethrow, or escalate deliberately.
264
254
 
265
255
  ### No Business vs System Exception Distinction
266
256
 
267
- **Symptom:** All exceptions treated identically — either all retried or all failed.
257
+ **Symptom:** All exceptions are treated identically.
268
258
 
269
- **Impact:** Business exceptions (data issues) get retried unnecessarily. System exceptions (transient failures) don't get retried.
259
+ **Impact:** Business errors are retried and system errors are not appropriately retried.
270
260
 
271
- **Detection:** Grep all `.xaml` and `.cs` files for `BusinessRuleException` — if absent, the distinction is missing entirely. Also check exception handling in REFramework's SetTransactionStatus or equivalent logic.
261
+ **Detection:** Grep `.xaml` and `.cs` for `BusinessRuleException`; inspect REFramework status handling.
272
262
 
273
- **Fix:** Throw `BusinessRuleException` for data/validation issues (e.g., `Throw New BusinessRuleException("Invoice amount is negative")`) — marked Failed-Business, not retried. Let system exceptions propagate for transient failures (auto-retry).
263
+ **Fix:** Throw `BusinessRuleException` for data/validation issues, such as `Throw New BusinessRuleException("Invoice amount is negative")`; let system exceptions propagate for transient retry.
274
264
 
275
265
  ### ContinueOnError Overuse
276
266
 
277
- **Symptom:** `ContinueOnError=True` set on multiple activities as a blanket error suppression.
267
+ **Symptom:** Multiple activities use `ContinueOnError=True` or `ContinueOnError="{x:Null}"` as blanket suppression.
278
268
 
279
- **Impact:** Errors silently ignored. Process continues with invalid state, producing incorrect results downstream.
269
+ **Impact:** Invalid state continues downstream.
280
270
 
281
271
  **Detection:** Grep XAML for `ContinueOnError="True"` or `ContinueOnError="{x:Null}"`.
282
272
 
283
- **Fix:** Remove ContinueOnError. Use proper Try-Catch blocks. Only use ContinueOnError with explicit annotation explaining why.
273
+ **Fix:** Remove it and use Try-Catch. Retain only with an explicit reason annotation.
284
274
 
285
275
  ### Missing Finally Blocks for Resource Cleanup
286
276
 
287
- **Symptom:** Try-Catch blocks without Finally blocks when using external resources (file handles, database connections, application scopes).
277
+ **Symptom:** Resource-wrapping Try-Catch lacks Finally cleanup.
288
278
 
289
- **Impact:** Resource leaks. Files remain locked, database connections remain open, applications accumulate across retries and Init cycles.
279
+ **Impact:** Files, database connections, and applications leak across retries and Init cycles.
290
280
 
291
- **Detection:** Check Try-Catch activities that wrap file I/O, database, or application scope activities — verify Finally section exists and contains cleanup logic.
281
+ **Detection:** Inspect Try-Catch around file I/O, database, and application scopes for a cleanup-containing Finally.
292
282
 
293
- **Fix:** Add Finally blocks to close/dispose resources. Use `Close Application` or `Kill Process` in Finally for UI scopes. Use `Close Workbook` in Finally for Excel. Critical in REFramework Process.xaml and SetTransactionStatus workflows.
283
+ **Fix:** Close/dispose resources in Finally: `Close Application`, `Kill Process`, or `Close Workbook`. This is critical in REFramework `Process.xaml` and `SetTransactionStatus`.
294
284
 
295
285
  ### Generic Exception Catching
296
286
 
297
- **Symptom:** All Catch blocks catch only `System.Exception` instead of specific exception types.
287
+ **Symptom:** Every Catch handles only `System.Exception`.
298
288
 
299
- **Impact:** All exceptions treated identically. Cannot distinguish between transient network failures (should retry), data validation errors (should not retry), and application crashes (should recover). Leads to inappropriate retry behavior and missed root causes.
289
+ **Impact:** Transient, business, and application failures receive inappropriate handling.
300
290
 
301
- **Detection:** Check Catch blocks for exception type. All catching `System.Exception` without any specific type catches is a code smell.
291
+ **Detection:** Inspect Catch types; generic-only handling is a code smell.
302
292
 
303
- **Fix:** Catch specific exception types first with targeted handling: `TimeoutException` for transient waits, `SelectorNotFoundException` for UI issues, `BusinessRuleException` for data problems. Add a generic `System.Exception` catch last as a safety net that logs full details and re-throws.
293
+ **Fix:** Catch specific types first, such as `TimeoutException`, `SelectorNotFoundException`, and `BusinessRuleException`. Add a final `System.Exception` safety catch that logs full details and rethrows.
304
294
 
305
295
  ### Missing Retry Logic for External Calls
306
296
 
307
- **Symptom:** HTTP requests, API calls, or database operations with no retry mechanism.
297
+ **Symptom:** HTTP, API, or database operations are outside Retry Scope.
308
298
 
309
- **Impact:** Transient network failures or service unavailability causes permanent failure.
299
+ **Impact:** Transient failures become permanent failures.
310
300
 
311
- **Detection:** Check for HTTP Request, Invoke Method, and database activities outside Retry Scope.
301
+ **Detection:** Inspect HTTP Request, Invoke Method, and database activities.
312
302
 
313
- **Fix:** Wrap transient-failure-prone activities in Retry Scope with appropriate retry count and interval. Use exponential backoff for API rate limiting.
303
+ **Fix:** Use Retry Scope with suitable count and interval; use exponential backoff for API rate limiting.
314
304
 
315
305
  ## Queue and Transaction Issues
316
306
 
317
307
  ### No Queue for High-Volume Processing
318
308
 
319
- **Symptom:** Process reads all items from a source and processes them sequentially in a single run, with no queue.
309
+ **Symptom:** More than 50 independent items are processed sequentially without Orchestrator queues.
320
310
 
321
- **Impact:** No per-item retry, no audit trail per item, no distributed processing, single point of failure.
311
+ **Impact:** No per-item retry, audit trail, or distributed processing.
322
312
 
323
- **Detection:** Check if process reads a dataset and loops through it without using Orchestrator queues.
313
+ **Detection:** Check whether a dataset is read and looped without queue use.
324
314
 
325
- **Recommendation:** If volume >50 items/run AND items are independent, recommend Dispatcher-Performer with queues. Flag as **Info** — the current approach may be intentional for low-volume scenarios.
315
+ **Recommendation:** For volume >50 items/run AND independent items, recommend Dispatcher-Performer with queues. Flag **Info** because low-volume or dependent processing may be intentional.
326
316
 
327
317
  ### Hardcoded Queue Names
328
318
 
329
- **Symptom:** Queue name embedded as a string literal in workflows instead of using Config.xlsx or assets.
319
+ **Symptom:** Queue names are literal strings in `Add Queue Item` or `Get Transaction Item`.
330
320
 
331
- **Impact:** Queue name change requires modifying and republishing the process. Different environments can't use different queues.
321
+ **Impact:** Environment changes require republishing.
332
322
 
333
- **Detection:** Grep for `Add Queue Item` and `Get Transaction Item` activities with literal queue names.
323
+ **Detection:** Inspect those activities for literal names.
334
324
 
335
- **Fix:** Store queue name in Config.xlsx or Orchestrator asset. Reference via `Config("QueueName")`.
325
+ **Fix:** Store names in `Config.xlsx` or Orchestrator assets and use `Config("QueueName")`.
336
326
 
337
327
  ### Missing Transaction Status Updates
338
328
 
339
- **Symptom:** Queue items processed but `Set Transaction Status` not called on all paths (especially failure paths).
329
+ **Symptom:** `Set Transaction Status` is absent on success or failure paths.
340
330
 
341
- **Impact:** Items remain "In Progress" for ~24 hours before being marked "Abandoned". No proper audit trail.
331
+ **Impact:** Items remain In Progress for ~24 hours before abandonment.
342
332
 
343
- **Detection:** Check all code paths in ProcessTransaction for Set Transaction Status calls.
333
+ **Detection:** Inspect every `ProcessTransaction` path.
344
334
 
345
- **Fix:** Ensure Set Transaction Status is called in both success and failure/catch paths. Use Finally blocks.
335
+ **Fix:** Set status on success and failure/catch paths, using Finally where appropriate.
346
336
 
347
337
  ### Queue Items Stuck "In Progress" After Bot Crash
348
338
 
349
- **Symptom:** Bot crashes mid-transaction (network failure, VM restart, Robot Service stop). The queue item remains "In Progress" for 24 hours before auto-abandonment.
350
-
351
- **Impact:** During the 24-hour window, the item cannot be retried. No built-in auto-reset mechanism. For HITL workflows, this is worse — if the human takes >24 hours, the item is abandoned even though the workflow is legitimately waiting.
339
+ **Symptom:** A crash leaves an item In Progress for 24 hours; HITL work may be abandoned while legitimately waiting.
352
340
 
353
- **Detection:** Check if the Init state includes orphan cleanup logic — querying for In Progress items older than a threshold and resetting them. Check if long-running/HITL workflows use the long-running workflow template.
341
+ **Detection:** Check Init for orphan cleanup querying old In Progress items and resetting them; check long-running/HITL workflows for the long-running workflow template.
354
342
 
355
- **Fix:** Build an orphan cleanup step in Init: `Get Queue Items` filtered by `InProgress` status and age >2 hours, then set them to Failed for retry. For HITL, use the long-running workflow framework template.
343
+ **Fix:** In Init, run `Get Queue Items` filtered by `InProgress` and age >2 hours, then set stale items to Failed for retry. Use the long-running workflow framework for HITL.
356
344
 
357
345
  ## REFramework-Specific Issues
358
346
 
359
347
  ### Double-Retry Configuration
360
348
 
361
- **Symptom:** Both `MaxRetryNumber > 0` in Config.xlsx AND `Max # of Retries > 0` on the Orchestrator Queue.
349
+ **Symptom:** `MaxRetryNumber > 0` in `Config.xlsx` and `Max # of Retries > 0` on the Orchestrator Queue.
362
350
 
363
- **Impact:** Retries multiply. With MaxRetryNumber=3 and Queue MaxRetries=3, a single failed item gets up to 9 attempts. Confuses error tracking and wastes processing time.
351
+ **Impact:** Retries multiply; values of 3 and 3 allow up to 9 attempts.
364
352
 
365
- **Detection:** Read Config.xlsx Constants sheet for MaxRetryNumber. Check Orchestrator Queue configuration for max retries.
353
+ **Detection:** Read `Config.xlsx` Constants and the queue configuration.
366
354
 
367
- **Fix:** Use one mechanism, not both. For queue-based: set MaxRetryNumber=0 and configure retries on the queue. For non-queue: use MaxRetryNumber only.
355
+ **Fix:** Use one mechanism. For queue-based processing set `MaxRetryNumber=0` and configure queue retries; otherwise use `MaxRetryNumber`.
368
356
 
369
357
  ### Transaction Shape: One-to-Many (Bulk-in-Transaction / Thick Transaction)
370
358
 
371
- **What it is:** The declared contract (queue schema, input args, flow input, agent input schema) says one invocation represents ONE entity, but the execution body iterates over a sub-collection of that entity and performs external effects per sub-item. One declared transaction actually performs many units of external work.
372
-
373
- This shape applies to **any project type**:
374
- - **RPA queue:** queue item = company, execution body loops employees
375
- - **Flow:** flow input = one request, body fans out to N downstream calls
376
- - **Agent:** one agent invocation produces N tool calls that should be separate sessions
377
- - **API workflow:** one request triggers N writes
378
-
379
- **Shape detection (mechanical — this is classification, not a verdict):**
359
+ **Definition:** A declared input represents one entity, but the execution body iterates over a collection of business entities and performs external effects per sub-item. This applies to RPA queues, flows, agents, and API workflows.
380
360
 
381
- The shape is one-to-many when BOTH:
382
- 1. The execution body iterates (`ForEach` / `While` / `for` / `foreach`) over a field of the declared input that is a collection of business entities, AND
383
- 2. The loop body performs at least one external effect (workflow invocation with side effects, HTTP call, queue op, DB write, persistent UI action, file write outside Temp, email send)
361
+ **Mechanical classification:** Both conditions must hold:
362
+ 1. The body uses `ForEach`, `While`, `for`, or `foreach` over a collection field of the declared input.
363
+ 2. The loop body performs an external effect: side-effecting workflow invocation, HTTP call, queue operation, DB write, persistent UI action, file write outside Temp, or email send.
384
364
 
385
- Session scope, shared credentials, "one portal" / "one browser" framing, or PDD wording do NOT change the shape. Only the loop body's actual external effects determine it.
386
-
387
- **Remediation depends on two independent questions:**
365
+ Session scope, shared credentials, one-portal framing, and PDD wording do not change the shape.
388
366
 
389
367
  **Question A — Are sub-units independently splittable?**
368
+ - **Yes:** Invoices, orders, records, and files are free-standing; use dispatcher/performer so each is one atomic item.
369
+ - **No:** Sequential domains such as carrier group-plan enrollment, SAP multi-step transactions, or bank wire setup require in-place partial-failure hardening.
370
+ - If unclear, default to “yes, probably splittable” and recommend investigation.
390
371
 
391
- - **Yes** (invoices, orders, records, files — each sub-unit is a free-standing transaction): the correct architectural fix is dispatcher/performer. Split the queue so each sub-unit is one atomic item.
392
- - **No** (carrier group-plan enrollment, SAP multi-step transaction, bank wire setup — the domain forces one sequential session): queue splitting is infeasible. The fix shifts to hardening partial-failure recovery in place.
393
-
394
- Answering "splittable?" requires understanding the domain. When unclear, default to "yes, probably splittable" and recommend investigation.
395
-
396
- **Question B — What partial-failure recovery exists today?**
397
-
398
- Look semantically, not by filename. Any of these counts as an idempotency guard:
372
+ **Question B — What recovery exists?** Count any of these as an idempotency or progress guard:
373
+ - Read-check-before-write: `Get X`, SELECT, HTTP GET, or `File Exists` immediately before the corresponding write.
374
+ - Conditional skip based on already exists/processed state.
375
+ - Queue dedup with `UniqueReference`.
376
+ - SQL `MERGE`, `INSERT ... ON CONFLICT`, `UPSERT`, or `INSERT ... WHERE NOT EXISTS`.
377
+ - HTTP `Idempotency-Key`, `If-Match`, or `If-None-Match` ETag.
378
+ - Status filter such as `WHERE Status != 'Processed'`.
379
+ - Pre-check workflow invocation whose display name or purpose contains, case-insensitively, `check`, `verify`, `exists`, `processed`, `already`, `idempoten`, or `skip`.
380
+ - Persistent per-sub-item progress written to queue `Output`, Data Service, or external state.
399
381
 
400
- | Pattern | What to look for |
401
- |---|---|
402
- | Read-check-before-write | `Get X` / SELECT / HTTP GET / `File Exists` immediately before each write for the same entity |
403
- | Conditional skip | `If` / `Switch` skipping the write based on "already exists / processed" |
404
- | Queue dedup | `Add Queue Item` with `UniqueReference` populated |
405
- | SQL idempotency | `MERGE`, `INSERT ... ON CONFLICT`, `UPSERT`, `INSERT ... WHERE NOT EXISTS` |
406
- | HTTP idempotency | `Idempotency-Key` header, `If-Match` / `If-None-Match` ETag |
407
- | Status filter on reads | `WHERE Status != 'Processed'` |
408
- | Pre-check workflow invocation | Workflow invoked before writes whose display name or purpose contains (case-insensitive) `check`, `verify`, `exists`, `processed`, `already`, `idempoten`, `skip` — one common form, not the only form |
409
- | Per-sub-item progress writes | Writing to queue `Output` / Data Service / external state after each sub-unit |
382
+ Look semantically, not by filename. A filename like `CheckIfEmployeeExists.xaml` is one manifestation, not the signal itself — inline checks, SQL patterns, HTTP headers, queue `UniqueReference`s, and conditional branches all count.
410
383
 
411
- Filenames like `CheckIfEmployeeExists.xaml` are one manifestation. Inline checks, SQL patterns, HTTP headers, queue UniqueReferences, and conditional branches all count.
384
+ **Severity and finding framing:**
412
385
 
413
- **Severity and finding framing (combines Questions A and B):**
414
-
415
- | A: Splittable? | B: Recovery posture | Severity | Finding framing |
386
+ | Splittable? | Recovery posture | Severity | Finding framing |
416
387
  |---|---|---|---|
417
- | Yes | No guards + `MaxRetryNumber` < 2 | **Critical** | "Split into dispatcher/performer. Current architecture risks partial-state corruption on transient failure." |
418
- | Yes | Guards exist + weak progress output | **Warning** | "Consider dispatcher/performer split for better analytics and retry isolation." |
419
- | No | No guards, no progress tracking | **Warning** | "Sub-units cannot be queued independently, but current code has no idempotency or progress tracking — one failure at item N forces replaying items 1..N−1. Add idempotency guards and per-sub-item progress markers." |
420
- | No | Guards + adequate retry but no per-sub-item progress output | **Info** | "Partial-failure recovery could be improved with per-sub-item progress markers written to queue Output for observability." |
421
- | Yes | Guards + retry + per-sub-item output | **Info** | "Working with compensation; consider dispatcher/performer if volume grows." |
388
+ | Yes | No guards + `MaxRetryNumber` < 2 | **Critical** | Split into dispatcher/performer; current architecture risks partial-state corruption on transient failure. |
389
+ | Yes | Guards + weak progress output | **Warning** | Consider dispatcher/performer for better analytics and retry isolation. |
390
+ | No | No guards, no progress tracking | **Warning** | Add idempotency guards and per-sub-item progress markers; replay currently repeats prior work. |
391
+ | No | Guards + adequate retry but no per-sub-item progress output | **Info** | Add per-sub-item progress markers to queue Output for observability. |
392
+ | Yes | Guards + retry + per-sub-item output | **Info** | Working with compensation; consider dispatcher/performer if volume grows. |
422
393
 
423
394
  #### When it cannot be split — hardening checklist
424
395
 
425
- If the domain forces a one-to-many shape that cannot be decomposed into separate queue items (e.g., SAP multi-step enrollment, carrier portal group submission, bank wire requiring sequential steps in one session), the reviewer MUST verify ALL of these safeguards. Each missing safeguard is a separate finding.
396
+ Verify every safeguard below. Report each missing safeguard as a separate numbered finding:
426
397
 
427
- | # | Safeguard | What to verify | Severity if missing |
398
+ | # | Safeguard | Verification | Severity if missing |
428
399
  |---|---|---|---|
429
- | 1 | **Per-sub-item try-catch** | Every sub-item write inside the loop is wrapped in its own Try-Catch (not one Try-Catch around the entire loop) | Critical — one failure kills the entire batch |
430
- | 2 | **Per-sub-item status tracking** | After each sub-item succeeds or fails, the result is recorded somewhere persistent (queue Output field, Data Service, database, status column in Excel/DataTable) | Warning — no visibility into partial progress |
431
- | 3 | **Resumability after crash** | If the robot crashes mid-loop (power failure, session drop, OOM), the process can resume from the last completed sub-item on retry, not from the beginning | Warning — crash forces full replay |
432
- | 4 | **Idempotency on each sub-item write** | Re-executing a sub-item that already succeeded does not create duplicates (check-before-write, UPSERT, UniqueReference, conditional skip) | Critical — retry creates duplicate records |
433
- | 5 | **Error classification per sub-item** | Each sub-item failure is classified as Business (skip, move to next) or System (retry sub-item or abort loop) — not all treated the same | Warning — business errors trigger unnecessary retries |
434
- | 6 | **Bounded retry per sub-item** | Failed sub-items have a max retry count (not infinite retry inside the loop) | Warning — infinite retry hangs the robot |
435
- | 7 | **Screenshot/evidence on sub-item failure** | When a sub-item fails, screenshot and error details are captured before moving to the next | Info — debugging production failures without evidence |
436
- | 8 | **Summary logging after loop** | After the loop completes, a log entry reports: total sub-items, succeeded count, failed count, skipped count | Warning — Orchestrator shows "1 transaction succeeded" when 47/50 sub-items actually succeeded |
437
- | 9 | **Application state recovery between sub-items** | After a sub-item failure, the application is returned to a known state before processing the next sub-item (e.g., navigate back to list view, close dialog, clear form) | Critical — failed sub-item leaves app in corrupt state, next sub-item fails on stale UI |
438
- | 10 | **Timeout per sub-item** | Each sub-item has a reasonable timeout (not relying only on the global job timeout) | Info — one hanging sub-item blocks all remaining items |
439
-
440
- Report each missing safeguard as a numbered finding. Example:
400
+ | 1 | **Per-sub-item try-catch** | Each sub-item write has its own Try-Catch, not one Try-Catch around the loop. | Critical |
401
+ | 2 | **Per-sub-item status tracking** | Each success/failure is persisted in queue Output, Data Service, database, status column, or equivalent. | Warning |
402
+ | 3 | **Resumability after crash** | Retry resumes after the last completed sub-item rather than replaying from the beginning. | Warning |
403
+ | 4 | **Idempotency on each sub-item write** | Re-execution cannot create duplicates: check-before-write, UPSERT, UniqueReference, or conditional skip. | Critical |
404
+ | 5 | **Error classification per sub-item** | Business errors skip/move on; system errors retry or abort; they are not treated identically. | Warning |
405
+ | 6 | **Bounded retry per sub-item** | Failed sub-items have a maximum retry count; no infinite inner retry. | Warning |
406
+ | 7 | **Screenshot/evidence on sub-item failure** | Capture screenshot and error details before moving to the next item. | Info |
407
+ | 8 | **Summary logging after loop** | Report total, succeeded, failed, and skipped counts. | Warning |
408
+ | 9 | **Application state recovery between sub-items** | Return the application to a known state after failure before processing the next item. | Critical |
409
+ | 10 | **Timeout per sub-item** | Each item has a reasonable timeout independent of only the global job timeout. | Info |
410
+
411
+ Anchor findings on activity display names, never XAML line numbers. Use formats such as:
441
412
  - `[W-005] One-to-many loop in Process.xaml (For Each 'Process Employees'): no per-sub-item status tracking — partial progress invisible after crash`
442
413
  - `[C-003] One-to-many loop in Process.xaml (For Each 'Process Employees'): no idempotency guard on sub-item write — retry creates duplicate records`
443
414
 
444
- Anchor findings on activity display names, never XAML line numbers — line numbers are meaningless in Studio.
445
-
446
- **Why this shape is a real problem (when remediation is weak):**
447
-
448
- 1. Non-atomic — sub-item #15 of 50 fails and the whole invocation is marked failed despite 14 succeeded
449
- 2. Retry replays everything — one transient failure re-executes every prior sub-item (wasted time, duplicate risk without guards)
450
- 3. Analytics lie — Orchestrator reports "1 processed" when N sub-operations ran
451
- 4. Partial-success invisibility — `SetTransactionStatus` captures only the first inner failure
452
- 5. Blocking runtime — long single transactions tie up a robot; host crash loses in-progress work
415
+ **Why weak remediation matters:** One failure makes the invocation non-atomic; retries replay prior work; Orchestrator analytics report one transaction instead of N operations; `SetTransactionStatus` captures only the first inner failure; and long transactions lose work on host failure while occupying a robot.
453
416
 
454
- **Common misreadings that do NOT change the shape:**
455
-
456
- - "The portal models this as one transaction" — UX framing ≠ atomicity
457
- - "It's all in one `Use Application/Browser`" — session ≠ atomicity
458
- - "They share one credential / connection" — auth reuse ≠ atomicity
459
- - "The PDD calls this one transaction" — declared intent ≠ execution reality
460
- - "Guards exist, so it's fine" — guards are a *remediation* signal (affect severity); they do not re-shape a one-to-many into a one-to-one
461
-
462
- The shape is what the execution body does. Remediation posture and business constraints govern severity and the recommended fix — not the shape label.
417
+ **Misreadings that do not change the shape:** Portal transaction framing, one `Use Application/Browser`, shared credentials or connections, PDD terminology, and the existence of guards. Guards affect severity and remediation, not classification.
463
418
 
464
419
  ### System Exception Swallowed by Try-Catch in ProcessTransaction
465
420
 
466
- **Symptom:** System exceptions in ProcessTransaction are caught by a Try-Catch block inside the workflow that does NOT re-throw. The exception never reaches the state machine, so the framework marks the transaction as Success instead of retrying.
421
+ **Symptom:** A Try-Catch in `Process.xaml` catches `System.Exception` without rethrowing.
467
422
 
468
- **Impact:** The single most common REFramework production failure. Transactions that should retry are silently marked successful. Data goes unprocessed with no error trail.
423
+ **Impact:** REFramework marks the transaction Success instead of retrying; this is a common production failure.
469
424
 
470
- **Detection:** Read Process.xaml — check every Catch block. If a Catch handles `System.Exception` without a Rethrow, the framework's retry mechanism is bypassed. Only `BusinessRuleException` should be caught and NOT rethrown.
425
+ **Detection:** Inspect every Catch in `Process.xaml`.
471
426
 
472
- **Fix:** Ensure all Catch blocks in ProcessTransaction either (a) rethrow system exceptions so they propagate to the state machine, or (b) only catch `BusinessRuleException`. The REFramework only retries when the exception reaches the state machine transition level.
427
+ **Fix:** Rethrow system exceptions so they reach the state machine, or catch only `BusinessRuleException` without rethrowing.
473
428
 
474
429
  ### Config.xlsx Environment-Specific Values in Wrong Sheet
475
430
 
476
- **Symptom:** Environment-specific values (URLs, paths, queue names) stored in Config.xlsx Settings or Constants sheets instead of the Assets sheet.
431
+ **Symptom:** URLs, paths, queue names, or credentials are in Settings or Constants instead of Assets.
477
432
 
478
- **Impact:** Deploying to a new environment requires manually editing Config.xlsx and republishing. Secrets leak into version control.
433
+ **Impact:** Environment deployment requires editing and republishing; secrets may enter source control.
479
434
 
480
- **Detection:** Read Config.xlsx — verify: Constants sheet contains only truly constant values (MaxRetryNumber, timeouts). Settings sheet contains only environment-agnostic settings. All environment-specific values (URLs, paths, credentials, queue names) are in the Assets sheet, referencing Orchestrator Asset names.
435
+ **Detection:** Verify Constants contains only true constants such as `MaxRetryNumber` and timeouts; Settings contains environment-agnostic settings; Assets contains environment-specific values referencing Orchestrator asset names.
481
436
 
482
- **Fix:** Move environment-specific values to the Assets sheet. Create corresponding Orchestrator Assets in each environment folder. Reference via `Config("AssetName")`.
437
+ **Fix:** Move environment-specific values to Assets, create assets per environment, and use `Config("AssetName")`.
483
438
 
484
439
  ### MaxConsecutiveSystemExceptions Disabled
485
440
 
486
- **Symptom:** `MaxConsecutiveSystemExceptions` set to 0 (disabled) in Config.xlsx Constants sheet.
441
+ **Symptom:** `MaxConsecutiveSystemExceptions` is `0` in `Config.xlsx` Constants.
487
442
 
488
- **Impact:** The bot continues processing even when every single transaction fails with System Exceptions. Can run indefinitely, consuming resources and generating noise.
443
+ **Impact:** The bot can process indefinitely while every transaction fails.
489
444
 
490
- **Detection:** Read Config.xlsx Constants sheet.
445
+ **Detection:** Read the Constants sheet.
491
446
 
492
- **Fix:** Set to a reasonable value (typically 3-5). This acts as a circuit breaker — if N consecutive transactions fail with System Exceptions, the process stops entirely.
447
+ **Fix:** Set a circuit-breaker value, typically 3-5.
493
448
 
494
449
  ### Empty CloseAllApplications and KillAllProcesses
495
450
 
496
- **Symptom:** These scaffolding files shipped empty and were never implemented.
451
+ **Symptom:** `Framework/CloseAllApplications.xaml` or `Framework/KillAllProcesses.xaml` contains only the default empty Sequence.
497
452
 
498
- **Impact:** Applications accumulate across retries and Init cycles. Causes memory leaks, session conflicts, selector mismatches from stale windows.
453
+ **Impact:** Applications accumulate, causing leaks, session conflicts, and stale selectors.
499
454
 
500
- **Detection:** Read `Framework/CloseAllApplications.xaml` and `Framework/KillAllProcesses.xaml` — check if they contain only the default empty Sequence.
455
+ **Detection:** Read both files.
501
456
 
502
- **Fix:** Implement CloseAllApplications with graceful Close Application activities for each app. Implement KillAllProcesses with Kill Process for each app process name.
457
+ **Fix:** Implement graceful `Close Application` activities and `Kill Process` for each required application process.
503
458
 
504
459
  ### Business Logic in Framework Folder
505
460
 
506
- **Symptom:** Custom code added to files in the `Framework/` folder (InitAllSettings.xaml, framework-level GetTransactionData.xaml, etc.).
461
+ **Symptom:** Custom logic is added to `Framework/` files such as `InitAllSettings.xaml`, framework-level `GetTransactionData.xaml`, or similar.
507
462
 
508
- **Impact:** Upgrading the REFramework template overwrites customizations. Makes the project non-standard and harder for other developers to understand.
463
+ **Impact:** Template upgrades can overwrite it and the project becomes non-standard.
509
464
 
510
- **Detection:** Compare Framework/ files against the original REFramework template on GitHub.
465
+ **Detection:** Compare Framework files with the original REFramework template on GitHub.
511
466
 
512
- **Fix:** Move customizations to root-level files (Process.xaml, root GetTransactionData.xaml, root SetTransactionStatus.xaml).
467
+ **Fix:** Move customizations to root-level `Process.xaml`, root `GetTransactionData.xaml`, or root `SetTransactionStatus.xaml`.
513
468
 
514
469
  ## Production Environment Issues
515
470
 
516
471
  ### Unattended Robot Session Failures
517
472
 
518
- **Symptom:** Automation works in development but fails in production with "Desktop disconnected", selector not found, or "Cannot bring target application in foreground" errors.
473
+ **Symptom:** Production-only desktop, selector, or foreground errors.
519
474
 
520
- **Common causes:**
521
- - Different screen resolution or DPI scaling between dev and production machines
522
- - RDP session disconnect due to network issues or Group Policy timeouts
523
- - UAC prompts blocking robot UI interaction
524
- - Windows "Display information about previous logons" policy preventing session creation
475
+ **Causes:** Screen resolution/DPI differences, RDP disconnects or Group Policy timeouts, UAC prompts, or the Windows “Display information about previous logons” policy.
525
476
 
526
- **Detection:** Check production robot logs for session-related errors. Compare dev and prod machine resolution/DPI settings.
477
+ **Detection:** Inspect production logs and compare development/production resolution and DPI.
527
478
 
528
- **Fix:** Develop at the same resolution as production. Disable idle session timeouts via Group Policy. Disable UAC prompt-triggering auto-start programs. Ensure RDP session settings match.
479
+ **Fix:** Develop at production resolution; disable idle session timeouts through Group Policy; prevent UAC-triggering auto-start programs; align RDP settings.
529
480
 
530
481
  ### Excel Process Hanging
531
482
 
532
- **Symptom:** Excel Application Scope completes but Excel process stays alive in background. Robot hangs indefinitely waiting for Excel.
483
+ **Symptom:** Excel scope completes but `EXCEL.EXE` remains and the robot hangs.
533
484
 
534
- **Detection:** Check for orphaned EXCEL.EXE processes after automation runs. Check for timeout errors in Excel activities.
485
+ **Detection:** Check for orphaned `EXCEL.EXE` and Excel activity timeouts.
535
486
 
536
- **Fix:** Add Kill Process for EXCEL.EXE in KillAllProcesses.xaml AND in Finally blocks. Use `System.Diagnostics.Process.GetProcessesByName("EXCEL")` in coded workflows to force-kill.
487
+ **Fix:** Add `Kill Process` for `EXCEL.EXE` in `KillAllProcesses.xaml` and Finally blocks. In coded workflows use `System.Diagnostics.Process.GetProcessesByName("EXCEL")` to force-kill.
537
488
 
538
489
  ### Selector Breakage After Deployment
539
490
 
540
- **Symptom:** Selectors built on dev machine fail on production machines.
491
+ **Symptom:** Development selectors fail in production.
541
492
 
542
- **Common causes:**
543
- - Browser version differences (Chrome upgrades frequently break selectors)
544
- - Screen resolution / DPI scaling differences
545
- - OS version differences (Windows Server vs Windows 10/11)
546
- - Application version differences (SAP GUI versions, web app deployments)
493
+ **Causes:** Browser, OS, application-version, resolution, or DPI differences.
547
494
 
548
- **Detection:** Compare browser versions, OS versions, resolution, and DPI between dev and prod environments.
495
+ **Detection:** Compare all those versions and settings.
549
496
 
550
- **Fix:** Validate selectors on production machines. Use stable attributes (automationId, name, role). Avoid idx-based selectors. Use Object Repository for centralized selector management. Consider Healing Agent for self-healing selectors.
497
+ **Fix:** Validate on production machines; use automationId, name, and role; avoid idx; use Object Repository and consider Healing Agent.
551
498
 
552
499
  ### Large Output Data Failures
553
500
 
554
- **Symptom:** Automations processing large volumes fail with message size errors.
501
+ **Symptom:** Large DataTables or JSON outputs cause message-size failures.
555
502
 
556
- **Impact:** Output arguments exceeding the `maxMessageSizeInMegabytes` parameter cause job failures.
503
+ **Impact:** Output arguments exceed `maxMessageSizeInMegabytes`.
557
504
 
558
- **Detection:** Check for large DataTables or JSON objects being passed as output arguments.
505
+ **Detection:** Inspect large output arguments.
559
506
 
560
- **Fix:** Store large outputs in Storage Buckets or Data Service instead of output arguments. Process data in batches.
507
+ **Fix:** Store large outputs in Storage Buckets or Data Service and process in batches.
561
508
 
562
509
  ### Browser Auto-Update Breaking Selectors
563
510
 
564
- **Symptom:** Chrome/Edge auto-update breaks all Active Accessibility (AA) mode selectors overnight. Chrome v114 and v117 broke AA selectors for iFrames and PDFs specifically.
511
+ **Symptom:** Browser updates break AA-mode selectors, including known Chrome v114 and v117 failures involving iFrames and PDFs.
565
512
 
566
- **Impact:** Mass production failure with no code change. All web automations fail simultaneously.
513
+ **Detection:** Check whether browser updates are controlled and inspect browser selectors for `aaname` or `role`.
567
514
 
568
- **Detection:** Check if browser auto-update is controlled in production environment. Check for AA-mode selectors on browser targets (most vulnerable). Grep for `aaname` or `role` attributes in selectors — these are AA-dependent.
569
-
570
- **Fix:** Pin browser versions in production (disable auto-update). Use UIA mode instead of AA where possible. Consider `--force-renderer-accessibility=complete` browser flag as workaround. Configure Unified Target Method (Strict + Fuzzy + Image + Anchor) for resilience.
515
+ **Fix:** Pin production browser versions by disabling auto-update; prefer UIA over AA; consider `--force-renderer-accessibility=complete`; configure Unified Target Method (Strict + Fuzzy + Image + Anchor).
571
516
 
572
517
  ## Silent Failure Patterns
573
518
 
574
- Issues where the bot reports success but the outcome is wrong. These are the costliest production issues because they are discovered hours or days later.
575
-
576
519
  ### No Output Verification After Data Writes
577
520
 
578
- **Symptom:** Bot writes data (Excel, database, web form, API POST) but does not verify the write succeeded. The target system may accept the command but fail to save.
521
+ **Symptom:** Excel, database, web-form, or API writes are not verified.
579
522
 
580
- **Impact:** Bot reports success. The next morning someone discovers blank reports, missing records, or duplicate entries. Rare but extremely costly.
523
+ **Impact:** The bot reports success despite missing or duplicate records.
581
524
 
582
- **Detection:** After every write operation (`Write Range`, `Submit Form`, HTTP POST, database INSERT), check for a verification step — read-back, count check, or status code validation.
525
+ **Detection:** After every `Write Range`, `Submit Form`, HTTP POST, or database INSERT, check for read-back, count, or status-code validation. APIs require specific success-code validation, not merely 2xx.
583
526
 
584
- **Fix:** Add verification after critical writes. For Excel: read back and compare row count. For APIs: validate HTTP response status code (not just 2xx — check for specific success codes). For databases: verify affected row count.
527
+ **Fix:** Add verification; read back Excel and compare row counts, validate API response codes, and verify database affected-row counts.
585
528
 
586
529
  ### No Record Count Validation After Data Processing
587
530
 
588
- **Symptom:** Bot filters or transforms a DataTable but does not compare input count to output count.
531
+ **Symptom:** Filters, LINQ, or DataTable transformations do not compare input and output counts.
589
532
 
590
- **Impact:** Rows silently dropped during filtering or LINQ operations go undetected. Partial processing reported as complete.
533
+ **Impact:** Dropped rows are reported as complete.
591
534
 
592
- **Detection:** After `Filter Data Table`, LINQ `.Where()`, or any DataTable transformation, check for row count comparison logging (e.g., `Log Message: "Processed {output.Rows.Count} of {input.Rows.Count} rows"`).
535
+ **Detection:** Check for count comparison after `Filter Data Table`, LINQ `.Where()`, and other transformations.
593
536
 
594
- **Fix:** Log input and output counts after every data transformation. Flag if output < input without explanation.
537
+ **Fix:** Log input and output counts after every transformation and flag unexplained output < input.
595
538
 
596
539
  ## Coded Workflow Pitfalls (C#)
597
540
 
598
- Issues specific to coded workflows that differ from XAML patterns.
599
-
600
541
  ### Namespace Clashes with Activity Packages
601
542
 
602
- **Symptom:** Coded workflow class named `Mail`, `Excel`, `Http`, or other common name conflicts with UiPath activity package namespaces.
543
+ **Symptom:** Classes are named `Mail`, `Excel`, `Http`, `Browser`, `SAP`, or `PDF` and conflict with package namespaces.
603
544
 
604
- **Impact:** Cryptic compilation errors that do not point to the real problem. Build fails with unhelpful messages.
545
+ **Impact:** Cryptic compilation errors.
605
546
 
606
- **Detection:** Check `.cs` file class names against common UiPath namespace names. Grep for `class (Mail|Excel|Http|Browser|SAP|PDF)[\s{]` patterns.
547
+ **Detection:** Check class names and run:
548
+ ```bash
549
+ grep -r "class (Mail|Excel|Http|Browser|SAP|PDF)[\\s{]" --include="*.cs" .
550
+ ```
607
551
 
608
- **Fix:** Use project-specific prefixes for class names. Avoid single-word names that match activity package names.
552
+ **Fix:** Use project-specific prefixes and avoid single-word package names.
609
553
 
610
554
  ### Global Using Directives Break Publishing
611
555
 
612
- **Symptom:** C# 10 global using directives with non-primitive types cause compilation errors when publishing coded workflow libraries.
556
+ **Symptom:** C# 10 `global using` directives reference complex types.
613
557
 
614
- **Impact:** Code compiles locally but fails during NuGet packaging for Orchestrator publishing.
558
+ **Impact:** Local compilation succeeds but NuGet packaging/publishing fails.
615
559
 
616
- **Detection:** Grep `*.cs` files for `global using` statements that reference complex types (not `System`, `System.Linq`, etc.).
560
+ **Detection:** Grep `*.cs` for `global using` statements referencing non-primitive types.
617
561
 
618
- **Fix:** Remove global using directives for non-primitive types. Use regular `using` statements in each file instead.
562
+ **Fix:** Remove such global directives and use regular `using` statements per file; primitive `System` and `System.Linq` imports are acceptable.
619
563
 
620
564
  ### Library Invocation NullReferenceException
621
565
 
622
- **Symptom:** Invoking a coded workflow from a library in an external project throws `NullReferenceException` because `CodedWorkflow` service accessors (`system`, `uiAutomation`) are not initialized.
566
+ **Symptom:** A coded workflow works internally but fails from an external library consumer because `CodedWorkflow` accessors such as `system` or `uiAutomation` are uninitialized.
623
567
 
624
- **Impact:** Library works in its own project but fails when consumed by another project.
568
+ **Detection:** Test external invocation and inspect service accessor use.
625
569
 
626
- **Detection:** Check if coded library workflows use service accessors. Test library invocation from an external project.
627
-
628
- **Fix:** Ensure library workflows are properly bootstrapped. Invoke via the generated strongly-typed `workflows.<NAME>()` accessors instead of direct class instantiation.
570
+ **Fix:** Bootstrap the library correctly and invoke through generated strongly typed `workflows.<NAME>()` accessors, not direct class instantiation.
629
571
 
630
572
  ## Concurrency Issues
631
573
 
632
574
  ### Parallel Activity With Shared UI Resources
633
575
 
634
- **Symptom:** `Parallel` activity with child branches that interact with the same UI application, keyboard, or mouse.
635
-
636
- **Impact:** UiPath's Parallel activity executes branches cooperatively on the same thread, but branches share the same desktop session. Clicks land on wrong elements, Type Into targets wrong fields. One branch can monopolize the UI while others block. `Isolated = True` does not fix this.
576
+ **Symptom:** `Parallel` branches interact with the same UI, keyboard, mouse, or application.
637
577
 
638
- **Detection:** Grep XAML for `Parallel` activities whose child branches contain UI activities (`Click`, `TypeInto`, `UseApplicationBrowser`) targeting the same application.
578
+ **Impact:** Branches share one desktop session; clicks and typing target incorrectly. `Isolated = True` does not fix this. **Severity: Warning.**
639
579
 
640
- **Fix:** Use `Parallel` only for I/O-bound work (HTTP calls, file writes, independent sub-processes). For UI parallelism, use multiple robots with queue work distribution.
580
+ **Detection:** Inspect `Parallel` children for `Click`, `TypeInto`, or `UseApplicationBrowser` targeting the same application.
641
581
 
642
- **Severity:** Warning
582
+ **Fix:** Use `Parallel` for I/O-bound work such as HTTP or independent file operations. Use multiple robots with queue distribution for UI parallelism.
643
583
 
644
584
  ## Deployment Issues
645
585
 
646
586
  ### NuGet Feed Unreachable in Production (Offline Robots)
647
587
 
648
- **Symptom:** Production robot machines cannot reach the NuGet feed (no internet, no Orchestrator feed, custom feed unreachable).
588
+ **Symptom:** Production robots cannot reach required NuGet feeds.
649
589
 
650
- **Impact:** Robot fails at process start with package restore errors. Cannot run any process if even one dependency is missing. Common in air-gapped enterprise environments.
590
+ **Impact:** Package restore fails at process start. **Severity: Warning.**
651
591
 
652
- **Detection:** Check `project.json` for custom NuGet feed references. Verify target environment has network access to all feeds, OR that `NUGET_FALLBACK_PACKAGES` environment variable is configured with pre-downloaded packages.
592
+ **Detection:** Inspect `project.json` custom feed references. Verify network access to every feed, OR verify `NUGET_FALLBACK_PACKAGES` points to pre-downloaded packages.
653
593
 
654
- **Fix:** Configure fallback package location with required packages pre-downloaded, or ensure Orchestrator feed is accessible from all robot machines.
655
-
656
- **Severity:** Warning
594
+ **Fix:** Configure fallback packages or make the Orchestrator feed reachable from all robots.
657
595
 
658
596
  ### NuGet NU1107 Assembly Version Conflict
659
597
 
660
- **Symptom:** Project depends on multiple activity packages that transitively depend on conflicting versions of the same assembly (e.g., `Microsoft.CodeAnalysis.Common`). Works in Studio but fails on robot with `NU1107: Version conflict detected`.
661
-
662
- **Impact:** Silent in development (Studio's cache masks it), breaks in production. CI/CD pipelines without full package restore don't catch it.
598
+ **Symptom:** Transitive dependencies require conflicting assembly versions, producing `NU1107: Version conflict detected` on a clean robot restore.
663
599
 
664
- **Detection:** Check for projects with >15 direct dependencies (high risk). Run a clean package restore — NU1107 errors surface immediately.
600
+ **Impact:** Studio cache hides the issue; production and CI/CD fail. **Severity: Warning.**
665
601
 
666
- **Fix:** Explicitly pin the conflicting transitive dependency to a compatible version, or remove one of the packages causing the conflict.
602
+ **Detection:** Projects with >15 direct dependencies are high risk. Run a clean package restore.
667
603
 
668
- **Severity:** Warning
604
+ **Fix:** Pin the conflicting transitive dependency to a compatible version or remove the causing package.
669
605
 
670
606
  ### Invoke Workflow Argument Drift
671
607
 
672
- **Symptom:** Workflow arguments added, renamed, or removed over time, but existing `Invoke Workflow File` call sites still reference stale argument names. Caller sends outdated arguments; callee receives nulls for new required arguments.
608
+ **Symptom:** Workflow arguments changed but `Invoke Workflow File` call sites retain stale bindings.
673
609
 
674
- **Impact:** No XAML compile-time error. Surfaces only at runtime with NullReferenceException or missing-argument errors. In mature projects with many maintainers, drift accumulates silently.
610
+ **Impact:** No XAML compile-time error; runtime null or missing-argument errors occur. **Severity: Warning.**
675
611
 
676
- **Detection:** For each workflow, extract argument list. For each `InvokeWorkflowFile` call of that workflow, extract the argument bindings. Flag any arg name in the definition that's missing from the call site, or vice versa.
612
+ **Detection:** Extract each workflow's arguments and compare them with every `InvokeWorkflowFile` binding. Flag missing or extra names.
677
613
 
678
- **Fix:** Re-import each invocation in Studio (right-click → Import Arguments). Better: organizational discipline to re-import after every argument change.
679
-
680
- **Severity:** Warning
614
+ **Fix:** Re-import arguments in Studio after every argument change.
681
615
 
682
616
  ### Get Asset Used for Credential Type (Wrong Activity)
683
617
 
684
- **Symptom:** `Get Asset` activity used to retrieve a Credential-type Orchestrator asset (instead of `Get Credential`).
685
-
686
- **Impact:** `Get Asset` cannot retrieve credential-type assets — depending on Orchestrator version it errors at runtime or yields no usable password. Either way the downstream login fails.
618
+ **Symptom:** `Get Asset` retrieves a Credential-type Orchestrator asset instead of `Get Credential`.
687
619
 
688
- **Detection:** In Config.xlsx Assets sheet, identify credential assets (by name convention or known usage). Grep XAML for `GetAsset` activities retrieving those names — should be `GetCredential`.
620
+ **Impact:** Runtime failure or unusable password. **Severity: Warning.**
689
621
 
690
- **Fix:** Replace `Get Asset` with `Get Credential` for credential-type assets. In REFramework, put credential asset names in the Settings sheet (retrieved via `Get Credential`), not the Assets sheet (retrieved via `Get Asset`).
622
+ **Detection:** Identify credential assets in Config.xlsx and inspect XAML `GetAsset` use for those names.
691
623
 
692
- **Severity:** Warning
624
+ **Fix:** Replace with `Get Credential`. In REFramework, put credential asset names in the Settings sheet for `Get Credential`, not the Assets sheet for `Get Asset`.
693
625
 
694
626
  ### Per-Robot Asset Values Missing for Production Robots
695
627
 
696
- **Symptom:** Orchestrator asset configured as per-robot/per-user but values not set for all robots that execute the process.
697
-
698
- **Impact:** Robots without a per-robot value either fall back to the global default (if defined) or get Nothing — surfacing as "asset does not have a value associated with this robot" errors. Works in dev (developer's robot has value), fails in production.
628
+ **Symptom:** Per-robot/per-user assets lack values for one or more production robots.
699
629
 
700
- **Detection:** For each per-robot asset, verify values are set for all production robots/machines assigned to the deployment folder.
630
+ **Impact:** Robots receive a global fallback or Nothing and fail with “asset does not have a value associated with this robot.” **Severity: Warning.**
701
631
 
702
- **Fix:** Assign values for all production robots, or reconsider whether per-robot scoping is necessary (global with a single value is simpler when all robots need the same value).
632
+ **Detection:** Verify every per-robot asset has values for all robots/machines assigned to the deployment folder.
703
633
 
704
- **Severity:** Warning
634
+ **Fix:** Assign all production values or use a global asset when every robot needs the same value.