Repository navigation
test(uipath-maestro-flow): move the inline-agent flow tasks from uipath-agents and grade outcomes - #3752
Conversation
…th-agents and grade outcomes
The 16 tasks under tests/tasks/uipath-agents/lowcode/inline_* are Flow
authoring prompts ("Create a UiPath Flow project ..."); every run loads the
uipath-maestro-flow skill first. They now live in
tests/tasks/uipath-maestro-flow/inline_agent/ and carry the uipath-maestro-flow
skill tag. task_ids are unchanged so dashboard history carries over.
Gates:
- Removed the gating command checks on the v1 hand-authoring recipe
(`uip agent init/refresh/validate --inline-in-flow`,
`uip maestro flow registry search/get`). The builder-SDK route compiles the
same sidecar and never runs them.
- Tenant-discovery checks (`uip solution resources list/get/refresh`, `uip is`)
become advisory, per the suite's same-ground contract.
- Added `uip maestro flow validate` on the named flow file to every task.
validate_flow.py now accepts explicit paths, so brownfield fixtures with a
second Flow project are not ambiguous.
- Prompts use the suite's canonical headless preamble.
Checkers: the inline-agent contract checkers and inline_wiring.py moved to
inline_agent/_shared/, with CODEOWNERS listing the agents team on the folder.
They stay strict, with one evidence-backed exception: a live flow debug A/B
(flow-builder-sdk#922, issuecomment-6000881513) showed the builder-SDK tool
shape (location "solution", folderPath "") runs a tenant-folder tool like the
v1 shape. The external rpa/api/maestro checkers therefore assert the folder
via the flow's top-level bindings[]. The solution rpa/api/maestro checkers
accept folderPath "" or "solution_folder". A missing resource.json still fails.
🤖 Generated with Claude Code
Co-Authored-By: [Claude](mailto:noreply@anthropic.com)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
|
Claude finished @tmatup's task in 4m 10s —— View job PR Review: test(uipath-maestro-flow) — move inline-agent flow tasks
SummaryMoves 16 inline-agent-in-a-flow test tasks from Change-by-Change Review1. YAML comment swallows next list entry — 6 occurrences across 5 task filesSeverity: Critical In several greenfield task YAMLs, a trailing Affected files and lines:
The last one is the most impactful — the Since all affected criteria have Fix: Add a newline before each swallowed pass_threshold: 0.0 # advisory: discovery route is not graded; the contract checker grades the resource it produced
- type: command_executed2. CODEOWNERS additionSeverity: OK New entry at line 166 covers 3.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | N/A | These are task YAMLs, not skill SKILL.md files |
| E2E Tests | Issue | 6 YAML entries swallowed by trailing comments (Critical §1) |
| Skill Body | N/A | No skill body changes |
| References & Assets | OK | Checker scripts and fixtures correctly relocated |
| Repo Hygiene | OK | CODEOWNERS updated, stale path refs fixed, no secrets |
Issues for Manual Review
- Evalboard run validation: The PR description links a coder-eval run (actions/runs/37358911886) whose results should be posted as a comment. Verify that the moved tasks produce results consistent with expectations before merge.
path-to-gatag oninline_mcp_server_tool: The PR description notes this needs an allowlisted reviewer approval.- Brownfield fixture coverage: The
inline_solution_maestro_toolfixture (OnboardingFlowSol) includes a second project (EmployeeOnboarding) that is a BPMN project. The newvalidate_flow.pyexplicit-paths mode addresses the ambiguity, but verify manually that the checker finds the correct (newly created) flow, not the fixture's.
Conclusion
The migration rationale is well-justified, the outcome-based grading shift is the right direction, and the checker relaxations are backed by live evidence. Request changes for the Critical YAML comment-swallows-entry bug in 6 places across 5 files — this needs the missing newlines before each - type: that currently sits inside a # comment. Once fixed, the PR looks ready to merge.
|
|
Claude finished @tmatup's task in 3m 55s —— View job Coder-eval task lint (advisory)17 task YAMLs changed (1 modified, 16 renamed with modifications); verdict counts: 0 Critical, 0 High, 14 Medium, 1 Low, 2 OK. Rubric: .claude/commands/lint-task.md. This check is advisory and never blocks merge. Evidence of passing run✅ Author confirms passing run: "coder-eval run of all 16 moved tasks on this branch (agent Per-task lint
|
| Task |
|---|
inline_agent/inline_builtin_tool/inline_builtin_tool.yaml |
inline_agent/inline_context_index/inline_context_index.yaml |
inline_agent/inline_external_agent_tool/inline_external_agent_tool.yaml |
inline_agent/inline_external_apiworkflow_tool/inline_external_apiworkflow_tool.yaml |
inline_agent/inline_external_escalation/inline_external_escalation.yaml |
inline_agent/inline_external_maestro_tool/inline_external_maestro_tool.yaml |
inline_agent/inline_external_rpa_tool/inline_external_rpa_tool.yaml |
inline_agent/inline_in_flow/inline_in_flow.yaml |
inline_agent/inline_memory_space/inline_memory_space.yaml |
inline_agent/inline_solution_agent_tool/inline_solution_agent_tool.yaml |
inline_agent/inline_solution_apiworkflow_tool/inline_solution_apiworkflow_tool.yaml |
inline_agent/inline_solution_escalation/inline_solution_escalation.yaml |
inline_agent/inline_solution_maestro_tool/inline_solution_maestro_tool.yaml |
inline_agent/inline_solution_rpa_tool/inline_solution_rpa_tool.yaml |
All paths relative to tests/tasks/uipath-maestro-flow/.
Within-PR duplicates
No duplicate clusters detected. All 16 renamed tasks exercise materially distinct inline-agent resource types (builtin tool, context index, RPA/API/Maestro/agent tools in external vs solution locations, escalation, IS connector, MCP server, memory space). The shared YAML scaffold is good template reuse per rubric — each has its own contract checker targeting a different resource.json shape and flow-node type.
Themes
Theme 1 — Validate-only flow tests miss correctness (High). 15 of 16 inline-agent tasks are e2e tier with no command_executed matching flow\s+debug. The validate_flow.py gate (uip maestro flow validate) checks JSON schema validity only — a wrong flow that happens to be schema-valid would pass. The contract checkers (check_inline_*.py) verify resource.json shape and flow-node wiring, which is strong design-time coverage, but no criterion exercises the flow at runtime.
This is a known, deliberate trade-off documented in the PR body: the SDK route's runtime coverage depends on flow-builder-sdk fixes (#920, #921, #922) that haven't landed yet. Adding flow debug criteria now would make all 15 tasks fail with no actionable fix. Consider adding flow debug criteria (even as advisory pass_threshold: 0) once the SDK gaps close, or adding a rationale line to each task's description field (like inline_is_connector_tool already has) to formalize the carve-out.
Suggested fix (when ready): Add to each task:
- type: command_executed
description: "Advisory: agent ran flow debug to verify runtime behavior"
tool_name: "Bash"
command_pattern: 'uip\s+maestro\s+flow\s+debug'
min_count: 1
weight: 2.0
pass_threshold: 0.0 # advisory until SDK gaps closeNotes
- CLI verb reachability axis was skipped —
python3 scripts/check-cli-verbs.pyrequires sandbox approval not available in this run. - Near-duplicate analysis: no issues. Each external/solution pair (e.g.
external_rpa_toolvssolution_rpa_tool) exercises a different code path (greenfield vs brownfield), different fixtures, and different checker assertions (location: "external"vslocation: "solution", presence of brownfieldcommand_not_executedguards).
Conclusion
⚠ 15 task(s) have issues, max severity High (theme-level). All per-task verdicts are Medium or lower after theme-aware downgrade. The single theme (validate-only e2e) is a known, documented product-gap trade-off — not actionable until flow-builder-sdk fixes land. Advisory only — not blocking merge.
…joined onto comment lines Making the discovery gates advisory replaced `pass_threshold: 1.0` with a commented `0.0` line, and the `\s*$` in that rewrite consumed the newline before the next `- type:`. Six criteria ended up inside YAML comments: `resources get` in the external rpa/api/maestro/agent tasks, and `solution init` plus the gating flow `file_exists` in is-connector. Every criterion from the original task, minus the intended removals, is back. 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
|
Review triage (Claude Code Review + task lint):
|
|
coder-eval results on this branch (agent Run 37358911886 (head 80d5344) and run 37362751055 (head f8d58f3, re-ran the two tasks the comment bug touched):
The two agent-tool rows are the same shape question as #922. #922's live A/B covered |
…orkflow Action app `inline_external_escalation` bound its escalation to "FraudEscalation", a JS Action app. A JS Action app cannot back an agent escalation: `uip solution resources refresh` reports it "not found in Orchestrator", and the agents skill says only Workflow Action apps can. So the task could only ever grade files that would never run. Switch to "ExpenseReviewApp" (Workflow Action, Shared/uipath-agents/ ExpenseReviewSol). It backed a live escalation in UiPath/builder-sdk#925: `flow debug` suspended and an Action Center AppTask was created. The scenario moves to expense-claim triage so the prompt matches the app (input Content, in/out Comment, outcomes approve/reject). Project and solution become ExpenseFlow / ExpenseFlowSol; the checker's expected appName and folderName follow. 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
|
@andreibalas-uipath: a5fcc80 swaps |
… binding, not the refresh output The checker required `resources/solution_folder/connection/*.json`, which only `uip solution resources refresh` writes. The task forbids upload, so the SDK-path agent correctly skipped refresh and failed. Measured on alpha (2026-10-05, CLI 1.204.0-preview.206) with a copy of the eval agent's project and no connection folder: `flow debug` completed and the web-search tool ran (debug runs its own resource refresh first); `uip solution pack` emitted the connection file, byte-identical to a manual refresh. So the file is an upload-side artifact, not an authoring requirement. The checker now requires a `bindings_v2.json` connection binding whose `metadata.Connector` matches the tool node's connector key and whose `ConnectionId` is non-empty, which is what pack and debug read. Verified: the eval agent's output passes; removing the binding or blanking the ConnectionId fails. 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
… location/folderPath A live flow debug A/B for kind: 'agent' tools (flow-builder-sdk#922, issuecomment-6001964622) matches the earlier process-tool result: - External EmailDrafter tool: location "solution" + folderPath "" (SDK) and location "external" + literal folder (v1) both invoke the tenant agent (AgentService jobs Successful, traced to each arm's debug job). A no-resources control faults with no tool defined. - Solution ToolAgent tool: "" and "solution_folder" derive byte-identical bindings_v2.json, refreshed .flow and solution resources/. So the two agent-tool checkers get the same relaxation as the process ones: either location; external folder witnessed via the flow's top-level bindings[]; solution folderPath "" or "solution_folder". Wrong binding, wrong literal folder, bad location and a wrong solution folderPath still fail. 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
…axed checkers The two agent-tool checkers now accept either `location` and check the folder through the flow's `bindings[]` (external) or accept `folderPath` "" / "solution_folder" (solution), per the live A/B on flow-builder-sdk#922. The task descriptions still claimed the strict v1 shape. 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
|
CI status: both red required checks come from outside this PR's diff.
Code-owner approvals still needed under the branch rules: 🤖 Generated with Claude Code |
Picks up #3762 (smoke image tools pinned to the CLI's release line). 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017kucK6e5iHgVcizZ47EsQH
rockymadden
left a comment
There was a problem hiding this comment.
Recommendation: 🟡 Commented. The move is complete and nothing was dropped. The relaxed checkers rest on live A/B evidence for 2 of 4 tool kinds. Removing uip agent validate left no check on agent.json. The PR description no longer matches the head.
What
- 📦 Moves the 16
uipath-agents/lowcode/inline_*tasks, their 15_sharedcheckers,inline_wiring.pyandinline_in_flow/check_inline_in_flow.pytouipath-maestro-flow/inline_agent/.task_ids are unchanged. - ✂️ Removes the v1 trajectory gates (
uip agent init|refresh|validate --inline-in-flow,uip maestro flow registry). Adds auip maestro flow validategate (weight 3.0) on each named.flow. - 🔓 External tool checkers now accept
locationsolution|externalandfolderPath""|literal, and look for the folder in the flow's top-levelbindings[]. Solution tool checkers acceptfolderPath""|solution_folder. - 🔁 The is-connector checker drops the solution
connection/resource. It now requires a matchingbindings_v2.jsonconnection binding. - 🔁 The external escalation task swaps
FraudEscalation(JS Action app) forExpenseReviewApp(Workflow Action app). - Why: the Flow skill now authors through the SDK, which never runs the v1 commands. That made
uipath-agentsred for a skill that team doesn't own.
Overall findings
-
🟠 major: the PR description no longer matches the head.
- It says the agent-tool checkers "stay strict until an agent-tool A/B settles it", and lists
inline_external_agent_tool/inline_solution_agent_toolas expected failures.1d2f62923relaxed both. - It lists
inline_is_connector_toolas failing on the missingresources/solution_folder/connection.aabb7beffremoved that assertion. - "Expected state after merge" and "10 of 15" were measured before those commits. They are claims about older code.
- Fix: rewrite "Checker semantics" and "Expected state". Re-run the 16 tasks on the current head and post the new table.
- It says the agent-tool checkers "stay strict until an agent-tool A/B settles it", and lists
-
🟠 major: nothing grades
agent.jsonany more.- The removed
uip agent validate --inline-in-flowgate was the only signal on the inline agent's own definition. None of the moved checkers readagent.json. - Example:
check_inline_in_flow.pypasses wheninputs.sourcepoints at an empty UUID dir, as long asflow validatepasses. - I could not verify that
uip maestro flow validatechecks the inline agent's directory. - Fix: have the grader run
uip agent validate <dir> --inline-in-flowas arun_commandoutcome gate. Or reuse the suite's_shared/check_inline_agent.py --check exists "<Sol>/<Flow>/*/agent.json".
- The removed
-
🟡 minor: the new checker logic has no unit tests.
assert_tool_folder_binding(inline_wiring.py:209) andassert_connection_binding(check_inline_is_connector_tool.py:149) are new pass/fail logic. "Checked locally" is not in CI.pytest tests/tasks/uipath-maestro-flow/collects nothing forinline_agent/_shared/.- Fix: add
inline_agent/_shared/test_inline_wiring.pywith fixtures for each case: SDK shape passes, v1 shape passes, wrong binding folder fails, missing binding fails, placeholderConnectionIdfails.
-
🟡 minor: repo comments tell the history of the change rather than what a future reader needs.
- The same 4-line "Outcome gate ... replaces the ... gates the v1 recipe required" block is pasted into all 16 YAMLs (e.g.
inline_in_flow.yaml:72). - Other places: the "until 2026-10-05" history in
check_inline_external_escalation.py:31-36, the "moved from" note inCODEOWNERS:167-169, anduipath-agents/_shared/__init__.py:23-26. - The #922 rationale appears in
inline_wiring.pyand again in 6 checker docstrings. - Fix: keep the evidence link once, on the
inline_wiring.pyconstants. Drop the move/history prose.
- The same 4-line "Outcome gate ... replaces the ... gates the v1 recipe required" block is pasted into all 16 YAMLs (e.g.
-
🟡 minor: could not verify nightly selection.
- The tag moved from
uipath-agentstouipath-maestro-flow. The nightly VM'sdaily.shis not in the repo, so I can't confirm it globstasks/uipath-maestro-flow/inline_agent/**, or that evalboard keys history ontask_idand not on path or tag. - Fix: name the nightly glob or config that picks these up.
- The tag moved from
tl;dr: The move is clean and every file landed. Before approval: fix the stale description, put an agent.json check back as an outcome gate, and unit-test the two new assertion helpers. Inline notes cover extrapolated relaxations, a placeholder-accepting connection check, and two stale comments.
…d real connection ids - Every inline-agent checker now fails on an unusable agent.json (no lowCode type, id mismatch, no model, or empty system/user prompt). Interim for `uip agent validate --inline-in-flow`, which rejects every SDK-compiled agent today (UiPath/builder-sdk#962). - External tool checkers accept only the (location, folderPath) pairs run live: ("solution", "") and ("external", <folder>). api and maestro now have their own flow debug A/B (flow-builder-sdk#922). - The is-connector checker requires a real connection UUID, not a placeholder string or the SDK's all-zero stub. - Unit tests for the new pass/fail logic (test_inline_wiring.py). - Comments state the rule; the move history and the stale `resources get` and `uip is` wording are gone. 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzeWmKmvxJeWdkrXhGPgUE
…-tests-to-maestro-flow
…tool-shape evidence 🤖 Generated with Claude Code Co-Authored-By: [Claude](mailto:noreply@anthropic.com) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QzeWmKmvxJeWdkrXhGPgUE
Review Response (@rockymadden, review 5434740761)Short version: all five body findings and the five inline threads are addressed in 80cb16f and 6fbea54. The branch now passes 14 of 15 runnable tasks on the current head. The one red task is a new, unmeasured shape question, filed as flow-builder-sdk#967. Instead of re-adding 1. The PR description no longer matches the head Fixed. I rewrote "Checker semantics" and "Expected state" against the current code. Fresh 16-task run on head 2. Nothing grades Fixed with an interim check; the real gate is blocked on flow-builder-sdk#962. I measured your first option before adding it. I ran
As a gate, it would have turned 13 of 14 correct-by-runtime outputs red on an SDK and agent-tool contract gap. So the fix belongs in the SDK (or in 3. The new checker logic has no unit tests Fixed. I added 4. Repo comments tell the history of the change Fixed. The 4-line "Outcome gate … replaces the … v1 recipe" block in all 16 YAMLs is now one line: 5. Could not verify nightly selection Verified, no change needed. The nightly runs the whole Inline threads (each has a reply with details):
🤖 Generated with Claude Code Co-Authored-By: Claude noreply@anthropic.com |
|
CI update (head 6fbea54):
🤖 Generated with Claude Code |
Short version: the 16 inline-agent-in-a-flow tasks move from the
uipath-agentssuite touipath-maestro-flow. Their pass/fail now depends on what the agent produced, not on which authoring route it took. Since the builder-SDK Flow skill was promoted (#3624, #3672), these tasks have shownuipath-agentsred for a skill that team does not own. They failed on v1 command gates the SDK route never runs.Why
Stefan Andrei Balas raised this in the nightly-results thread for
2026-10-05_04-24-14: "Should these tests be moved underuipath-maestro-flow's evals suite and updated with the SDK in mind?" Dustin Metzgar agreed.Skill uipath:uipath-maestro-flow.inline-flowgroup on the claude nightly: 15/15 (09-30) → 13/15 (10-01) → 9/15 (10-02) → 5/15 (10-05).uip agent init/refresh/validate --inline-in-flowanduip maestro flow registry get. The SDK route compiles.flow-sdk/<Name>.flow.ts, which writesagent.json+resources/itself, so those commands never run.What changed
tests/tasks/uipath-agents/lowcode/inline_*→tests/tasks/uipath-maestro-flow/inline_agent/<same dir>/. The inline-agent checkers andinline_wiring.pymove fromuipath-agents/_shared/touipath-maestro-flow/inline_agent/_shared/(renamed, imports unchanged).reference.directory: ../..exposes both these checkers and the suite's_shared/validate_flow.py. A task can mount only one reference dir, so they could not stay in the agents tree.@UiPath/team-coded-agents+ the uipath-agents owners) oninline_agent/together with@UiPath/maestro-cli-team. Theresource.jsoncontract these checkers assert is the agents skill's.uipath-agents→uipath-maestro-flow.lifecycle:generateandresourceadded where missing (required by tests/README).inline-flowandlow-codeare kept. task_ids are unchanged so evalboard history carries over (theskill-agent-prefix stays).command_executedonuip agent (init|refresh|validate) … --inline-in-flowanduip maestro flow registry (search|get|list)(3–6 per task).pass_threshold: 0, required bytest_same_ground_corpus.py):uip solution resources list/get/refresh.uip is(is-connector) is route telemetry, so it is nowweight: 0.uip maestro flow validateon the named flow file (weight 3.0).validate_flow.pynow takes optional explicit paths, because the brownfield fixtures (e.g.OnboardingFlowSolwithEmployeeOnboarding) carry a second Flow project that discovery correctly refuses as ambiguous. Two unit tests were added..uipxjson checks,file_exists, the brownfieldcommand_not_executedguards, the memory-space hand-write guards anduip agent memory addgate (memory is CLI-only: the SDK refuses memory), and every contract checker.test_headless_preamble.py). "Do NOT publish, upload, or deploy." is kept.Checker semantics
Every contract checker grades what the agent produced. Where the SDK shape differs from the v1 shape, the checker accepts the SDK shape only if a live run showed it works.
agent.jsonmust be a usable definition: valid JSON,type: "lowCode",idequal to its directory name, a non-emptysettings.model, and non-emptysystemandusermessages (inline_wiring.assert_inline_agent_definition). This replaces the removeduip agent validate --inline-in-flowgate as an interim check. That command rejects every SDK-compiled agent today (agent.jsonversion: 1.1.0vs latest1.2.0, and no flow-projectbindings_v2.jsonfor tool resources). Tracked in UiPath/flow-builder-sdk#962; once it is fixed,agent validatebecomes the gate.check_inline_external_{rpa,apiworkflow,maestro,agent}_tool.py).(location, properties.folderPath)must be one of the two pairs that ran live:("solution", "")(SDK) or("external", "<literal folder>")(v1). Mixed pairs fail. The folder must also be in the flow's top-levelbindings[]b<Name>FolderPathentry. Evidence, one liveflow debugA/B per kind on flow-builder-sdk#922: process, agent, api + maestro. In each, the tenant tool job ran Successful fromAgentServicewith both shapes, and the control with noresources/had no tool. Not tested: the deployed path (pack + deploy + run), tracked in UiPath/flow-builder-sdk#964.check_inline_solution_{rpa,apiworkflow,maestro,agent}_tool.py).folderPathmay be""or"solution_folder". Both produce byte-identical derived solution files ([Discussion] Cross-folder review of tests/tasks/ prompts — natural-user voice vs. eval-harness leakage #922).check_inline_is_connector_tool.py). The solution-levelresources/solution_folder/connection/*.jsonis not required, because pack and debug write it themselves. The checker requires abindings_v2.jsonconnection binding for the node's connector, and itsConnectionIdmust be a real UUID. A placeholder string or the SDK's all-zero stub fails.folderName: "solution_folder".inline_agent/_shared/test_inline_wiring.py(16 cases). It runs the real checker scripts on temp-dir fixtures and is collected bypytest tests/tasks/uipath-maestro-flow/.Escalation app swap (
inline_external_escalation)The task now escalates to
ExpenseReviewApp(Workflow Action,Shared/uipath-agents/ExpenseReviewSol) instead ofFraudEscalation.FraudEscalationis a JS Action app. A JS Action app cannot back an agent escalation:uip solution resources refreshreports it "not found in Orchestrator", and the agents skill says only Workflow Action apps can. With it, the task could only grade files that would never run.ExpenseReviewAppbacked a live escalation in UiPath/flow-builder-sdk#925:flow debugsuspended and an Action Center AppTask was created.Content, in/outComment, outcomes approve/reject). Project/solution:ExpenseFlow/ExpenseFlowSol. The checker's expectedappName/folderNamefollow; every other assertion is unchanged.Expected state after merge
Branch run 37541450751 (agent
claude, head2eb614285; the only later commit,6fbea541b, changes a comment): 14 of 15 runnable tasks pass, against 5 of 15 in nightly2026-10-05_04-24-14.inline_mcp_server_toolis skipped (skip: true).Scores below 1.0 on passing tasks come from the advisory (
pass_threshold: 0)uip solution resourcesroute criteria. Every gated criterion passed.builtin-toolandexternal-escalationnow pass because flow-builder-sdk#920 and docs(uipath-maestro-case): close send_as drop regression via reinforced required-input gate #921 shipped in the eval image.solution-escalationfails one assertion: the channel'sproperties.folderNameis"", and the checker expects"solution_folder". This is the same""vs"solution_folder"question [Discussion] Cross-folder review of tests/tasks/ prompts — natural-user voice vs. eval-harness leakage #922 answered for solution tools. It has not been measured for escalations, so the checker stays strict. Tracked in UiPath/flow-builder-sdk#967.Nightly selection: the nightly runs the whole
tests/tasks/tree. Its 2026-10-06 run executed 1398 tasks, including all 17skill-agent-inline-*task_ids, and skipped tasks under 9 different skill folders. So the newuipath-maestro-flow/inline_agent/path is picked up with no config change. Maturity skipping keys ontask_idplus a hash of the task definition (eval_runner/skills/maturity.py), so history carries over, and the edited definitions re-run instead of being skipped as mature.Checks run
pytest tests/tasks/uipath-maestro-flow/: 1683 passed.pytest tests/tasks/uipath-agents/: 17 passed.scripts/check-task-driver.py,scripts/check-task-host-paths.py: OK.claude): 37541450751, table above.skill-flavors/studioweb, so no eval exercises the classic v1 Flow skill. Dropping the v1 command gates removes no live coverage.The
inline_mcp_server_tooltask (skipped,e2e-blocked) carriespath-to-ga. Its moved YAML shows the tag as an added line, so the Path-to-GA approval gate needs an allowlisted reviewer (e.g. Rocky Madden).🤖 Generated with Claude Code
https://claude.ai/code/session_01QzeWmKmvxJeWdkrXhGPgUE