Skip to content

Add InvokeWorkflowFile troubleshooting playbook coverage (design-time + runtime)#2104

Open
Stefan-Virgil wants to merge 2 commits into
mainfrom
feat/troubleshoot-invoke-workflow-coverage
Open

Add InvokeWorkflowFile troubleshooting playbook coverage (design-time + runtime)#2104
Stefan-Virgil wants to merge 2 commits into
mainfrom
feat/troubleshoot-invoke-workflow-coverage

Conversation

@Stefan-Virgil

Copy link
Copy Markdown
Contributor

What

Comprehensive troubleshooting coverage for UiPath.Core.Activities.InvokeWorkflowFile, which previously had a single runtime "invoke faulted" playbook and zero test coverage.

Playbook (classic-activities)

  • New invoke-workflow-file-design-time-errors.md — Studio design/build-time errors: unknown-member ArgumentsVariable (package-version mismatch), Cache Mechanism Error code 7, invoked .xaml outside the project root, unmapped required argument, plus the maintenance checklist (re-add activity, fix double-backslashes, rebuild project.json).
  • Completed invoke-workflow-failed.md — added the persistence-not-supported branch (it was listed only as a symptom, with no cause/investigation/resolution), plus ignoredFiles / UnSafe / TargetSession specifics. Property names verified against the repo's own activity docs.
  • Cross-redirected the two playbooks so design-time vs runtime route cleanly; each error signature resolves to one dominant playbook via the skill's grep routing.

Tests — 9 e2e scenarios (skill_triggered + llm_judge, canonical troubleshoot shape)

Class Scenario Cause
Design-time classic-invoke-unknown-member package-version mismatch (ArgumentsVariable)
Design-time classic-invoke-cache-error-7 project cache corruption
Design-time classic-invoke-file-not-packed invoked .xaml outside project root
Design-time classic-invoke-arg-required new required argument unmapped
Runtime classic-invoke-child-throws child workflow throws (one-hop tracing)
Runtime classic-invoke-arg-mismatch stale argument key → ArgumentException
Runtime classic-invoke-session-isolated non-Current TargetSession + UnSafe=False
Runtime classic-invoke-ignored-file invoked .xaml in ignoredFiles → runtime FNF
Runtime classic-invoke-persistence RunJob Suspend + supportsPersistence: false

Validation

Every scenario validated with 3 parallel coder-eval replicates (experiments/default.yaml). 33/33 runs SUCCESS; all criteria 1.0 except one cache-error replicate at 0.90 (still well above the 0.7 threshold — judge noted a slightly vague fix on that run).

Notes

  • Each scenario carries the fault only in retrieved evidence (logs/source), never in project/workflow names, prompts, or manifests — no-hints rule enforced.
  • Fixtures follow the faithful-replay template; runtime scenarios use canned faulted-job responses (jobs get/logs/history/traces + folders/jobs list), design-time scenarios are source-only with docsai passthrough.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Stefan-Virgil's task in 3m 52s —— View job


PR Review: InvokeWorkflowFile Troubleshooting Coverage

  • Read review criteria and project conventions
  • Read existing PR conversation
  • Review playbook changes (skill docs)
  • Review test task YAMLs (all 9 scenarios)
  • Review test fixtures (data, process files)
  • Check for cross-skill references, secrets, broken links
  • Post final review

Summary

Adds comprehensive InvokeWorkflowFile troubleshooting coverage: a new design-time playbook, expanded runtime playbook, and 9 e2e test scenarios with faithful-replay fixtures. Well-structured PR that follows established troubleshoot-suite conventions closely.

Change-by-Change Review

1. skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/invoke-workflow-file-design-time-errors.md (new)

Severity: OK

New design-time playbook covering 4 distinct failure branches (ArgumentsVariable package mismatch, Cache Error 7, file-not-packed, required arg unmapped). Clean structure: Context → Investigation (route-on-error-string) → Resolution with per-branch fixes + maintenance checklist. Cross-links to the runtime playbook correctly. Confidence high is appropriate.

2. skills/uipath-troubleshoot/references/activity-packages/classic-activities/playbooks/invoke-workflow-failed.md (modified)

Severity: OK

Added persistence-not-supported branch (was symptom-only), ignoredFiles specifics, UnSafe/TargetSession detail, and a cross-link back to the design-time playbook. Changes integrate cleanly into the existing structure. Confidence stays medium (appropriate for runtime playbook).

3. overview.md and summary.md (modified)

Severity: OK

overview.md adds the design-time failure family to the System/Core section. summary.md adds the new playbook row to the table. Both correctly reference the new file. All relative links resolve.

4. All 9 task.yaml files

Severity: Medium — missing required lifecycle:* tag

All 9 tasks use tags: [uipath-troubleshoot, rpa, e2e, mode:diagnose]. Per the test README tag taxonomy, lifecycle:* is required on every task. All existing troubleshoot e2e tasks in the same directory consistently include lifecycle:discover. The 9 new tasks should add it:

tags: [uipath-troubleshoot, rpa, e2e, mode:diagnose, lifecycle:discover]

Affected files (all 9):

  • classic-invoke-arg-mismatch/task.yaml:7
  • classic-invoke-arg-required/task.yaml:7
  • classic-invoke-cache-error-7/task.yaml:7
  • classic-invoke-child-throws/task.yaml:7
  • classic-invoke-file-not-packed/task.yaml:7
  • classic-invoke-ignored-file/task.yaml:7
  • classic-invoke-persistence/task.yaml:7
  • classic-invoke-session-isolated/task.yaml:7
  • classic-invoke-unknown-member/task.yaml:7

Fix this →

Otherwise, the task structure is correct:

  • Task IDs follow skill-troubleshoot-classic-invoke-* convention
  • Canonical skill_triggered + llm_judge criteria (only two, per suite rules)
  • run_limits values match suite convention (task_timeout: 5400, max_turns: 60, turn_timeout: 3600)
  • expected_turns: 300 matches the pattern used by ~60% of existing troubleshoot scenarios
  • sandbox.mock_path_dirs: ["m"] set correctly
  • Template sources reference ../../_shared/mock_template (correct depth for activity-packages/)
  • Simulation personas are neutral and well-constrained

5. RESOLUTION.md files (9 new)

Severity: OK

All 9 resolutions are thorough and well-structured: root cause → what went wrong → why (with evidence) → immediate fix → preventive fix → hypothesis table. Each includes an eliminated hypothesis to test the agent's differential reasoning. Business names are neutral (PaymentValidation, TaxProcessing, OrderApproval, etc.) — no names that leak the diagnosis.

6. README.md files (9 new)

Severity: OK

Each README explains what the scenario exercises, how it reproduces the fault, and which playbook branch it targets. Design-time vs runtime distinction is clearly called out.

7. Fixtures: data/m/r/*.json + process/*.xaml + process/project.json

Severity: OK

  • Runtime fixtures (5 scenarios): complete faulted-job response sets (job-get, job-logs, job-history, job-traces, folders, jobs-list) with realistic error stacks that carry the fault signature without encoding the answer in names
  • Design-time fixtures (4 scenarios): source-only with docsai ask passthrough manifests — correct since these are Studio errors, not robot jobs
  • XAML fixtures are well-crafted — each embeds exactly the fault trigger (e.g., ArgumentsVariable="{x:Null}" in unknown-member, UnSafe="False" TargetSession="PictureInPicture" in session-isolated, ignoredFiles entry in ignored-file)
  • Scrub pass clean: MOCK-HOST for hostnames, original_email@test.com for emails, no personal paths — the *password* matches are standard excludedLoggedData boilerplate in project.json
  • Cache-error-7 correctly includes obj/project.assets.json to simulate stale cache state

8. Manifests (data/m/r/manifest.json)

Severity: OK

  • Runtime scenario manifests include docsai ask passthrough + job/folder rules + permissive unmocked_default — consistent with existing runtime scenarios
  • Design-time scenario manifests have only docsai ask passthrough + unmocked_default — correct since no Orchestrator calls are expected
  • Rule ordering is correct (specific before generic)

What's Missing

Area Ratings

Area Status Notes
Frontmatter OK No SKILL.md changes; playbook frontmatter valid
E2E Tests Issue Missing required lifecycle:discover tag on all 9 tasks
Skill Body OK Playbooks are well-structured with clean cross-references
References & Assets OK All links resolve; summary table updated
Repo Hygiene OK No secrets, no cross-skill deps, CODEOWNERS covered, scrub pass clean

Issues for Manual Review

  • Domain accuracy of XAML fixtures: The crafted .xaml files embed UiPath-specific properties (ArgumentsVariable, UnSafe, TargetSession, ExecutionMode="Suspend"). I verified the properties are consistently referenced between the XAML source and the error messages in the JSON fixtures, but the reviewer should confirm the attribute names and values match the actual UiPath SDK behavior.
  • 33/33 passing runs claimed in PR description: The validation results are not independently verifiable from the PR diff. Consider linking the evalboard run or attaching run artifacts.

Conclusion

Strong PR — thorough coverage of a previously untested activity with well-crafted faithful-replay scenarios. The single actionable finding is the missing lifecycle:discover tag on all 9 task YAMLs, which is required per the tag taxonomy and consistently present on all existing troubleshoot tasks. Recommend fixing that and then this is good to merge.
|

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Stefan-Virgil's task in 3m 10s —— View job


Coder-eval task lint (advisory)

  • Read lint rubric
  • Identify changed task YAMLs
  • Check PR body for evidence of passing run
  • Apply rubric to each task YAML
  • Within-PR duplicate check
  • Compose final lint report

Coder-eval task lint (advisory)

9 task YAMLs changed; verdict counts: 0 Critical, 0 High, 0 Medium, 0 Low, 9 OK.

Rubric: .claude/commands/lint-task.md. This check is advisory and never blocks merge.

Evidence of passing run

✅ Author confirms passing run: "Every scenario validated with 3 parallel coder-eval replicates (experiments/default.yaml). 33/33 runs SUCCESS; all criteria 1.0 except one cache-error replicate at 0.90 (still well above the 0.7 threshold — judge noted a slightly vague fix on that run)."

Per-task lint

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-arg-mismatch/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-arg-required/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-cache-error-7/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-child-throws/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-file-not-packed/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-ignored-file/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-persistence/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-session-isolated/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/classic-invoke-unknown-member/task.yaml — verdict: OK

Within-PR duplicates

No duplicate clusters detected.

All 9 tasks share the canonical troubleshoot-suite scaffold (skill_triggered + llm_judge with RESOLUTION.md ground truth, tempdir sandbox with mock dispatcher, simulation block). Each exercises a materially distinct InvokeWorkflowFile failure class — 4 design-time errors (unknown-member, cache-error-7, file-not-packed, arg-required) and 5 runtime faults (child-throws, arg-mismatch, session-isolated, ignored-file, persistence). Scaffold reuse is template consistency, not duplication. Verified against existing siblings (classic-movefile-source-not-found, classic-openapp-wrong-scope-type) — same scaffold, different activity/failure domain.

Conclusion

✅ All changed tasks pass the rubric. Evidence of passing run confirmed.

@Stefan-Virgil

Copy link
Copy Markdown
Contributor Author

Addressed the review finding in fd214b3: added the required lifecycle:discover tag to all 9 task YAMLs.

discover is the correct phase per the tag taxonomy — these are read-only diagnostic investigations (list/get/inspect existing state), matching the current db-* troubleshoot scenarios which use lifecycle:discover.

Minor note for the record: the older troubleshoot tasks in this directory (e.g. classic-movefile-source-not-found, classic-openapp-wrong-scope-type, sys-getasset-*) do not carry a lifecycle tag — only ~43/204 do — so the new tasks are now more compliant than most existing siblings, not less. Bringing the rest up to standard is out of scope for this PR.

Stefan-Virgil and others added 2 commits July 20, 2026 08:40
… + runtime)

Errors on UiPath.Core.Activities.InvokeWorkflowFile had only a single
runtime "invoke faulted" playbook and no test coverage. Add a dedicated
design-time playbook, complete the runtime playbook, and lock in both
with faithful-replay coder-eval scenarios.

Playbook (classic-activities):
- New invoke-workflow-file-design-time-errors.md: unknown-member
  ArgumentsVariable (package-version), Cache Mechanism Error code 7,
  invoked .xaml outside project root, unmapped required argument, plus
  the maintenance checklist.
- Complete invoke-workflow-failed.md: add the persistence-not-supported
  branch (previously only a symptom, no cause/investigation/resolution)
  and ignoredFiles / UnSafe / TargetSession specifics.
- Cross-redirect the two playbooks so design-time vs runtime route
  cleanly; each error signature resolves to one dominant playbook.

Tests (9 e2e scenarios, skill_triggered + llm_judge):
- Design-time (4): unknown-member, cache-error-7, file-not-packed,
  arg-required.
- Runtime (5): child-throws (one-hop tracing), arg-mismatch,
  session-isolated, ignored-file, persistence.
- All validated with 3 parallel replicates each (33 runs, all passing).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Address PR review: the repo tag taxonomy (tests/README.md) requires a
lifecycle:* tag on every task; diagnostic investigations are read-only
exploration, so lifecycle:discover — matching the current db-* troubleshoot
scenarios.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Stefan-Virgil
Stefan-Virgil force-pushed the feat/troubleshoot-invoke-workflow-coverage branch from fd214b3 to e076c98 Compare July 20, 2026 05:40
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