Skip to content

feat(uipath-troubleshoot): add IPC Activities package + Broadcast Message exception playbooks#1788

Open
Stefan-Virgil wants to merge 6 commits into
mainfrom
feat/troubleshoot-ipc-broadcast-exceptions
Open

feat(uipath-troubleshoot): add IPC Activities package + Broadcast Message exception playbooks#1788
Stefan-Virgil wants to merge 6 commits into
mainfrom
feat/troubleshoot-ipc-broadcast-exceptions

Conversation

@Stefan-Virgil

Copy link
Copy Markdown
Contributor

What

Adds a new ipc-activities activity package to uipath-troubleshoot, covering UiPath.IPC.Activities inter-process communication failures, plus two faithful-replay diagnose tests for Broadcast Message.

Playbooks (Broadcast Message / Send Message)

  • System.TimeoutExceptionTimeout of <N> ms has passed and no channel was found to send the message to. No live Message Receiver Trigger on the channel before the timeout: receiver not running in parallel, case-sensitive channel-name mismatch, or too-low Timeout (Timeout=0 drops silently). Fix: launch the receiver in parallel first, match the channel string exactly, raise Timeout to 5000–10000 ms.
  • System.UnauthorizedAccessExceptionAccess to the path is denied. on the channel's named-pipe endpoint. IPC is confined to the same robot / user / session / machine; the pipe ACL rejects a peer across a session, user-account, or elevation boundary. Fix: co-locate sender and receiver on the same robot, user, session, and elevation.

Package structure

overview.md, summary.md, investigation_guide.md, presentation.md, and the two playbooks. Registered in references/summary.md with a redirect distinguishing UiPath.IPC.Activities from the internal UiPath.Ipc / UiPath.CoreIpc transport behind Integration Service connectors.

Tests

Two faithful-replay e2e diagnose scenarios under tests/tasks/uipath-troubleshoot/activity-packages/ipc-activities/:

  • broadcast-message-timeout
  • broadcast-message-unauthorized

Agent-visible fixtures (process/* + fixtures/*) carry only the genuine runtime exceptions + stack traces — no diagnosis hints; the root cause lives only in the (un-staged) RESOLUTION.md.

Validation — 3 parallel runs per task, 6/6 pass

Task Rep 0 Rep 1 Rep 2
broadcast-message-timeout 1.0 0.925 1.0
broadcast-message-unauthorized 1.0 1.0 1.0

All above the 0.7 threshold. In every run the agent triggered uipath-troubleshoot, routed to the new package, matched the right playbook, and reached the RESOLUTION root cause + fix. (The 0.925 was a fully-correct diagnosis the judge scored 0.9 on style.)

New tag values

Follows the existing troubleshoot activity-package test convention with new package/activity tags: ipc-activities, broadcast-message (extends the same dimension as word-activities, database-activities, etc.).

🤖 Generated with Claude Code

Stefan-Virgil and others added 6 commits July 1, 2026 11:54
…playbooks + tests

Covers InvalidOperation, Argument, IO.DirectoryNotFound, IndexOutOfRange,
KeyNotFound, and ArgumentOutOfRange exceptions thrown from Assign expressions.
Each ships a per-exception playbook (Context/Investigation/Resolution) plus a
faithful-replay e2e diagnose scenario (mock OR job/logs + process snapshot).
Registered in runtime-exceptions overview/summary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… manifests

Neutralize manifest _doc and expected_calls descriptions so the agent-visible
fixtures no longer name the exception type or fault location (Assign / Main.xaml).
Mock dispatch is unaffected (rules unchanged); validated scores stand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ks coverage + tests

Extend null-reference-exception and key-not-found-exception playbooks to name
the If/While Condition as a fault origin (condition resolves before either
branch runs). Add two faithful-replay e2e diagnose scenarios where an If
Condition expression throws NullReferenceException / KeyNotFoundException.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ifests

Neutralize manifest _doc and expected_calls descriptions so the agent-visible
fixtures no longer name the exception type or fault location (If / Main.xaml).
Mock dispatch is unaffected (rules unchanged); validated scores stand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… If Condition)

The two If task.yaml description fields said the fault was "thrown from an
Assign expression" — a copy-paste artifact from the Assign-based siblings.
Both scenarios model an If Condition fault; README/RESOLUTION/fixtures already
say so. Addresses the advisory lint finding on PR #1782.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…sage exception playbooks

Add a new ipc-activities activity package covering UiPath.IPC.Activities
inter-process communication failures. Two playbooks for Broadcast Message /
Send Message faults:

- System.TimeoutException ("no channel was found") — no live Message Receiver
  Trigger on the channel within the timeout: receiver not running in parallel,
  case-sensitive channel-name mismatch, or too-low Timeout (Timeout=0 drops
  silently). Fix: launch receiver in parallel first, match channel, raise
  Timeout to 5000-10000ms.
- System.UnauthorizedAccessException ("Access to the path is denied") — the
  local named-pipe ACL rejects a peer across a session / user / elevation
  boundary. Fix: co-locate sender and receiver on the same robot, user,
  session, and elevation.

Package ships overview / summary / investigation_guide / presentation and is
registered in references/summary.md (with a redirect distinguishing it from the
internal UiPath.Ipc / UiPath.CoreIpc transport behind Integration Service).

Add two faithful-replay e2e diagnose scenarios (broadcast-message-timeout,
broadcast-message-unauthorized). Validated with 3 parallel runs each: 6/6 pass
(scores 1.0 / 0.925 / 1.0 and 1.0 / 1.0 / 1.0). Agent-visible fixtures carry
only the genuine runtime exceptions + stack traces; no diagnosis hints.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Stefan-Virgil's task in 8m 35s —— View job


PR Review: IPC Activities + Broadcast Message Exception Playbooks

  • Read review criteria and project conventions
  • Analyze full diff against origin/main
  • Check existing PR conversation
  • Review skill documentation files (playbooks, overview, summaries)
  • Review test task files (YAML, fixtures, process files)
  • Verify structural checks (CODEOWNERS, links, cross-skill refs, secrets)
  • Post review findings

Summary

Adds the ipc-activities activity-package playbook subtree (overview, summary, investigation guide, presentation, 2 playbooks) and 6 runtime-exception playbooks (InvalidOperationException, ArgumentException, DirectoryNotFoundException, IndexOutOfRangeException, KeyNotFoundException, ArgumentOutOfRangeException). Includes 2 IPC faithful-replay e2e tests and 8 runtime-exception faithful-replay e2e tests. All 100 changed files are well-scoped to uipath-troubleshoot.

Change-by-Change Review

1. IPC Activities playbook package (skills/uipath-troubleshoot/references/activity-packages/ipc-activities/)

OK

Well-structured package with overview, summary, investigation guide, presentation, and two playbooks. The playbooks follow the established Context → Investigation → Resolution pattern with correct cross-references between timeout and unauthorized-access variants. The Integration Service disambiguation in summary.md and the top-level router is a smart addition — UiPath.IPC.Activities vs UiPath.Ipc/UiPath.CoreIpc is a real confusion vector.

Minor: playbooks use plain-text sub-headings ("What this looks like:", "What can cause it:") rather than ATX-style ### headers. This matches the established pattern in all other troubleshoot playbooks (checked null-reference-exception.md, argument-exception.md, etc.), so while the content-quality rules prefer ATX headers, this is suite-consistent. Not flagging.

2. Top-level router update (skills/uipath-troubleshoot/references/summary.md)

OK

IPC Activities section added at the correct position (after Web Activities, before the Playbooks section). The description is thorough, includes the redirect distinguishing IPC from IS, and links resolve correctly. The runtime-exceptions description was updated to cover the 6 new exception types.

Note: there is a pre-existing duplicate ## Python Activities section at lines 130–137 and 148–155 that predates this PR (confirmed via git diff). Not attributable to this PR.

3. Runtime-exception playbooks (6 new files under references/runtime-exceptions/playbooks/)

OK

All six follow the canonical structure with confidence: medium frontmatter, Context (scope boundary + symptoms + causes + what to look for), Investigation (5-step process), and Resolution (4+ fixes). Each playbook correctly gates on stack-trace origin (user workflow code, not package internals). The exception-type table in overview.md and the summary index are both updated consistently.

4. IPC test task YAMLs (tests/tasks/uipath-troubleshoot/activity-packages/ipc-activities/)

OK

Both tasks follow the canonical lean contract: skill_triggered (weight 1.0) + llm_judge (weight 3.0, pass_threshold 0.7) with the verbatim canonical prompt. task_id format is correct (skill-troubleshoot-broadcast-message-*). _shared path depth (../../../_shared/mock_template) resolves correctly for 3-level nesting. sandbox.mock_path_dirs: ["mocks"] present. No @uipath/cli in env_packages. initial_prompt is minimal (just the job ID question). Tags follow the established activity-package convention matching word-activities tasks (orchestrator, ipc-activities, broadcast-message).

5. Runtime-exception test task YAMLs (8 tasks: 6 Assign-originated + 2 If-condition)

OK

All eight follow the same canonical structure. Tags use the leaner [uipath-troubleshoot, rpa, e2e, faithful-replay, mode:diagnose] set. _shared path depth (../../_shared/mock_template) correct for 2-level nesting. Manifests are clean — no diagnosis hints in _doc fields (confirmed via the scrub commits a8e5ef36 and c30d31cd).

6. Test fixtures (manifest.json, job-get.json, job-logs.json, folders.json per scenario)

OK

Manifests use deterministic first-match rules with the permissive unmocked_default (empty array, exit 0). Job fixtures carry sanitized UUIDs, MOCK-HOST hostnames, and test@test.com email addresses. No personal paths or real credentials. Stack traces in job-get fixtures are realistic and contain only the exception + user-workflow frames (no package-internal frames that would confuse scope routing).

7. Process snapshots (Main.xaml, project.json, project.uiproj per scenario)

OK

XAMLs are minimal — each contains a single faulted activity (Assign or If) with the relevant expression. project.json files include standard UiPath package references. No extraneous activities or noise that would mislead the agent.

What's Missing

Nothing identified. The PR is well-scoped and complete.

Area Ratings

Area Status Notes
Frontmatter OK Playbooks have correct confidence: medium YAML frontmatter
E2E Tests OK 10 e2e tasks total, all following canonical lean contract; no smoke needed per suite rules
Skill Body OK No SKILL.md changes; playbooks and references are additions only
References & Assets OK All links resolve; proper registration in summary.md and overview.md
Repo Hygiene OK CODEOWNERS already covers /skills/uipath-troubleshoot/ and /tests/tasks/uipath-troubleshoot/; no secrets; no cross-skill deps

Issues for Manual Review

  • Domain accuracy of IPC playbooks: The Timeout=0 silent-drop behavior described in broadcast-message-timeout.md:35 ("Timeout = 0 drops the message immediately with no exception") should be verified against the actual UiPath.IPC.Activities runtime — this is a behavioral claim the reviewer cannot verify from documentation alone.
  • IPC named-pipe ACL model: The broadcast-message-unauthorized-access.md playbook's claim that IPC is confined to "same robot, same Windows user, same session, same machine" is plausible but the exact ACL boundaries (particularly session vs elevation) should be verified by someone with access to the runtime.

Conclusion

Clean PR. The IPC Activities package is well-structured with proper IS disambiguation, and the runtime-exception playbooks are consistent and thorough. All 10 test tasks follow the canonical lean contract. No blocking issues found — approve.

@github-actions

github-actions Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Stefan-Virgil's task in 4m 7s —— View job


Coder-eval task lint (advisory)

11 task YAMLs changed; verdicts: 0 Critical, 0 High, 0 Medium, 0 Low, 11 OK.

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

Evidence of passing run

  • ✅ Author confirms passing run for IPC tasks: "3 parallel runs per task, 6/6 pass" with per-rep scores (broadcast-message-timeout: 1.0, 0.925, 1.0; broadcast-message-unauthorized: 1.0, 1.0, 1.0).
  • High — PR body does not claim the 8 runtime-exception tasks or the uipath-agents guardrails/validate task have been run and passed. Please edit the PR description to add passing-run evidence for:
    • skill-troubleshoot-argument-exception
    • skill-troubleshoot-argument-out-of-range-exception
    • skill-troubleshoot-directory-not-found-exception
    • skill-troubleshoot-index-out-of-range-exception
    • skill-troubleshoot-invalid-operation-exception
    • skill-troubleshoot-key-not-found-exception
    • skill-troubleshoot-if-null-reference-exception
    • skill-troubleshoot-if-key-not-found-exception
    • skill-agent-guardrail-coded-validate

Per-task lint

tests/tasks/uipath-troubleshoot/activity-packages/ipc-activities/broadcast-message-timeout/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/activity-packages/ipc-activities/broadcast-message-unauthorized/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/argument-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/argument-out-of-range-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/directory-not-found-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/index-out-of-range-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/invalid-operation-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/key-not-found-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/if-null-reference-exception/task.yaml — verdict: OK

tests/tasks/uipath-troubleshoot/runtime-exceptions/if-key-not-found-exception/task.yaml — verdict: OK

tests/tasks/uipath-agents/coded/guardrails/validate/validate.yaml — verdict: OK

Within-PR duplicates

No duplicate clusters detected.

All 10 troubleshoot tasks share an identical YAML scaffold (same success_criteria shape, simulation block, run_limits), but each exercises a materially distinct exception type with a distinct root cause and distinct fix — this is template reuse, not duplication. The closest pair (key-not-found-exception / if-key-not-found-exception) shares the same KeyNotFoundException type but tests different faulting activity paths (Assign vs If condition), covering distinct routing logic in the troubleshoot skill.

The uipath-agents guardrails task is an entirely different skill/domain — no overlap.

Conclusion

  • ✅ All 11 changed tasks pass the per-task rubric. Every task follows the correct structure for its suite (troubleshoot: skill_triggered + llm_judge per suite CLAUDE.md; agents: skill_triggered + command_executed + run_command). Prompts are goal-oriented with no procedure leakage. No sandbox anti-patterns.
  • ⚠ 9 task(s) lack passing-run claims in the PR body, max severity High. Advisory only — not blocking merge. Please consider editing the PR description to add evidence for the runtime-exception and guardrails tasks.

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