Skip to content

feat(maestro-case): add RPA process leg to create-on-missing#1803

Draft
song-zhao-25 wants to merge 2 commits into
mainfrom
feat/case-create-missing-rpa
Draft

feat(maestro-case): add RPA process leg to create-on-missing#1803
song-zhao-25 wants to merge 2 commits into
mainfrom
feat/case-create-missing-rpa

Conversation

@song-zhao-25

Copy link
Copy Markdown
Contributor

What

Widens the Rule 17 gate's creatable set from {agent} to {agent, rpa}: a case task typed rpa whose registry lookup is empty can now be built inline as an in-solution sibling (delegated to uipath-rpa), registered, rediscovered via --local, and bound — instead of falling to a placeholder.

  • ~25 gate/enumeration sites widened across SKILL.md, registry-discovery.md, planning.md, placeholder-tasks.md, phased-execution.md, phase-0-interview.md, implementation.md, case-commands.md. Gate label is now Create the missing resource(s) inline.
  • New rpa/planning.md sections: pre-gate in-solution sibling check (--type process --local — the registry has no rpa type) and Creating an RPA process inline (pinned I/O + case↔.NET type map, no kind prompt — v1 always XAML/VB, deterministic uip rpa init scaffold brief, no-resourceSubType binding, project.json entryPoints read-back, failure/adopt contract). Matching Built-inline note in rpa/impl-json.md.
  • Shared bindings layer (bindings-v2-sync.md, variables/bindings/impl-json.md) generalized: decoupled folderPath:"" vs resourceKey="solution_folder.<name>" now covers agent / RPA; rpa omits resourceSubType/metadata.subType.
  • Incident 170007 bridged into the debug path (Phase-5 Debug notes, Step-13a short-circuit, troubleshooting-guide): an inline RPA sibling faulting under case debug is by design — debug does not provision non-agent siblings; do not "fix" the runtime-correct folderPath:"".

Runtime verification (alpha, 2026-07-01)

Full path proven live twice with a scratch case + RpaClassify sibling: solution pack → publish → deploy run provisions the sibling as a runnable process; the case's stage-entry rule starts the job (serverless, 4s, Successful); an assigned output round-trips into case vars (TaskCompletedOutputs). Engine composes PascalCase JobArguments from camelCase XAML args — matching is case-insensitive both directions. case debug on the same case reproduces 170007 ("process could not be found"), confirming the debug-path-only limitation the docs now describe.

Review

Second commit addresses an 11-finding skill review (170007 debug bridge, bindings-layer generalization, match-priority ladder in rpa Registry Resolution, cross-kind name-collision guard, placeholder-upgrade contradiction, bounded retry, type map in the builder brief).

Merge coordination

Independent of #1723 (agentic stays non-creatable here). Sibling branch feat/case-create-missing-api-workflow touches the same enumeration lines; shared-doc hunks (agent/planning.md, gate §1 rename rule) are byte-identical across both branches so the second-to-merge unions cleanly.

🤖 Generated with Claude Code

song-zhao-25 and others added 2 commits July 1, 2026 15:00
Widen the Rule 17 gate's creatable set from {agent} to {agent, rpa}.
The RPA leg delegates a deterministic scaffold to uipath-rpa (uip rpa
init, always XAML/VB — no kind prompt): registry/local token is
process (not rpa), the I/O contract lives in project.json entryPoints
(.NET FQNs; case-vocab map added), the binding omits resourceSubType
entirely, and folderPath stays "" with the solution_folder sentinel
only in resourceKey.

Runtime-verified 2026-07-01 on alpha via full solution pack/publish/
deploy run: the sibling provisions as a runnable process, the case
invokes it, and outputs round-trip into case vars (argument-name
matching is case-insensitive). uip maestro case debug does NOT
provision non-agent siblings — incident 170007 is documented as a
debug-path limitation, with a scaffold caveat that outputs must be
assigned defaults (an empty Sequence returns null).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Review of cdad5a1 confirmed 11 findings; all fixed:

- Bridge incident 170007 into the debug path: Phase-5 Debug notes
  bullet, Step-13a by-design short-circuit (do not "fix" the
  runtime-correct folderPath:""), and a troubleshooting-guide Step-2
  known-incident entry distinguishing inline-sibling (expected) from
  tenant-resolved (real) occurrences.
- Generalize the shared bindings layer the first pass missed:
  bindings-v2-sync.md both decoupling callouts and the canonical
  bindings/impl-json.md blockquote now cover agent / RPA process and
  state that rpa omits resourceSubType / metadata.subType.
- Close the two ways Create could fire wrongly: port the match-priority
  ladder into rpa Registry Resolution (folder mismatch resolves, never
  Creates), and add the cross-kind name-collision guard at gate §1 plus
  kind-checks in both legs' already-exists recovery (shared
  solution_folder.<name> namespace).
- Placeholder upgrade §3/§4 no longer order tenant tasks describe for
  local-only sibling EntityKeys; schema source qualified in the table.
- Bound the retry loop ("2nd consecutive failed Retry create")
  consistently at connector/agent/rpa failure contracts; add the
  case→.NET type map into the builder brief (brief-only sub-agent);
  built-inline caseplan I/O types pinned to case vocabulary; ambiguity
  tiebreaker surfaces at the gate instead of silently foreclosing
  Create; already-exists recovery restores the if-not-already-registered
  hedge; Step-3/4 execution order annotated; Step 4 deduplicated to
  deltas + pointer; non-creatable enumerations marked non-exhaustive.

Shared-doc wording mirrors the api-workflow branch byte-identically
where both legs touch the same lines (agent/planning.md, gate §1) so
the second-to-merge unions cleanly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
song-zhao-25 added a commit that referenced this pull request Jul 2, 2026
…adopt contract; fix two live-run gaps

Surfaced by the api-workflow L4 suite (T2b, on-disk-unregistered residual) and
verified live on CLI 1.198; both gaps also affect the merged agent leg:
1. registry list --local enumerates only .uipx-registered projects — an
   unregistered on-disk residual is invisible to it, so the adopt path's
   kind-check is now two-step (registered name -> list --local Category;
   unregistered dir -> on-disk project.uiproj ProjectType).
2. uip solution project add refuses 'Project name already exists' even when the
   name is absent from .uipx Projects[] — the collision check keys on stale
   resource declaration files left by a prior registration. Remediation: delete
   resources/solution_folder/package/<Name>.json + the kind's
   process/<category>/<Name>.json, re-run project add (verified: 'Added
   successfully'), then resources refresh regenerates them.

The corrected contract now lives ONCE, kind-agnostically, in
registry-discovery.md § Create-on-Missing 3b; agent/planning.md's residual
blockquote shrinks to a pointer + agent-specific tokens. Open create-on-missing
legs (#1802 api-workflow, #1803 rpa, #1723 agentic) inherit on their next
rebase and should slim their per-type blockquotes to the same pointer shape.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
song-zhao-25 added a commit that referenced this pull request Jul 2, 2026
…adopt contract; fix two live-run gaps

Surfaced by the api-workflow L4 suite (T2b, on-disk-unregistered residual) and
verified live on CLI 1.198; both gaps also affect the merged agent leg:
1. registry list --local enumerates only .uipx-registered projects — an
   unregistered on-disk residual is invisible to it, so the adopt path's
   kind-check is now two-step (registered name -> list --local Category;
   unregistered dir -> on-disk project.uiproj ProjectType).
2. uip solution project add refuses 'Project name already exists' even when the
   name is absent from .uipx Projects[] — the collision check keys on stale
   resource declaration files left by a prior registration. Remediation: delete
   resources/solution_folder/package/<Name>.json + the kind's
   process/<category>/<Name>.json, re-run project add (verified: 'Added
   successfully'), then resources refresh regenerates them.

The corrected contract now lives ONCE, kind-agnostically, in
registry-discovery.md § Create-on-Missing 3b; agent/planning.md's residual
blockquote shrinks to a pointer + agent-specific tokens. Open create-on-missing
legs (#1802 api-workflow, #1803 rpa, #1723 agentic) inherit on their next
rebase and should slim their per-type blockquotes to the same pointer shape.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant