Skip to content

feat(uipath-planner): need-driven selection, production SDD contracts, lane hardening#2087

Merged
RaduAna-Maria merged 6 commits into
mainfrom
feat/uipath-planner-need-driven-sdd
Jul 20, 2026
Merged

feat(uipath-planner): need-driven selection, production SDD contracts, lane hardening#2087
RaduAna-Maria merged 6 commits into
mainfrom
feat/uipath-planner-need-driven-sdd

Conversation

@roalexandru

@roalexandru roalexandru commented Jul 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

Hardens uipath-planner into a need-driven solution designer across seven review rounds. The planner now recommends architecture from the synthesized need — never keywords, never authoring surfaces — and its handoff contracts survive interruption, drift, and open questions.

Tool selection

  • Level 0 Suitability Gate (automate / redesign / reuse / don't) with an estate sweep: verified uip listing verbs per estate type (--all-folders, drift fallback: discover via --help or Orchestrator API — never invent a verb)
  • Absorption fold: mixed capabilities inside one host (RPA + IXP + LLM activity + sync API) never force Maestro; light-vs-real orchestration tie-breaker — RPA does light orchestration itself (agent calls, child processes, queues)
  • Extraction test (placement rule 6): host-native logic first; a separate Function / API Workflow / connector requires host-incapability, 2+ consumers, or independent lifecycle
  • Resource locality: machine-local work (Excel/Office, file shares, on-prem DB, terminals/mainframe — exclusive to RPA) → robot runtime regardless of API existence; Automation Relay offered as a confirm-with-user option for on-prem HTTP(S) APIs
  • Coded Functions: TypeScript (default) / JavaScript / Python; run serverless or robot-hosted (roadmap — reach on-prem endpoints); the RPA alternative for headless pure-code steps (rule 6 inverse guard); survive the full pipeline: placement → Level 1.75 derived components → host-template ### Coded Functions contract → Lane A tasks

Contracts

  • Handoff: Status: draft→ready, solution-root block, one canonical tasks file, deterministic Lane A root algorithm
  • SME readiness: unresolved items classified default-carried (travel into tasks as assumptions) vs blocking (closed 4-item list keeps draft) — no deadlock, no dishonest ready
  • Do-not-automate findings note contract (terminal, no handoff marker); cloud entitlement gating fixed (no "lookup optional" shortcut)
  • Authoring-surface purge: Studio / Studio Web / VS Code are presentation layers — delivery model is the only environment constraint
  • Frontmatter: compact single-project non-trigger redirect added (desc 761 / combined 1532 of 1536 cap)

Tests

  • New evals: need_driven_selection (determinism gate), maestro_engine_disambiguation, single_project_queue; e2e_rpa_sdd checker extended (Project Mode Decision, Need profile, Status: ready); Lane B evals strengthened
  • .ps1 twins added for the docx conversion scripts

Validation

  • hooks/validate-skill-descriptions.sh passes; eval YAMLs validated against the installed coder_eval schema (TaskDefinition.model_validate)
  • All documented CLI verbs parse-checked against installed uip 1.196.4 (ixp group flagged newer-CLI-only inline)

Pending

  • coder-eval runs for the touched/added planner tasks (needs sandbox/tenant; passing-run claims to be attached before merge)
  • Frontmatter change triggers the activation-gate recall eval

🤖 Generated with Claude Code

…s, best-practice templates

Harden uipath-planner as a need-driven SDD creator.

- Recommend the to-be from a synthesized multi-factor need profile
  (decision nature/determinism, input structure, API-first, volume/cost,
  risk/reversibility -> HITL, auditability, coordination shape,
  change/volatility) instead of keyword matching; add the canonical
  per-task -> component placement model.
- Add Maestro BPMN as a first-class, conditional primary scope: new
  bpmn-sdd-template.md, Level 1 row + signals + Flow/Case/BPMN
  disambiguation, Level 1.75 Pass A/A.5, Lane A routing, platform
  availability split, capability-map row. Never a default.
- Integration Service: reuse-before-build custom connectors
  (uip is connectors list); route new connectors to
  uipath-connector-builder; add uipath-connector-builder and uipath-ixp
  to the task-skill enum and capability map. RPA may call APIs directly.
- Reusability and shared assets (RPA Libraries, custom connectors,
  reusable components) as a first-class design concern; leaf resources
  built before consumers.
- Best-practice conformance across all 7 SDD templates: Source PDD link,
  Assumptions, DEV/UAT/PROD environments, IS Connections + access method,
  Solution/Project breakdown (repo, attended/unattended), Reusable
  Components, Non-Functional Requirements. Automation-type-agnostic:
  per-type sections only for in-scope types, no N/A filler.
- Validate deployment type (Automation Cloud / Automation Suite + version /
  standalone) from uip login status; ask when a custom host is ambiguous.
- Accept non-PDD process-knowledge sources (Confluence page, BPMN model,
  transcript, SOP, requirements) or a bare prompt with clarifying
  questions; PDD stays the preferred input. Always extract AS-IS and TO-BE.
- Support PDD formats md/txt/pdf/docx; add cross-platform PowerShell twins
  (docx-extract.ps1, sdd-to-docx.ps1) alongside the .sh scripts.

Frontmatter kept close to main (light touch).
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

…, lane hardening

- Level 0 suitability gate + estate sweep (verified uip verbs, discover-don't-invent drift fallback)
- absorption fold + light-vs-real orchestration: mixed capabilities in one host never force Maestro
- extraction test (placement rule 6): host-native first for Functions / API Workflows / connectors
- resource locality: machine-local work (Excel, files, on-prem DB, terminals) → RPA; Automation Relay as confirmed option for on-prem HTTP APIs
- Functions survive the full pipeline: placement → Level 1.75 derived components → host-template contract → Lane A tasks
- SME readiness: default-carried vs blocking items; Status ready = structurally derivable, assumptions travel into tasks
- authoring-surface purge: delivery model is the only environment constraint
- solution-root + draft/ready handoff contract; deterministic Lane A root algorithm
- cloud entitlement gating fixed (no lookup-optional shortcut); single-project non-trigger in frontmatter
- new evals: need_driven_selection, maestro_engine_disambiguation, single_project_queue; docx conversion script twins
@roalexandru roalexandru changed the title feat(uipath-planner): need-driven SDD design, Maestro BPMN, connectors, best-practice templates feat(uipath-planner): need-driven selection, production SDD contracts, lane hardening Jul 17, 2026
…e, and the RPA alternative for pure code

- language: TypeScript (default) / JavaScript / Python across SKILL.md row, placement table, Step 4 bullet, and the 4 host templates
- runtime: serverless or robot-hosted (roadmap) — robot-hosted Functions run inside the environment and reach on-prem endpoints; desktop apps / interactive UI stay RPA
- rule 6 inverse guard + Level 1 bullet: headless deterministic compute prefers a Function over minting an RPA process
…ct redirect, add explicit ambiguous->here signal

Gate failed at recall.yes 82.4% (<85%): the absolute 'Single-project request,
no PDD/SDD->that product's skill' redirect suppressed ambiguous design-intent
prompts. Now scoped to known-product builds, with a positive redirect for
'what should I build' asks; paid for by trimming redundant when_to_use
variants. Combined frontmatter 1530/1536.
Comment thread skills/uipath-planner/references/non-pdd-lane-guide.md Outdated
Comment thread skills/uipath-planner/references/non-pdd-lane-guide.md Outdated
Comment thread skills/uipath-planner/references/package-selection-guide.md
Comment thread skills/uipath-planner/references/plan-and-tasks-format.md Outdated
1. <component skill> → scaffold any unbuilt component
2. <component skill> → testing for the component (mandatory)
3. uipath-solution → deploy the component to Orchestrator via `uip solution` (RPA always needs uipath-solution; agents / coded-apps self-deploy)
4. uipath-maestro-flow → design and wire the flow against the published components, validate, finalize per `Solution scope`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why was Solution scope removed? It was added in this PR by someone form the agents team, either leave it as is or check with them if the approach has changed since then

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Intentional removal. A runtime contract should not be relevant at solution/design time — where the flow is authored and published is the build skill's own workflow, not a plan decision. Asking the user "SW or local solution" passes our technical implementation detail to users as a design question, which is a bad pattern anyway. Also worth noting the field had no actual consumer: uipath-maestro-flow never references Solution scope anywhere (neither on main nor on this branch), so nothing read it at runtime. If the agents team still wants a publish-target contract, it should live inside the specialist's workflow rather than the plan header — happy to loop in @radugheo to confirm.

…reenfield clarifier, pin-at-build cross-ref, terse plan-path rule
@RaduAna-Maria
RaduAna-Maria merged commit 261449f into main Jul 20, 2026
32 checks passed
@RaduAna-Maria
RaduAna-Maria deleted the feat/uipath-planner-need-driven-sdd branch July 20, 2026 15:45
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.

2 participants