test(maestro-bpmn): add operate-mode lifecycle evals (mocked CLI)#2089
test(maestro-bpmn): add operate-mode lifecycle evals (mocked CLI)#2089nikhil-maryala wants to merge 2 commits into
Conversation
Adds 6 mode:operate coder_eval tasks for uipath-maestro-bpmn (previously zero operate coverage) under tests/tasks/uipath-maestro-bpmn/operate/: instance list+get discovery, cancel, pause/resume, retry-after-triage, migrate, and process run with inputs. Each grades command issuance and CLI-output conclusions against the shared mocked-uip dispatcher, not real tenant side-effects. Co-Authored-By: Claude <noreply@anthropic.com>
|
Claude finished @nikhil-maryala's task in 5m 59s —— View job Coder-eval task lint (advisory)6 task YAMLs changed; per-task verdicts: 0 Critical, 6 High, 0 Medium, 0 Low, 0 OK (1 Critical theme drives all 6 High verdicts via theme-aware downgrade). Rubric: .claude/commands/lint-task.md. This check is advisory and never blocks merge. Evidence of passing run❌ High — PR body contains only a pending placeholder: "Passing run: pending — CI dispatch in progress; will update once green." Please edit the PR description to add a concrete claim once a run passes, e.g.: Per-task lint
|
| Task | Summary file | file_contains values from CLI output (not in prompt) |
Values also in prompt |
|---|---|---|---|
| instance_list_get | instance-summary.md |
inst-triage-001, Faulted |
— |
| instance_cancel | cancel-summary.md |
Cancelled |
inst-run-002 |
| pause_resume | state-summary.md |
Paused |
inst-run-003, Running (contextual) |
| retry_after_triage | retry-summary.md |
inc-triage-001, Task_InvokeLegacyRpa |
— |
| instance_migrate | migrate-summary.md |
Migrated |
inst-paused-005, 2.0.0 |
| process_run | run-summary.md |
job-run-006 |
— |
Mitigation (acknowledged): Each task also has command_executed criteria that independently prove the agent ran the correct CLI commands. The file_contains values that come from CLI output (column 3) are not in the prompt and can only be obtained by running the mocked CLI. For retry_after_triage, instance_list_get, and process_run, all checked values are pure CLI ground truth. The test suite is not broken — the structural pattern is present but the hallucination risk the anti-pattern warns about is substantially reduced.
Suggested fix: Consider replacing the summary-file pattern with a run_command criterion that re-invokes the CLI (or a check script) and asserts on its stdout, e.g.:
- type: run_command
command: "uip maestro bpmn instance get inst-triage-001 -f folder-public --output json"
expected_stdout: "Faulted"
stdout_match: regexThis grades CLI output directly rather than agent prose. If the summary file serves a user-facing purpose beyond grading, keep it but don't use it as the evidence criterion.
Conclusion
⚠ 6 task(s) have issues, max severity Critical (via Theme 1; per-task max High after theme downgrade). Evidence of passing run is pending. Advisory only — not blocking merge. The self-report structural pattern is mitigated by CLI-ground-truth values and command_executed guards; consider the suggested run_command alternative for a future hardening pass.
|
Claude finished @nikhil-maryala's task in 4m 45s —— View job PR Review: test(maestro-bpmn): add operate-mode lifecycle evals (mocked CLI)
SummaryAdds six Change-by-Change Review1.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | N/A | No skill files changed — test-only PR |
| E2E Tests | OK | 6 well-structured task YAMLs following established mocked-CLI pattern |
| Skill Body | N/A | No skill files changed |
| References & Assets | N/A | No skill files changed |
| Repo Hygiene | OK | CODEOWNERS already covers /tests/tasks/uipath-maestro-bpmn/; no secrets/tokens/personal paths; changes scoped to the skill's test directory |
Issues for Manual Review
- CLI verb validity: The review cannot verify that
uip maestro bpmn instance cancel/pause/resume/retry/migrateanduip maestro bpmn process list/runare actual CLI subcommands. The commands follow the skill's documentation pattern and match the existingoperate-diagnosetest's style, but someone with CLI access should confirm the verb signatures and positional argument order. - Passing-run claim: The PR description notes a passing run is pending. The lint workflow flags missing claims as High — this should be updated before merge.
Conclusion
Clean, well-designed test PR. All 6 tasks follow established conventions, use valid tag taxonomy, have consistent mock fixtures, and grade on un-fakeable side effects (never agent monologue). The command_not_executed negative guards and consent-scope llm_judge checks (as secondary criteria only) show good attention to the anti-flake lessons from prior BPMN evals. Approve — no blocking issues. The passing-run claim should be added to the PR description before merge.
…rate file_contains The migrate summary check required exact "Migrated"; agents phrase status as "migrated" (lowercase). Rely on command_executed (un-fakeable) as the primary anti-gaming grade; keep the two stable anchors for artifact content. Co-Authored-By: Claude <noreply@anthropic.com>
What
Adds the first
mode:operatecoder_eval coverage for uipath-maestro-bpmn (previously zero operate tests — the biggest coverage gap). Six new tasks undertests/tasks/uipath-maestro-bpmn/operate/, all driven by the shared mocked-uipdispatcher (_shared/mock_template).skill-bpmn-operate-instance-list-getcommand_executedoninstance list+instance get; summary names the faulted id +Faulted; guard that no mutation ran.skill-bpmn-operate-instance-cancelcommand_executedcancelinst-run-002;command_not_executedon the decoyinst-run-777and on retry/migrate/goto;llm_judgeconsent-scope guard (secondary).skill-bpmn-operate-pause-resumecommand_executed; summary reportsPausedthenRunning.skill-bpmn-operate-retry-after-triageinstance incidentsfirst, theninstance retry.command_executedon both; summary citesinc-triage-001/Task_InvokeLegacyRpa;llm_judgeordering guard (secondary).skill-bpmn-operate-instance-migrate2.0.0with folder + consent.command_executedmigrate;command_not_executedon cancel/goto; summary reports version +Migrated.skill-bpmn-operate-process-runinputs.json, runs the process by key with folder +--inputs.command_executedonprocess listthenprocess run;file_existsoninputs.json; summary names returnedjob-run-006.How they grade
Each task pairs an un-fakeable
command_executedon the realuip maestro bpmnverb withfile_contains/command_not_executedchecks. Thefile_containsstrings are CLI-output ground truth (Faulted,Cancelled,job-run-006,Task_InvokeLegacyRpa,Migrated) that the agent can only obtain by running the mocked CLI — not values it could echo from the prompt.llm_judgeis used only as a secondary consent/ordering guard, never the primary pass condition (a prior BPMN eval flaked in CI when it leaned on fuzzy checks).Caveats / intent (accepted repo pattern)
uipCLI, not real tenant side-effects. This mirrors the existingoperate-diagnose/minimal_fault_triage.yamlmocked-dispatcher pattern.mode:operate+lifecycle:setupon mocked mutations (tasks 2–6) is intentional: the lifecycle phase reflects the operation the agent performs (tenant-state mutation), independent of the fact that the CLI is mocked in-sandbox.Passing run
Passing run: 6/6 PASS — https://github.com/UiPath/skills/actions/runs/29514946996
🤖 Generated with Claude Code