@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
@@ -28,11 +28,11 @@ The user reviews structure first, then attaches real resources once they exist.
28
28
  | Task-entry conditions | ✓ | ✓ | ✓ |
29
29
  | Referenced by stage-exit `selected-tasks-completed` | ✓ | ✓ | ✓ |
30
30
 
31
- **Mocks are forbidden for tasks** because Case's typed cross-task outputs reject references to non-existent output schemas at validation time. A fabricated task-type-id causes `uip maestro case validate` to emit errors about unknown bindings. A placeholder sidesteps this by having no bindings at all — clean validation, clear `<UNRESOLVED>` markers in `tasks.md`, explicit upgrade path.
31
+ **Mocks are forbidden for tasks** because Case's typed cross-task outputs reject references to non-existent output schemas at validation time. A fabricated task-type-id causes `uip maestro case validate` to emit errors about unknown bindings. A placeholder sidesteps this by having no bindings at all — clean validation, clear `<UNRESOLVED>` markers in `registry-resolved.json`, explicit upgrade path.
32
32
 
33
33
  ## When a Placeholder Is Created
34
34
 
35
- During **execution** (Phase 2, Step 9), for any `tasks.md` entry whose `taskTypeId`, `typeId`, or `connectionId` is `<UNRESOLVED: …>`:
35
+ During **execution** (Phase 2, Step 9), for any `registry-resolved.json` entry whose `taskTypeId`, `typeId`, or `connectionId` is `<UNRESOLVED: …>`:
36
36
 
37
37
  1. Skip the schema fetch (`uip maestro case spec` / `uip maestro case tasks describe`).
38
38
  2. Write the task JSON node with structural fields only — no `taskTypeId` / `connectionId` / `inputs` / `outputs` keys (see JSON Shape below).
@@ -79,30 +79,35 @@ Case-level event triggers (`type: "uipath.case.trigger"` with `data.inputs.servi
79
79
 
80
80
  When a `wait-for-connector` rule's connector hasn't resolved at write-time, emit the rule with a **stub `uipath`** (`serviceType` + 2 `"placeholder"` context fields: `connectorKey` + `operation`) — a deliberate mock that validates clean but fails at Studio Web / debug / run until replaced. Full recipe + skip behavior + upgrade path: [connector-trigger-impl.md § Placeholder fallback](connector-trigger-impl.md#placeholder-fallback).
81
81
 
82
- ## `tasks.md` Planning-Entry Shape
83
-
84
- A placeholder-bound entry keeps every structural field and moves the lost wiring into a fenced code block the user will act on later:
85
-
86
- ````markdown
87
- ## T20: Add process task "Validate Submission Completeness" to "Submission Review"
88
- - taskTypeId: <UNRESOLVED: processOrchestration-index.json empty in tenant>
89
- - folder-path: <UNRESOLVED>
90
- - runOnlyOnce: false
91
- - isRequired: true
92
- - order: after T19
93
- - verify: Confirm Result: Success, capture TaskId (placeholder — user to attach process + bindings)
94
- ```text
95
- wiring notes (user must attach after publishing the process):
96
- lob = =metadata.lob
97
- sourceDocs <- "Submission Review"."Fetch Submission from U Submit".submissionData
98
- outputs expected: submissionComplete, missingItems, tier
82
+ ## `registry-resolved.json` Entry Shape
83
+
84
+ A placeholder-bound entry is an ordinary ledger object — Rule 9's keys with `selected: null`, the unresolved reason in the identity slot, and the wiring that had no schema to bind against captured in `wiringNotes`:
85
+
86
+ ```json
87
+ {
88
+ "stage": "Submission Review",
89
+ "task": "Validate Submission Completeness",
90
+ "taskType": "process",
91
+ "cacheFile": "processOrchestration-index.json",
92
+ "searchQuery": "Validate Submission Completeness",
93
+ "matches": [],
94
+ "selected": null,
95
+ "taskTypeId": "<UNRESOLVED: processOrchestration-index.json empty in tenant>",
96
+ "folder-path": "<UNRESOLVED>",
97
+ "rationale": "Empty exact-name lookup after a successful registry pull; user declined the Rule 17 create gate.",
98
+ "wiringNotes": [
99
+ "lob = =metadata.lob",
100
+ "sourceDocs <- \"Submission Review\".\"Fetch Submission from U Submit\".submissionData",
101
+ "outputs expected: submissionComplete, missingItems, tier"
102
+ ]
103
+ }
99
104
  ```
100
- ````
101
105
 
102
106
  Rules:
103
- - **Omit `inputs:` and `outputs:` lines** — no schema to wire against.
104
- - **Capture the intended wiring in a fenced ```` ```text ```` code block** so the user sees the mapping when they upgrade. **Do not start wiring lines with `#`** — they would render as markdown H1 headings; the fenced code block renders as preformatted text.
105
- - **Keep every other field** — order, verify, is-required, run-only-once, display-name.
107
+ - **Omit the resolved-schema keys `inputs` / `outputs`** — no schema to wire against.
108
+ - **Put the intended wiring in `wiringNotes`, one string per mapping.** Phase 2 reads it back into the completion report so the user knows what to attach after registering the resource.
109
+ - **Keep every Rule 9 key.** `matches` is `[]` and `selected` is `null` after a genuine empty lookup; the `<UNRESOLVED: <reason>>` text goes in the identity slot — `taskTypeId` / `typeId` / `connectionId`.
110
+ - **Do not restate the SDD contract** — display name, required, run-only-once, activation mode, entry rule, lane, and verify text stay in `sdd.md`. See [planning.md § Step 4](planning.md).
106
111
 
107
112
  ## What Validation Catches
108
113
 
@@ -1,14 +1,16 @@
1
- # Phase 1 — Planning: sdd.md → tasks.md
1
+ # Phase 1 — Resolution: sdd.md → registry-resolved.json
2
2
 
3
- Generate reviewable task plan (`tasks.md`) from design document (`sdd.md`). Discovers registry resources, resolves task type IDs, produces declarative specification that downstream execution phases (Phase 2 Prototyping → Phase 3 Implementation → Phase 4 Validate → Phase 5 Publish → Phase 6 Debug → Phase 7 Publish to Orchestrator) consume via direct JSON writes to `caseplan.json`. See [implementation.md](implementation.md) for execution detail and [phased-execution.md](phased-execution.md) for phase contracts.
3
+ Resolve every resource the design document (`sdd.md`) names into tenant identities, and record them in `tasks/registry-resolved.json`. `sdd.md` stays the plan; this phase only fills in what the SDD could not know — task type IDs, connection IDs, folder paths, recipient identities. The downstream execution phases (Phase 2 Prototyping → Phase 3 Implementation → Phase 4 Validate → Phase 5 Publish → Phase 6 Debug → Phase 7 Publish to Orchestrator) read the SDD and this ledger and write `caseplan.json` directly. See [implementation.md](implementation.md) for execution detail and [phased-execution.md](phased-execution.md) for phase contracts.
4
+
5
+ > **There is no intermediate plan file.** The SDD is the plan. Do not author a `tasks.md`, a T-numbered task list, or any other restatement of the SDD — it costs a full rewrite of the design and drifts from it. Step 12 walks the SDD against the artifact and closes with `validate --strict` ([implementation.md](implementation.md)).
4
6
 
5
7
  > **Editing an existing case?** Targeted edits to an existing `caseplan.json` skip this planning pipeline — see [brownfield.md](brownfield.md).
6
8
 
7
- > **Output:** `tasks/tasks.md` + `tasks/registry-resolved.json` in the same directory as the sdd.md file. When SLA escalations are present, also `tasks/recipients-resolved.json` — see [`plugins/sla/planning.md` § Identity Resolution](plugins/sla/planning.md#identity-resolution). Explicit plan-only / no-build runs stop at `tasks/tasks.md` and skip registry-derived audit files because tenant lookup is deferred to the later build run — so a request that asks for those audit files is not a no-build run (Step 1).
9
+ > **Output:** `tasks/registry-resolved.json` in the same directory as the sdd.md file. When SLA escalations are present, also `tasks/recipients-resolved.json` — see [`plugins/sla/planning.md` § Identity Resolution](plugins/sla/planning.md#identity-resolution). `tasks/` is adjacent to `sdd.md`, never inside the solution/project.
8
10
  >
9
- > **Exit:** Auto-proceeds to Phase 2 — plan treated as approved, no prompt by default. Stops after `tasks.md` only when the request explicitly asked for a plan-only / review-first run. Re-read `tasks.md` before execution.
11
+ > **Exit:** Auto-proceeds to Phase 2. Stops after resolution only when the request explicitly asked to stop before the build.
10
12
 
11
- > **Per-node-type detail lives in plugins.** This document covers the cross-cutting planning workflow. For how to fill fields for a specific node, consult the relevant plugin:
13
+ > **Per-node-type detail lives in plugins.** This document covers the cross-cutting resolution workflow. For which SDD fields a specific node reads and how to resolve them, consult the relevant plugin:
12
14
  > - Root case → `plugins/case/planning.md`
13
15
  > - Stages (primary / secondary) → `plugins/stages/planning.md`
14
16
  > - Tasks → `plugins/tasks/<type>/planning.md`
@@ -18,6 +20,8 @@ Generate reviewable task plan (`tasks.md`) from design document (`sdd.md`). Disc
18
20
  > - Global variables & arguments → `plugins/variables/global-vars/planning.md`
19
21
  > - Task I/O binding → `plugins/variables/io-binding/planning.md` (**always read alongside the matching task plugin**)
20
22
 
23
+ Each plugin's `planning.md` says how to read that element out of the SDD and what to resolve for it; the sibling `impl-json.md` turns the result into `caseplan.json` JSON.
24
+
21
25
  ---
22
26
 
23
27
  > **Kickoff overview first (if not already shown).** When the design handoff did not run (user-provided `sdd.md`), this is the run's start — present the greenfield flow overview once before Step 0 so the dev knows the phases and the decision points. See [SKILL.md § Kickoff — set dev expectations](../SKILL.md#kickoff--set-dev-expectations-first). If the delegation window already showed it, skip.
@@ -44,18 +48,18 @@ If `npm install -g` fails with a permission error, prompt the user to re-run it
44
48
 
45
49
  ## Step 1 — HARD GATE: check login and pull registry
46
50
 
47
- Registry discovery happens during build planning, so login is required first. This gate runs on every Phase 1 build run — including SDD-without-ledger handoffs and runs with a staged `tasks/registry-resolved.json` — **with two exceptions:** the same-session fast path, and the explicit plan-only / no-build path in SKILL.md Rule 3. For the same-session fast path, when the planner subagent's report (SKILL.md Rule 15) says its `registry pull` succeeded in THIS session — the `~/.uip/case-resources/` cache is machine-global, so the subagent's pull is this session's pull — reuse that cache and skip the re-pull, and run this step **verify-only**: persist the subagent's returned resolution ledger verbatim to `tasks/registry-resolved.json`, spot-verify entries against the session cache, execute recorded `gateDecision`s (Rule 17), and re-resolve only stale or missing entries. Any doubt in a build run (user-provided SDD, cross-session resume, context compaction, failed or never-run design-lane pull, missing cache files) runs the gate in full.
51
+ Registry discovery happens during build planning, so login is required first. This gate runs on every Phase 1 build run — including SDD-without-ledger handoffs and runs with a staged `tasks/registry-resolved.json` — **with two exceptions:** the same-session fast path, and the Design-only exception in SKILL.md Rule 3 (restated below). For the same-session fast path, when the planner subagent's report (SKILL.md Rule 15) says its `registry pull` succeeded in THIS session — the `~/.uip/case-resources/` cache is machine-global, so the subagent's pull is this session's pull — reuse that cache and skip the re-pull, and run this step **verify-only**: persist the subagent's returned resolution ledger verbatim to `tasks/registry-resolved.json`, spot-verify entries against the session cache, execute recorded `gateDecision`s (Rule 17), and re-resolve only stale or missing entries. Any doubt in a build run (user-provided SDD, cross-session resume, context compaction, failed or never-run design-lane pull, missing cache files) runs the gate in full.
48
52
 
49
- **Plan-only / no-build exception:** when the request explicitly asks to stop at `tasks.md` and not create `caseplan.json`, do not run login, registry, connection, schema, or user-discovery commands. Generate `tasks/tasks.md` from the SDD's concrete intended resource/system names, mark tenant identities `resolve at build`, omit registry-derived audit files, and state that the later build run must rerun this hard gate before caseplan execution.
53
+ **Design-only exception:** when the request explicitly asks to stop at the design and not create `caseplan.json`, do not run login, registry, connection, schema, or user-discovery commands. The deliverable is `sdd.md` alone, with tenant identities left `<UNRESOLVED>`; state that the later build run must run this hard gate before caseplan execution. Do not author a substitute plan file.
50
54
 
51
- **Negative trigger — tenant work overrides it.** The exception defers tenant lookup; it does not describe where a run stops. It does NOT fire when the same request asks to resolve resources or identities, pull or refresh the registry, replace a stale registry audit, or produce `tasks/registry-resolved.json` / `tasks/recipients-resolved.json` — even when that request also says to stop before `caseplan.json`, a solution, or Phase 2. Such a run is a normal build-planning run: run this gate in full, resolve every identity, emit the build-path `tasks.md` shape (§4.6 plus each plugin's `planning.md`), and stop at the Rule 7 plan gate.
55
+ **Negative trigger — tenant work overrides it.** The exception defers tenant lookup; it does not describe where a run stops. It does NOT fire when the same request asks to resolve resources or identities, pull or refresh the registry, replace a stale registry audit, or produce `tasks/registry-resolved.json` / `tasks/recipients-resolved.json` — even when that request also says to stop before `caseplan.json`, a solution, or Phase 2. Such a run is a normal resolution run: run this gate in full, resolve every identity, write the ledger, and stop before Phase 2.
52
56
 
53
57
  ```bash
54
58
  uip login status --output json
55
59
  uip maestro case registry pull
56
60
  ```
57
61
 
58
- Outside the fast path, do not inspect `~/.uip/case-resources/` first to decide whether the pull is necessary: cache absence is exactly why the pull must run. Do not continue to Step 2/3 and do not write `tasks.md` or `registry-resolved.json` unless the pull succeeds. If not logged in, prompt the user to log in and stop Phase 1; if the pull fails, surface the command error and stop Phase 1. After a successful pull, read [registry-discovery.md](registry-discovery.md) before the first cache lookup. The pull caches all resources locally at `~/.uip/case-resources/` so subsequent searches are local disk lookups.
62
+ Outside the fast path, do not inspect `~/.uip/case-resources/` first to decide whether the pull is necessary: cache absence is exactly why the pull must run. Do not continue to Step 2/3 and do not write `registry-resolved.json` unless the pull succeeds. If not logged in, prompt the user to log in and stop Phase 1; if the pull fails, surface the command error and stop Phase 1. After a successful pull, read [registry-discovery.md](registry-discovery.md) before the first cache lookup. The pull caches all resources locally at `~/.uip/case-resources/` so subsequent searches are local disk lookups.
59
63
 
60
64
  ## Step 2 — Locate and parse the design document
61
65
 
@@ -78,45 +82,24 @@ If the resolved path has **no `sdd.md`**, the skill hands the design to the `uip
78
82
 
79
83
  ## Step 3 — Resolve resources
80
84
 
81
- Before resource resolution, seed TodoWrite with the items below to track Phase 1 progress through registry lookups and §4 T-entry emit. Mark each `in_progress` on entry, `completed` on exit. One item per emit class — never per T-entry.
85
+ Before resource resolution, seed TodoWrite with the items below to track Phase 1 progress. Mark each `in_progress` on entry, `completed` on exit. One item per class — never per SDD row.
82
86
 
83
- 1. Resolve registry resources (this Step 3)
84
- 2. Write case file T01 (§4.2)
85
- 3. Write trigger entries T02+ (§4.3)
86
- 4. Write variable / argument entries (§4.2.1)
87
- 5. Write stage entries (§4.4)
88
- 6. Write task entries (§4.6)
89
- 7. Write condition entries (§4.7)
90
- 8. Write SLA entries (§4.8)
91
- 9. Finalize tasks.md, auto-proceed to Phase 2 (Step 5)
87
+ 1. Resolve task resources (registry lookups — this Step 3)
88
+ 2. Resolve trigger resources (connector key, connection, activity type)
89
+ 3. Resolve connector-bound condition resources
90
+ 4. Resolve SLA escalation recipients (`recipients-resolved.json`)
91
+ 5. Write `registry-resolved.json`, auto-proceed to Phase 2 (Step 5)
92
92
 
93
93
  For every task, trigger, and condition in the sdd.md:
94
94
 
95
- If the plan-only / no-build exception is active — per Step 1, including its negative trigger, and not merely because the request stops before `caseplan.json` — skip registry and schema discovery in this step and do not fan out through every plugin `planning.md`. Use the compact no-build shape below for the review plan: preserve SDD portable names, emit tenant identities as `resolve at build`, carry every rationale, and stop after `tasks/tasks.md`. The compact no-build plan is exempt from the normal section-batched planning workflow because it is a review artifact, not a build handoff: create `tasks/` if needed and write the complete concise `tasks/tasks.md` with one direct Write, then stop. The later build run owns authoritative resource resolution and regenerates any registry-derived fields before Phase 2.
96
-
97
- **Compact no-build T-entry shape:** each declaration still gets a T-number, but the fields are intentionally review-oriented:
98
-
99
- - Task declarations use an H2 heading with a quoted display name: `## T{N}: task "{Task Name}"`. Do not use dotted task T-numbers (for example, `T12.1`) as the task entry heading; if you group entries by stage, the task's own T-entry still remains the H2.
100
- - Stage entries: `stage-kind`, `entry-rule`, `exit-rule`, `interrupting`, `required`, `sla`, `rationale`.
101
- - Task entries: `stage`, `type`, `activation-mode`, `entry-rule`, `lane`, `required`, `run-only-once`, `resource-intent`, `identity: resolve at build`, `rationale`.
102
- - Trigger/condition/SLA entries: `rule-type`, `source/status`, `target stage/task`, `return-or-close behavior`, `rationale`. Every `selected-tasks-completed` entry carries `selected-tasks-ids`.
103
- - Preserve each task's confirmed SDD activation semantics exactly. A singleton task that starts with its stage remains `activation-mode: parallel` + `entry-rule: current-stage-entered`; a single-task stage or list position does not make it sequential. Use `sequential` + `runs-sequentially` only when the source explicitly requires an ordered run or dependency.
104
- - Global event/exception entries name exactly one interrupting secondary stage and the rule type (`wait-for-connector` or `sla-status-change`); do not duplicate those events across every primary stage. A `sla-status-change` entry names target + SLA title, plus an at-risk escalation title only for an at-risk row (a breach names the SLA alone) — all declared in the SDD and repeated verbatim in `tasks/tasks.md`. The case-level target is the literal `root` — never `Case`, the case name, or another synonym; stage-level targets use the exact stage display name.
105
-
106
- **Rule-valued fields take canonical values, never prose.** `activation-mode`, `entry-rule`, `exit-rule`, and `rule-type` carry a value from their vocabulary exactly as spelled (`runs-sequentially`, `current-stage-entered`, `wait-for-connector`, `adhoc`, `selected-tasks-completed`, …) — review-oriented does not mean free text. When the supplied/approved SDD has an explicit rule row, copy that rule and its selectors exactly only after it passes the Critical Rules: every `selected-tasks-completed` selector must name a non-adhoc sibling in the same stage. An invalid selector is a stop-and-repair, never an authoritative carryover; task proximity and list order alone still never authorize planning to normalize a valid rule. Only derive `runs-sequentially` for ordered work whose source does not already declare an entry rule. Put the human phrasing in `rationale`.
95
+ If the design-only exception is active — per Step 1, including its negative trigger, and not merely because the request stops before `caseplan.json` — skip registry and schema discovery in this step and do not fan out through every plugin `planning.md`. The SDD already carries the design; leave its tenant identities `<UNRESOLVED>`, report which resources the later build run must resolve, and stop. Do not write a plan file in its place.
107
96
 
108
- **`lane` is a number, and grouping is expressed by sharing it.** `lane` is the zero-based `data.tasks` task-set index — `lane: 2`, never a descriptive name like `lane: payment confirmation`. Tasks that run as one task set carry the **same** number: `parallel-after-predecessor` siblings after one predecessor share a single lane value, and a strict chain increments. Giving two siblings different lanes contradicts their `activation-mode` and emits them as separate task sets, which is the defect the mode exists to prevent — the label alone does not group them.
97
+ End the response with suggested next steps: review the SDD, then run a build to resolve tenant resources and create `caseplan.json`.
109
98
 
110
- Do not add `taskTypeId`, `activityTypeId`, `connectionId`, resolved schemas, `inputs`, `outputs`, `registry-resolved.json`, or `recipients-resolved.json` in this mode; those require tenant evidence and belong to the later build run.
111
-
112
- **MANDATORY final gate:** the plan is not deliverable until the skill's deterministic audit prints `AUDIT OK` (read-only): `python3 "<this skill's folder>/scripts/audit_plan.py" tasks/tasks.md --sdd sdd.md`. On `AUDIT FAIL`, fix each finding with Edit and re-run; max 3 rounds, then surface the remaining findings. Quote the final `AUDIT OK` line in the reply as evidence. If `python3` is unavailable, re-check headings and per-task fields against this contract manually.
113
-
114
- End the response with suggested next steps: review the SDD and plan, then run a later build to resolve tenant resources and create `caseplan.json`.
115
-
116
- When the plan-only / no-build exception is not active, continue with the normal build-planning path:
99
+ Otherwise, continue with the normal resolution path:
117
100
 
118
101
  1. **Identify the plugin** by matching the sdd.md component description to an entry in the catalogs below (§3.1–§3.3).
119
- 2. **Load the plugin's `planning.md` — once per plugin type, not per component.** It lists the exact fields to resolve from sdd.md, the cache file(s) to consult, and any discovery steps required. Group the SDD's components by plugin type, read that plugin's `planning.md` a single time, then resolve and emit EVERY component of that type from the one read. Re-reading a plugin reference per T-entry is a read-budget defect (observed: `planning.md` re-read 10–16×, `impl-json.md` up to 26× per build); after context compaction, re-read only the plugin for the section in progress.
102
+ 2. **Load the plugin's `planning.md` — once per plugin type, not per component.** It lists the exact fields to resolve from sdd.md, the cache file(s) to consult, and any discovery steps required. Group the SDD's components by plugin type, read that plugin's `planning.md` a single time, then resolve and emit EVERY component of that type from the one read. Re-reading a plugin reference per element is a read-budget defect (observed: `planning.md` re-read 10–16×, `impl-json.md` up to 26× per build); after context compaction, re-read only the plugin for the section in progress.
120
103
  3. **Apply registry discovery** via [registry-discovery.md](registry-discovery.md) when a taskTypeId is needed. Use the type-specific portable-name field as the query: `Resolved Resource` for process/agent/rpa/api-workflow, Action App title for action, and `Child Case` for case-management. A missing or `<UNRESOLVED>` portable name violates the SDD contract and must be surfaced instead of silently falling back to `Task Name`.
121
104
  4. **Persist every resolution** to `registry-resolved.json` using Rule 9's exact keys (`stage`, `task`, `taskType`, `cacheFile`, `searchQuery`, `matches`, `selected`, `rationale`). Keep the full exact-name match objects for debugging and stale-cache validation.
122
105
 
@@ -155,7 +138,7 @@ When the plan-only / no-build exception is not active, continue with the normal
155
138
  | On task entry | `plugins/conditions/task-entry-conditions/` |
156
139
  | On case exit | `plugins/conditions/case-exit-conditions/` |
157
140
 
158
- > **Connector-bound condition rules.** Any of the 4 condition scopes above can carry a rule whose WHEN is `wait-for-connector` — binding an Integration Service connector event to gate the condition. These rules require the same connector-resolution pipeline as a task-class `wait-for-connector` (TypeCache + `case spec --type trigger` + reference-resolution). Plan-step planners MUST collect connector fields (`type-id`, `connector-key`, `connection-id`, `object-name`, `event-operation`, `event-mode`, `input-values`, optional `filter`, optional `outputs`) in the condition's T-entry alongside the standard `display-name` / `rule-type` / `condition-expression` fields. Shared recipe: [`connector-trigger-impl.md § Target: connector-bound condition rule`](connector-trigger-impl.md#target-connector-bound-condition-rule); per-scope tasks.md format in each condition plugin's `planning.md`.
141
+ > **Connector-bound condition rules.** Any of the 4 condition scopes above can carry a rule whose WHEN is `wait-for-connector` — binding an Integration Service connector event to gate the condition. These rules require the same connector-resolution pipeline as a task-class `wait-for-connector` (TypeCache + `case spec --type trigger` + reference-resolution). Resolution MUST collect the connector fields (`type-id`, `connector-key`, `connection-id`, `object-name`, `event-operation`, `event-mode`, `input-values`, optional `filter`, optional `outputs`) alongside the condition's `display-name` / `rule-type` / `condition-expression` from the SDD. Collect them into the condition's `registry-resolved.json` entry so Phase 2 does not re-discover them. Shared recipe: [`connector-trigger-impl.md § Target: connector-bound condition rule`](connector-trigger-impl.md#target-connector-bound-condition-rule); per-scope fields in each condition plugin's `planning.md`.
159
142
 
160
143
  ### 3.4 Unresolved resources
161
144
 
@@ -167,233 +150,35 @@ When a resource cannot be resolved (registry gap and no cache match, or missing
167
150
 
168
151
  Otherwise:
169
152
 
170
- 1. Mark the line in `tasks.md` with `<UNRESOLVED: <reason>>` in the `taskTypeId` / `typeId` / `connectionId` slot.
171
- 2. **Omit `inputs:` and `outputs:` entirely** on that task entry — there is no schema to wire against. Any input mapping the sdd.md described becomes a fenced ```` ```text ```` code block under the entry with a `wiring notes (user must attach):` header line. **Do not start lines with `#`** — they would render as markdown headings; use a fenced code block instead. Example shape is in [placeholder-tasks.md § `tasks.md` Planning-Entry Shape](placeholder-tasks.md).
172
- 3. Keep every other structural field (display-name, isRequired, runOnlyOnce, order). Task-entry conditions still emit normally.
173
- 4. **Continue planning — do not halt.**
153
+ 1. Record `<UNRESOLVED: <reason>>` in that entry's `taskTypeId` / `typeId` / `connectionId` slot in `registry-resolved.json`, and set its `selected` to `null`.
154
+ 2. Carry the input mapping the sdd.md described into the entry's `wiringNotes` string array — Phase 2 has no schema to wire against, and the completion report reads this back to the user. See [placeholder-tasks.md](placeholder-tasks.md).
155
+ 3. **Continue resolving — do not halt.** The SDD still carries every structural field (display name, required, run-only-once), and Phase 2 still writes the task node and its entry conditions.
174
156
 
175
157
  At execution time, unresolved tasks become **placeholder tasks** in `caseplan.json` (display-name + type only, no task-type-id, no bindings). The workflow graph is still reviewable end-to-end, and the user attaches real resources + bindings externally before runtime. See [placeholder-tasks.md](placeholder-tasks.md).
176
158
 
177
- ## Step 4 — Generate tasks.md and registry-resolved.json
178
-
179
- Create a `tasks/` folder adjacent to the sdd.md file. Generate `tasks.md` using the structure below. Each section is a numbered task (`T01`, `T02`, …) — declarative parameters only. Field names use plain identifiers (e.g., `type:`, `displayName:`, `lane:`), not CLI flag syntax. The implementation phase translates each entry into the matching plugin's JSON writes.
180
-
181
- Cross-reference: [case-schema.md](case-schema.md) for JSON shape, [bindings-and-expressions.md](bindings-and-expressions.md) for inputs/outputs wiring.
182
-
183
- Also write `registry-resolved.json` — full detail per task using Rule 9's exact keys: task type, searched cache filename, search query, all exact-name matches, selected entry, and rationale.
184
-
185
- ### 4.0 Completeness principle (no omissions)
186
-
187
- Every declaration in `sdd.md` must become a T-task in `tasks.md`. Mapping is 1-to-1:
188
-
189
- - **Never filter** declarations on the grounds that the default rule-type, default field value, or "implicit behavior" would cover them. If `sdd.md` lists a task, stage, trigger, condition, SLA row, **variable, or argument**, `tasks.md` emits a T-task for it — regardless of rule-type (`current-stage-entered`, `case-entered`, `exit-only`, `required-tasks-completed`, etc.).
190
- - **Never merge** two sdd.md items into one T-task "because they're similar."
191
- - **Never drop** defaults-looking items (e.g., `is-interrupting: false`, `runOnlyOnce: true`, `marks-stage-complete: true`). The explicit declaration is the signal — honor it.
192
- - **Never drop design rationale.** Copy each SDD stage/task/SLA `Design Rationale` into `rationale:` on its matching T-entry. Condition T-entries copy the rationale for the routing/activation choice they implement. Rationale is reviewer/audit context; the execution plugin ignores it when composing JSON.
193
- - **When in doubt, emit.** It is always correct to create a T-task that mirrors an sdd.md row. It is never correct to silently omit one.
194
- - **When format is ambiguous or unrecognized, ASK — do not skip.** If a row exists but you cannot determine the right plugin, category, or T-entry shape (e.g., trigger "Initial Variable Mapping" uses an aggregate phrase instead of explicit per-field mappings; a variable's category — In / Out / Variable — is unclear; a task type does not match the closed enum), invoke **AskUserQuestion** with the row content + the specific ambiguity + bounded options. Silent omission is a defect. This obligation applies to every sdd.md declaration class above, including variables and arguments.
195
-
196
- Before finalizing `tasks.md` at Step 5, run a completeness cross-check: for every declared stage / task / trigger / condition / SLA row **and every Case Variables table row (one T-entry each, per §4.2.1)** in sdd.md, verify a corresponding T-task exists. Gaps are a defect — fix before proceeding to Phase 2.
197
-
198
- **Cross-check inventory.** Before proceeding to Phase 2, count and report each class:
199
-
200
- | Class | Source in sdd.md | T-entry section |
201
- |---|---|---|
202
- | Case file | Case Metadata | §4.2 (T01) |
203
- | Triggers | Case Triggers | §4.3 (T02+) |
204
- | Variables / arguments | Case Variables | §4.2.1 (after last trigger) |
205
- | Stages | Section 2 stage headings | §4.4 |
206
- | Tasks | Per-stage Tasks tables | §4.6 |
207
- | Conditions | Stage Entry / Stage Exit / Task Entry / Case Exit tables | §4.7 |
208
- | SLA | Case-Level SLA + per-stage Stage SLA + per-action Task SLA | §4.8 |
209
-
210
- Counts that don't match the sdd.md → fix before Step 5 (before proceeding to Phase 2).
211
-
212
- ### 4.0a — Section-batched write contract (mandatory)
213
-
214
- **Per-section batching.** Build `tasks.md` one section at a time — never compose the full body in memory and Write once, but do not pay a Read between sibling T-entries inside a section either.
215
-
216
- Procedure:
217
-
218
- 1. **Seed.** Write `tasks.md` with a `## Inventory` placeholder section only. Single Write.
219
- 2. **Per section.** Sections are §4.2.1 vars → §4.3 triggers → §4.4 stages → §4.6 tasks → §4.7 conditions → §4.8 SLA. For each section:
220
- - **One Read** of `tasks.md` at section entry.
221
- - **N Edit-appends** in sequence, one per T-entry in the section. Skip the re-Read between sibling Edits — Edit's tool result confirms applied state in context.
222
- - TaskUpdate marks each T-entry `in_progress` → `completed` as it goes — that is the per-T-entry audit trail, not the file diff.
223
- 3. **Inventory finalize.** After last T-entry, Edit the inventory section with class-by-class counts (per §4.0 cross-check table).
224
- 4. **`registry-resolved.json`.** Same section-batched discipline — one Read per section, N Edit-appends, no re-Read between siblings.
225
-
226
- **T-entry heading contract.** Every declaration is its own level-two heading in the exact form `## T<n>: <action>`. Do not use level-three-or-deeper headings for T-entries, and do not nest a task beneath a stage's T-entry. A task heading must quote its display name, for example `## T08: Add wait-for-timer task "First Step" to "Process"`. This keeps the plan independently addressable by Phase 2 and by plan validators.
227
-
228
- Why: section-batched round-trips keep tool-call transcript reviewable, preserve rollback granularity at section boundary, allow mid-run interruption recovery via re-Read + resume from next un-applied T-entry, and surface omissions before they propagate — without paying a per-T-entry Read tax that inflates inference latency by ~5s per turn.
229
-
230
- **Hard cap on tasks.md write size.** After the §4.0a Step 1 Seed Write (Inventory placeholder, <1KB), the only legal mutation of `tasks.md` is **Edit-append** per the section-batched contract above. A single Write replacing the whole `tasks.md` is **forbidden** regardless of size. A single Edit-append payload >30KB is also forbidden — split into per-section Edit-appends even when consecutive Edits would total >30KB combined. Rationale: a single 96KB Write of tasks.md emits ~40K output tokens in one turn = ~360s inference latency = ~20% of total session in one tool call. Section-batched Edit-appends spread that cost across ~7 turns of ~50s each, recovers reviewability, and matches the recovery contract (re-Read + resume from next un-applied T-entry).
231
-
232
- **Recovery on interruption:** re-Read `tasks.md`, scan for next un-applied T-entry (the audit trail in TaskUpdate identifies it), resume from there. No sidecar checkpoint file.
233
-
234
- This contract mirrors Phase 3's per-section JSON-write contract (see [implementation.md § Per-plugin execution](implementation.md)).
235
-
236
- ### 4.1 Task ordering
237
-
238
- Always in this order: stages → tasks → conditions → SLA.
239
-
240
- The task **title IS the action description** — do not add a redundant `what` or `type` field. Absorb type into the title (e.g., `Add api-workflow task "..."` not `Add task` + `type: api-workflow`).
241
-
242
- ### 4.2 Create case file (T01)
243
-
244
- Title format: `Create case file "<name>"`
245
-
246
- Consult [`plugins/case/planning.md`](plugins/case/planning.md) for required fields (name, file path, case-identifier, identifier-type, case-app-enabled, description). Source all fields from sdd.md.
247
-
248
- When `identifier-type: external`, `case-identifier` carries the sdd.md expression verbatim (`=vars.<varId>` or `=js:…`); any `=vars.<varId>` it references must be a variable declared in §4.2.1 (an **In** argument or **Variable**). See [`plugins/case/planning.md` § External identifier value](plugins/case/planning.md).
249
-
250
- ### 4.2.1 Declare global variables and arguments
251
-
252
- Title format: `Declare <category> "<name>"` where category is `In argument`, `Out argument`, or `variable`.
253
-
254
- One T-entry per variable or argument from the sdd.md "Case Variables" table. Place these after the case file (T01) and **all** trigger T-entries (T02+) — i.e., after the last trigger row, before stages. In multi-trigger cases the variables block starts at `T0<last-trigger>+1`, not at `T03`. Consult [`plugins/variables/global-vars/planning.md`](plugins/variables/global-vars/planning.md) for the SDD-to-category mapping rules and entry format.
255
-
256
- ### 4.3 Configure trigger(s) (T02+)
257
-
258
- Title format: `Configure <trigger-type> trigger "<name>"`
159
+ ## Step 4 — Write `registry-resolved.json`
259
160
 
260
- Consult the corresponding trigger plugin (`plugins/triggers/<type>/planning.md`) for required fields.
161
+ Create a `tasks/` folder adjacent to the sdd.md file and write `tasks/registry-resolved.json` — one entry per resolved task, trigger, and connector-bound condition, using Rule 9's exact keys: `stage`, `task`, `taskType`, `cacheFile`, `searchQuery`, `matches`, `selected`, `rationale`. Keep the full exact-name match objects for debugging and stale-cache validation. `rationale` explains the selection choice (`"exact name match in caseManagement folder"`); it is never used for verify-text, SDD-vs-spec field translation, or downstream-plugin-behavior claims.
261
162
 
262
- **One T-entry per trigger row in sdd.md.** A case with N entry-point rows in its triggers table emits N trigger T-entries (T02, T03, …) — even when several rows would resolve to `<UNRESOLVED>` because the IS connection isn't provisioned. Per §4.0, "value can't be resolved yet" is not a reason to omit a row; it's a reason to mark `<UNRESOLVED: …>` and continue. Regardless of how many triggers a case has, no per-trigger edge is created (Rule 20; §4.5) — the case starts at the first stage's `case-entered` entry condition whenever any trigger fires.
163
+ This ledger holds **only what registry lookups produced**. It is not a copy of the SDD: do not restate stage/task structure, activation modes, entry rules, inputs, outputs, or design rationale in it. Phase 2 and Phase 3 read those straight from `sdd.md`, which stays the single source of the design contract. Duplicating the contract here re-creates the drift the retired `tasks.md` caused.
263
164
 
264
- Each trigger row uses its plugin's full field set — see `plugins/triggers/<type>/planning.md` for the per-type entry format. Worked example — sdd.md declares 3 entry-point rows (one manual + two events), one of which is unresolved:
165
+ Use the same section-batched write discipline the caseplan uses — one Read per section (tasks → triggers → conditions → SLA recipients), N Edit-appends, no re-Read between siblings. See [case-editing-operations.md](case-editing-operations.md).
265
166
 
266
- ```markdown
267
- ## T02: Configure manual trigger "Operator Starts Case"
268
- - display-name: "Operator Starts Case"
269
- - description: "Operator kicks off a case from the portal"
270
- - order: after T01
271
- - verify: Confirm node appended; capture TriggerId
272
-
273
- ## T03: Configure event trigger "New Inbound Email"
274
- - type-id: <uiPathActivityTypeId>
275
- - connection-id: <connection-uuid>
276
- - connector-key: uipath-microsoft-office-365-outlook
277
- - object-name: Email
278
- - event-operation: created
279
- - event-mode: webhooks
280
- - input-values: {"parentFolderId": "AAMkADNm..."}
281
- - filter: "(contains(subject, 'urgent'))"
282
- - order: after T02
283
- - verify: Confirm trigger configured with correct event parameters
284
-
285
- ## T04: Configure event trigger "Jira Issue Created"
286
- - type-id: <UNRESOLVED: no IS connection for uipath-atlassian-jira>
287
- - connection-id: <UNRESOLVED>
288
- - connector-key: <UNRESOLVED>
289
- - object-name: <UNRESOLVED>
290
- - event-operation: <UNRESOLVED>
291
- - event-mode: <UNRESOLVED>
292
- - order: after T03
293
- - verify: trigger skipped at execution; user attaches after registering connection
294
- ```
295
-
296
- Do **not** collapse the unresolved trigger into a note on T02 or omit it entirely — execution behavior for unresolved event triggers is documented in [`triggers/event/planning.md § Unresolved Fallback`](plugins/triggers/event/planning.md#unresolved-fallback), but the planning row is still required.
297
-
298
- ### 4.4 Create stages
299
-
300
- Title format: `Create stage "<name>"` or `Create secondary stage "<name>"`
301
-
302
- One task per stage. Consult [`plugins/stages/planning.md`](plugins/stages/planning.md) for required fields and the `stage` vs `secondary` decision. Basic properties only — SLA and escalation come later (§4.7).
303
-
304
- Every stage T-entry includes `rationale:` copied from the SDD. It must explain the stage-kind decision and routing shape, especially when one interrupting secondary-stage entry handles a global event.
305
-
306
- ### 4.5 Edges — not authored (RETIRED)
307
-
308
- The skill does not author edges (Rule 20). Emit no edge T-entries. Stage transitions derive entirely from stage entry/exit conditions (§4.7); `caseplan.json.edges` stays `[]`; case start is the first stage's `case-entered` entry condition. Reachability is condition-driven: every stage needs an entry condition naming a reachable producer (the first stage carries `case-entered`); orphan/unreachable stages are design defects owned by the planner's design lane and surfaced by skeleton/full `validate`.
309
-
310
- ### 4.6 Add tasks
311
-
312
- Title format: `Add <type> task "<name>" to "<stage>"`
313
-
314
- One task per task from the sdd.md — do NOT group multiple tasks under a single T-number. Read both the task-type plugin (`plugins/tasks/<type>/planning.md`) and the shared I/O-binding plugin (`plugins/variables/io-binding/planning.md`) before writing the entry. The task plugin owns resource-specific fields; the I/O-binding plugin is the single source of truth for the common output-row grammar.
315
-
316
- Every task entry includes at least:
317
-
318
- - **taskTypeId** — resolved from the registry in Step 3
319
- - **rationale** — copied from the SDD; explains the task-type and activation/sequencing choice
320
- - **activation-mode** — required on every task. One of `sequential`, `parallel`, `parallel-after-predecessor`, `event-triggered`, `adhoc`, `fan-in`, or `conditional-gate`. This is the user-visible task mode decision, not layout state.
321
- - **entry-rule** — required on every task; mirrors the planned task-entry condition rule. Sequential tasks MUST say `runs-sequentially`, event-triggered tasks normally say `wait-for-connector`, adhoc tasks say `adhoc`, parallel stage-start tasks say `current-stage-entered`, parallel siblings after an immediate predecessor say `runs-sequentially`, and fan-in / non-immediate gates say `selected-tasks-completed`.
322
- - **inputs** / **outputs** — see [bindings-and-expressions.md](bindings-and-expressions.md) for the two input modes (literal/expression and cross-task reference)
323
- - **runOnlyOnce** — from sdd.md (default `false` if not specified). Design-lane-generated SDDs should always state `Run Only Once: Yes/No`; when a user-authored SDD omits it, use the frontend/default-new-task behavior (`false`) and do not infer `true` from task type.
324
- - **isRequired** — from sdd.md (default `true` if not specified)
325
- - **order** — authoring order in `tasks.md` (`after T05`, etc.). It is not allowed to carry execution semantics by itself; execution is carried by `activation-mode` + `entry-rule`.
326
- - **lane** — integer task-set index, default increments per task within the stage starting at 0 for structural/layout compatibility. Lane does not express sequencing by itself; it controls the inner `data.tasks[lane][]` grouping only after `activation-mode` and `entry-rule` are decided. For a strict sequential chain, use consecutive single-task lanes (`[[A], [B], [C]]`) and never reuse a lane. Reuse the same lane only for tasks intentionally modeled as parallel siblings (`activation-mode: parallel`, `entry-rule: current-stage-entered`, same lane, and rationale says why they run together as `[[A, B], [C]]`).
327
- - **verify** — what the execution phase should check after running
328
-
329
- Additional fields are plugin-specific; read the plugin's `planning.md` before filling the entry.
330
-
331
- > **Activation-mode audit before writing §4.7.** After §4.6 is drafted and before any condition T-entry is written, scan every stage's task list and make the task mode visible in the plan:
332
- >
333
- > **Authority order:** an explicit rule in the supplied/approved SDD wins. This audit verifies the handoff; it does not redesign or normalize authored rules. Use the derivation bullets below only when authoring from source behavior that has no explicit task-entry rule.
334
- >
335
- > - Contiguous ordered work in one stage (`then`, `after`, `before`, `in order`, direct previous-step wording, or an upstream prerequisite) → every task in that ordered run gets `activation-mode: sequential` and `entry-rule: runs-sequentially`, including the first task, unless the SDD explicitly declares another legal rule.
336
- > - Independent work that starts with the stage → `activation-mode: parallel`, `entry-rule: current-stage-entered`, and rationale says why the tasks are independent.
337
- > - Connector/event callback wait → `activation-mode: event-triggered`, usually `entry-rule: wait-for-connector`.
338
- > - User-launched optional work → `activation-mode: adhoc`, `entry-rule: adhoc`, `isRequired: false`.
339
- > - Branch convergence, fan-in, decision-result routing, or a non-immediate dependency → `activation-mode: fan-in` or `conditional-gate`, `entry-rule: selected-tasks-completed`, with the selected tasks named.
340
- >
341
- > While authoring a new SDD, do not invent `selected-tasks-completed` merely because a task follows the immediately previous task; model a plain contiguous run as `runs-sequentially`. Once an SDD is supplied or approved, preserve each explicit `selected-tasks-completed` row and selector only after confirming every selected task is a non-adhoc sibling in the same stage. Stop and repair an invalid selector before writing `tasks.md` or `caseplan.json`; SDD approval never overrides this Critical Rule. Map a valid selected-task gate to `conditional-gate` or `fan-in` as its authored rationale supports, never to `sequential`.
342
- > Before leaving §4.6, audit each stage's planned lanes: sequential tasks that form a strict chain MUST NOT share a lane with each other or with adhoc/event-driven/parallel work. If `activation-mode`/`entry-rule` conflicts with `lane`, the mode wins and the lane must be corrected. Same-lane grouping is reserved for intentionally parallel siblings, and the rationale must say why they run in parallel.
343
-
344
- > **Outputs are a lossless handoff, not a discovered-name summary.** Project each SDD Outputs table row through the common grammar in [`plugins/variables/io-binding/planning.md` § SDD Outputs table → `tasks.md` projection](plugins/variables/io-binding/planning.md#sdd-outputs-table-to-tasksmd-projection-mandatory), then preserve the resulting list item exactly. Schema discovery may add truly undeclared fields as bare items, but it must not rewrite an SDD row. An explicit equal-name extract such as `greeting -> greeting` stays exactly that; collapsing it to bare `greeting` changes the binding from "write the existing case variable" to "auto-mint a task output." Before the Step 5 approval gate, compare every SDD Outputs row to its task T-entry and fix any missing or changed operator/operand or leaked table placeholder.
345
-
346
- > **Registry handoff:** For a resolved `action` or `case-management` T-entry, translate the selected audit object into the canonical `tasks.md` labels and values:
167
+ > **Registry handoff labels.** For a resolved `action` or `case-management` entry, record the selected audit object under the canonical labels Phase 2 reads:
347
168
  >
348
169
  > | Task type | `name` from | `folder-path` from | `taskTypeId` from |
349
170
  > |---|---|---|---|
350
171
  > | `action` | `selected.deploymentTitle` | `selected.deploymentFolder.fullyQualifiedName` | `selected.id` |
351
172
  > | `case-management` | `selected.name` | `selected.folders[0].fullyQualifiedName` | `selected.entityKey` |
352
173
  >
353
- > Before Step 5, confirm these labels and values match the `selected` object in `registry-resolved.json`.
354
-
355
- > **No shell commands in task entries.** Each task is a declarative specification. Never write `uip` invocations or any other shell commands inside a task body — the execution phase translates specs into JSON mutations.
356
-
357
- > **Record `lane: <n>` per task only when required by the artifact contract.** It is structural/layout state, not a sequencing control. For sequential tasks, preserve their order in `data.tasks`, write `activation-mode: sequential`, put each strict-chain task in its own consecutive lane, and add the `runs-sequentially` entry condition to each task.
358
-
359
- > **Placeholder shape for unresolved resources.** If `taskTypeId` / `typeId` / `connectionId` is `<UNRESOLVED: …>`, omit `inputs:` and `outputs:` entirely and capture wiring intent in a trailing comment block. Execution creates a bare task node — structural only. See [placeholder-tasks.md](placeholder-tasks.md) for the full pattern and upgrade path.
360
-
361
- ### 4.7 Configure conditions
362
-
363
- One task per condition. Order within §4.7: stage entry → stage exit → case exit → task entry.
364
-
365
- Title format: `Add <scope> condition for "<target>"`
366
-
367
- For per-scope fields, consult the corresponding condition plugin:
368
- - `plugins/conditions/stage-entry-conditions/planning.md`
369
- - `plugins/conditions/stage-exit-conditions/planning.md`
370
- - `plugins/conditions/task-entry-conditions/planning.md`
371
- - `plugins/conditions/case-exit-conditions/planning.md`
372
-
373
- Every condition T-entry includes `rationale:` copied from the SDD choice it implements. For global events, state why one interrupting secondary-stage entry replaces per-primary-stage exits/tasks.
374
-
375
- ### 4.8 Set SLA and escalation rules
376
-
377
- SLA comes last. Consult [`plugins/sla/planning.md`](plugins/sla/planning.md) for the three sub-operations (default SLA, conditional SLA rules, escalation rules) and per-target ordering. Root rules target `metadata.slaRules[]`; stage rules target that stage's `data.slaRules[]`. Every SLA/escalation T-entry includes `rationale:` copied from the SDD's case/stage SLA rationale.
378
-
379
- ### 4.9 Not Covered section
380
-
381
- Add a brief section at the end of `tasks.md` listing things referenced in sdd.md but outside the scope of `caseplan.json` (e.g., Data Fabric entity schemas). These stay as notes for the user.
382
-
383
- ---
384
-
385
- ## Step 5 — Finalize tasks.md (auto-proceed to Phase 2)
386
-
387
- Treat the generated `tasks.md` as approved and proceed directly to Phase 2 by default — no AskUserQuestion approval prompt, no wait for sign-off.
388
-
389
- **Stop-after-plan exception (the virtual gate).** When the request explicitly scoped the work to planning only (e.g. "just build tasks.md", "Phase 1 only", "stop after the plan for review", "don't build the case yet"), stop here: report the finished plan and do NOT create a solution or caseplan. This is the only condition that halts the auto-proceed.
174
+ > Confirm these values match the `selected` object in the same entry before leaving Step 4.
390
175
 
391
- Re-read `tasks.md` before proceeding to Phase 2 (see [implementation.md](implementation.md)); context may have compacted during planning. `tasks.md` is complete handoff artifact — all resolved IDs, inputs, outputs, and references captured there.
176
+ ## Step 5 — Hand off to Phase 2 (auto-proceed)
392
177
 
393
- **Plan-shape gate.** Before Phase 2, re-read every §4.6 task T-entry itself (not the §4.7 condition entries) and confirm it literally contains its own `- activation-mode:` line and its own `- entry-rule:` line — **exactly one of each, colocated on the task's own T-entry** — and that the pair is legal for that mode. Re-run the §4.6 Activation-mode audit over the finished plan, covering all six modes, not just `sequential`.
178
+ Phase 1 is complete when every resource row in the SDD has an entry in `registry-resolved.json` — resolved, marked `<UNRESOLVED: …>`, or created inline at the Rule 17 gate. Report the counts (resolved / created inline / unresolved) and proceed directly to Phase 2 — no AskUserQuestion approval prompt, no wait for sign-off.
394
179
 
395
- **Known failure pattern:** deferring the rule to a *separate* §4.7 task-entry-condition entry (`rule-type:`) does not satisfy this gate — `caseplan.json` can end up fully correct while `tasks.md` itself still fails this check, because §4.6 and §4.7 are graded as separate artifacts. See [task-entry-conditions/planning.md § Phase 1 Plan Presentation Contract](plugins/conditions/task-entry-conditions/planning.md#phase-1-plan-presentation-contract) for the compliant §4.6 shape.
180
+ **Stop-before-build exception.** When the request explicitly scoped the work to design or resolution only (e.g. "just the SDD", "resolve the resources but don't build", "don't build the case yet"), stop here: report the SDD and the ledger, and do NOT create a solution or caseplan. This is the only condition that halts the auto-proceed.
396
181
 
397
- Correct the plan before building; validation of `caseplan.json` cannot detect a malformed Phase 1 handoff.
182
+ Phase 2 reads `sdd.md` for the design and `registry-resolved.json` for identities. Both are on disk; re-read them at Phase 2 entry (context may have compacted during resolution) — see [implementation.md](implementation.md).
398
183
 
399
184
  <!-- END: planning.md -->
@@ -4,7 +4,7 @@ Cross-cutting direct-JSON rules live in [`case-editing-operations.md`](../../cas
4
4
 
5
5
  ## Purpose
6
6
 
7
- Create the full project on disk in a single plugin invocation — 5 scaffold files + `caseplan.json`. Runs exactly once per project as T01 in every `tasks.md`. Two sections:
7
+ Create the full project on disk in a single plugin invocation — 5 scaffold files + `caseplan.json`. Runs exactly once per project, as the first build step. Two sections:
8
8
 
9
9
  1. **§ Scaffold** — write the 5 boilerplate files (`project.uiproj`, `operate.json`, `entry-points.json`, `bindings_v2.json`, `package-descriptor.json`) directly.
10
10
  2. **§ Write caseplan.json** — write the root case skeleton (`root` + empty `nodes: []` + empty `edges: []`).
@@ -13,7 +13,7 @@ Solution setup (`uip solution init`) and project registration (`uip solution pro
13
13
 
14
14
  **No trigger emitted at T01.** The primary trigger is created by the triggers plugin at T02 via direct JSON write.
15
15
 
16
- ## Input spec (from `tasks.md`)
16
+ ## Input spec (from `sdd.md`)
17
17
 
18
18
  | Field | Required | Notes |
19
19
  |---|---|---|
@@ -137,7 +137,7 @@ If any check fails, halt and report.
137
137
  ## § Write caseplan.json — Pre-write checks
138
138
 
139
139
  1. **Scaffold has run.** The 5 files listed in § Scaffold must exist in `<SolutionDir>/<ProjectName>/`. They were written earlier in this same plugin invocation; if missing, halt (bug — re-run the plugin from the start).
140
- 2. **Collision behavior: overwrite.** If `caseplan.json` already exists, overwrite it. When absent, create it. Skill Phase 2 re-runs regenerate `tasks.md` from scratch per SKILL.md Rule 6, so a collision here means a genuine re-run and overwriting is correct.
140
+ 2. **Collision behavior: overwrite.** If `caseplan.json` already exists, overwrite it. When absent, create it. Skill Phase 2 re-runs regenerate `caseplan.json` from scratch per SKILL.md Rule 6, so a collision here means a genuine re-run and overwriting is correct.
141
141
 
142
142
  ## ID generation
143
143
 
@@ -4,7 +4,7 @@ The root case definition — the top-level container that every other node lives
4
4
 
5
5
  ## When to Use
6
6
 
7
- Always. This plugin is invoked for the very first T-entry (`T01`) in every `tasks.md`. It creates the case file and the implicit Trigger node.
7
+ Always. This plugin is invoked for the very first build step (`T01`). It creates the case file and the implicit Trigger node.
8
8
 
9
9
  ## Required Fields from sdd.md
10
10
 
@@ -29,10 +29,10 @@ When ambiguous, use **AskUserQuestion** with both options + "Something else".
29
29
 
30
30
  `case-identifier` is carried verbatim from sdd.md — one of two forms (no other engine):
31
31
 
32
- - **Bare var** — `=vars.<varId>`, where `<varId>` is a single variable declared in the §4.2.1 block. It MUST be an **In** argument or a **Variable** — not an **Out** argument (produced at case end).
32
+ - **Bare var** — `=vars.<varId>`, where `<varId>` is a single variable declared in the SDD's Case Variables table. It MUST be an **In** argument or a **Variable** — not an **Out** argument (produced at case end).
33
33
  - **`=js:` expression** — for string ops / concatenation, e.g. `` =js:`${metadata.InstanceId}-${vars.region}` ``. May read `vars.<id>` and `metadata.InstanceId` / `metadata.FolderKey` / `metadata.ProcessKey` — never `metadata.ExternalId` (the field being set).
34
34
 
35
- A referenced variable must have its own §4.2.1 T-entry (the completeness cross-check requires it).
35
+ A referenced variable must have its own Case Variables row (the completeness cross-check requires it).
36
36
 
37
37
  ## Registry Resolution
38
38
 
@@ -42,10 +42,12 @@ A referenced variable must have its own §4.2.1 T-entry (the completeness cross-
42
42
 
43
43
  The case plugin writes a pure skeleton at T01 — no trigger node. The primary trigger is added by the triggers plugin at T02 via the matching [triggers plugin](../triggers/). Every case (single-trigger or multi-trigger) has at least one T02 entry for the primary trigger.
44
44
 
45
- ## tasks.md Entry Format
45
+ ## Fields to Resolve
46
46
 
47
- ```markdown
48
- ## T01: Create case file "<name>"
47
+ The case file has no registry lookup, so T01 produces **no `tasks/registry-resolved.json` entry**. These are reasoning fields only — Phase 2 reads them from `sdd.md` ([planning.md § Step 4](../../planning.md)).
48
+
49
+ ```text
50
+ case file "<name>"
49
51
  - file: "<SolutionDir>/<ProjectName>/caseplan.json"
50
52
  - case-identifier: "<identifier>"
51
53
  - identifier-type: constant
@@ -30,8 +30,8 @@ Rules use DNF — outer array is OR, inner array is AND.
30
30
  1. Generate condition ID: `Condition_` + 6 alphanumeric chars
31
31
  2. Generate rule ID: `Rule_` + 6 alphanumeric chars
32
32
  3. Read `caseplan.json`. Locate top-level `metadata` object (initialize `metadata: {}` if missing — should already exist from T01). Initialize `metadata.caseExitRules = []` if absent.
33
- 4. Read `rule-type` and `marks-case-complete` from tasks.md; pick the recipe below
34
- 5. Set `displayName`: use tasks.md `display-name` if present; else default by `marks-case-complete`: `true` → `Complete Rule {N}`, `false` → `Exit Rule {N}`. `N` = 1-based index **within the same label kind** — at append time, count existing entries in `metadata.caseExitRules[]` whose `marksCaseComplete` equals this condition's value, then `N = count + 1`. FE numbers complete and exit rules with independent counters — do NOT use the array's overall length. Never emit a blank or omitted `displayName`.
33
+ 4. Read the rule type and marks-case-complete flag from the SDD's Case Exit Conditions row; pick the recipe below
34
+ 5. Set `displayName`: use the SDD row's `Display Name` if present; else default by `marks-case-complete`: `true` → `Complete Rule {N}`, `false` → `Exit Rule {N}`. FE keeps the two kinds on independent counters, but each counts **case-wide**, not within `metadata.caseExitRules[]` alone: scan the whole `caseplan.json` for that kind's pattern across `metadata.caseExitRules[]` and every stage's `data.exitConditions[]`, then `N` = highest + 1 (`1` when none). Case-exit rules share the pool with stage exits; `validate` reports a collision here as `[nodes[root]]` — [case-schema.md § Condition name uniqueness](../../../case-schema.md#condition-name-uniqueness). Never emit a blank or omitted `displayName`.
35
35
  6. Append the condition object to `metadata.caseExitRules[]`
36
36
 
37
37
  ## Rule Types
@@ -78,7 +78,7 @@ In Phase 2, always write the canonical stub from [connector-trigger-impl.md § C
78
78
 
79
79
  ## Post-Write Verification
80
80
 
81
- Confirm `metadata.caseExitRules[]` contains the new object with `id`, non-empty `displayName` (SDD value or `Complete Rule {N}` / `Exit Rule {N}` default keyed to `marksCaseComplete`), `marksCaseComplete` matching the T-entry, and `rules` carrying the expected `rule` value plus any required side field. Verify no `root` key exists at the top level.
81
+ Confirm `metadata.caseExitRules[]` contains the new object with `id`, non-empty `displayName` (SDD value or `Complete Rule {N}` / `Exit Rule {N}` default keyed to `marksCaseComplete`), `marksCaseComplete` matching the SDD row, and `rules` carrying the expected `rule` value plus any required side field. Verify no `root` key exists at the top level.
82
82
 
83
83
  For `wait-for-connector`, Phase 2 verification expects the exact two-entry placeholder context plus empty inputs/outputs/bindings. After Phase 3, a resolved rule must have no `"placeholder"` values, inputs/outputs must use `root-<ruleId>`, and ConnectionId + FolderKey root bindings must exist; a remaining stub must map to a reported unresolved connector.
84
84