@uipath/skills 1.197.0 → 1.197.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/skills/uipath-ixp/SKILL.md +2 -2
  5. package/skills/uipath-ixp/references/label-documents-guide.md +1 -1
  6. package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +1 -1
  7. package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
  8. package/skills/uipath-platform/SKILL.md +10 -1
  9. package/skills/uipath-review/SKILL.md +21 -10
  10. package/skills/uipath-review/references/api-workflows/api-workflow-review-checklist.md +72 -0
  11. package/skills/uipath-review/references/bpmn/bpmn-review-checklist.md +92 -0
  12. package/skills/uipath-review/references/coded-apps/coded-app-review-checklist.md +16 -15
  13. package/skills/uipath-review/references/flows/flow-common-issues.md +1 -25
  14. package/skills/uipath-review/references/flows/flow-review-checklist.md +12 -67
  15. package/skills/uipath-review/references/rpa/long-running-workflow-issues.md +2 -2
  16. package/skills/uipath-review/references/rpa/modern-studio-issues.md +2 -2
  17. package/skills/uipath-review/references/rpa/rpa-common-issues.md +15 -59
  18. package/skills/uipath-review/references/rpa/rpa-review-checklist.md +17 -16
  19. package/skills/uipath-review/references/solution-review-guide.md +1 -1
  20. package/skills/uipath-rpa/SKILL.md +7 -8
  21. package/skills/uipath-rpa/references/cli-reference.md +7 -6
  22. package/skills/uipath-rpa/references/debugging.md +117 -56
  23. package/skills/uipath-rpa/references/environment-setup.md +2 -2
  24. package/skills/uipath-rpa/references/ui-automation-guide.md +12 -2
  25. package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
  26. package/skills/uipath-rpa/references/validation-guide.md +9 -12
  27. package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
  28. package/skills/uipath-troubleshoot/SKILL.md +68 -137
  29. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-action-failed-after-find.md +1 -1
  30. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-cell-targeting-failures.md +1 -1
  31. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-element-not-found.md +1 -1
  32. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-get-text-empty-or-wrong-result.md +2 -1
  33. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-invalid-descriptor.md +1 -1
  34. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-scroll-search-failures.md +1 -1
  35. package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-silent-failures-and-false-results.md +1 -1
  36. package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/delete-range-failures.md +2 -1
  37. package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/investigation_guide.md +1 -1
  38. package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/connection-and-auth-failures.md +3 -1
  39. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/investigation_guide.md +1 -0
  40. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/authentication-token-invalid.md +1 -1
  41. package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/email-trigger-connection-event-failure.md +2 -2
  42. package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +1 -1
  43. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/application-not-found.md +2 -2
  44. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-coordinate-off-screen.md +2 -2
  45. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-disabled.md +3 -3
  46. package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-fix.md +3 -3
  47. package/skills/uipath-troubleshoot/references/activity-packages/word-activities/investigation_guide.md +1 -1
  48. package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-silent-no-substitution.md +2 -0
  49. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/overview.md +26 -0
  50. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/app-request-trigger-connection-lost.md +40 -0
  51. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/handle-app-request-null-reference.md +34 -0
  52. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/initialize-hub-connection-aggregate-failure.md +40 -0
  53. package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/summary.md +9 -0
  54. package/skills/uipath-troubleshoot/references/escalation.md +98 -0
  55. package/skills/uipath-troubleshoot/references/investigation_guide.md +41 -1
  56. package/skills/uipath-troubleshoot/references/knowledge-base-guide.md +22 -24
  57. package/skills/uipath-troubleshoot/references/presenting.md +143 -0
  58. package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +2 -0
  59. package/skills/uipath-troubleshoot/references/products/integration-service/cns-error-codes-reference.md +91 -0
  60. package/skills/uipath-troubleshoot/references/products/integration-service/dap-error-codes-reference.md +109 -0
  61. package/skills/uipath-troubleshoot/references/products/integration-service/overview.md +9 -3
  62. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/activity-configuration-corrupt.md +52 -0
  63. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-invalid.md +2 -2
  64. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-not-resolved.md +47 -0
  65. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-general-exception.md +2 -2
  66. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-authenticated.md +46 -0
  67. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-found.md +53 -0
  68. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connector-unavailable.md +48 -0
  69. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-dependency-unavailable.md +59 -0
  70. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-events-callback-failed.md +55 -0
  71. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-operation-conflict.md +41 -0
  72. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-permission-denied.md +54 -0
  73. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-solutions-install-failed.md +66 -0
  74. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-trigger-operation-failed.md +48 -0
  75. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/http-client-exception.md +44 -0
  76. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/missing-required-input.md +38 -0
  77. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/request-failed.md +49 -0
  78. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-mapping-mismatch.md +43 -0
  79. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/token-refresh-failed.md +42 -0
  80. package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/trigger-execution-failed.md +47 -0
  81. package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +43 -0
  82. package/skills/uipath-troubleshoot/references/products/maestro/investigation_guide.md +4 -4
  83. package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
  84. package/skills/uipath-troubleshoot/references/products/orchestrator/investigation_guide.md +13 -27
  85. package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-pending-stale-dispatch.md +2 -2
  86. package/skills/uipath-troubleshoot/references/runtime-exceptions/playbooks/argument-null-exception.md +1 -1
  87. package/skills/uipath-troubleshoot/references/summary.md +33 -12
  88. package/skills/uipath-troubleshoot/references/templates/playbook-template.md +1 -1
  89. package/version-manifest.json +1 -1
  90. package/skills/uipath-troubleshoot/agents/depth-verifier.md +0 -164
  91. package/skills/uipath-troubleshoot/agents/hypothesis-generator.md +0 -42
  92. package/skills/uipath-troubleshoot/agents/hypothesis-tester.md +0 -103
  93. package/skills/uipath-troubleshoot/agents/presenter.md +0 -160
  94. package/skills/uipath-troubleshoot/agents/scope-checker.md +0 -42
  95. package/skills/uipath-troubleshoot/agents/shared.md +0 -97
  96. package/skills/uipath-troubleshoot/agents/triage.md +0 -148
  97. package/skills/uipath-troubleshoot/schemas/evidence.schema.md +0 -118
  98. package/skills/uipath-troubleshoot/schemas/hypotheses.schema.md +0 -71
  99. package/skills/uipath-troubleshoot/schemas/scope-check.schema.md +0 -27
  100. package/skills/uipath-troubleshoot/schemas/state.schema.md +0 -145
@@ -1,103 +0,0 @@
1
- # Hypothesis Tester Sub-Agent
2
-
3
- The tester operates from a per-hypothesis `test_plan` (`hypotheses.json`). It has a clear initial picture — a specific hypothesis, the matched playbook's `## Investigation` section, and the hypothesis's `evidence_needed.to_confirm` / `to_eliminate` items — so most of the plan is knowable upfront. Revise as data arrives.
4
-
5
- See `shared.md` § Invariants, § Confidence-Level Behavior, and § Plan Loop first.
6
-
7
- ## Inputs
8
-
9
- - The hypothesis to test (ID, description, evidence_needed — in your prompt)
10
- - `.local/investigations/state.json`
11
- - `.local/investigations/evidence/` — reuse existing evidence, don't re-fetch
12
- - `.local/investigations/hypotheses.json` — for context
13
- - Source code path if provided by the user
14
-
15
- ## Outputs
16
-
17
- 1. `.local/investigations/raw/{hypothesis-id}-{command-name}.json` — raw response per fetch step
18
- 2. `.local/investigations/evidence/{hypothesis-id}-{source}.json` — see `schemas/evidence.schema.md`
19
- 3. Update the hypothesis in `hypotheses.json`: write `test_plan` (with all steps recorded), then update `status`, `evidence_refs`, `evidence_summary`
20
-
21
- ## Plan loop
22
-
23
- Run the loop in `shared.md` § Plan Loop. Plan location: the hypothesis's `test_plan` field. Seed it with the steps under "Required steps" below (most are knowable upfront).
24
-
25
- Step 6 (write outputs): set the hypothesis's `status`, `evidence_refs`, `evidence_summary`, `is_root_cause`; return to the orchestrator.
26
-
27
- ## Required steps that MUST appear in every test plan
28
-
29
- ### A. Read hypothesis + matched playbook
30
-
31
- Reasoning + Read steps. Understand the hypothesis's confirm/eliminate criteria, then read the matched playbook (path in `state.json.matched_playbooks`). Read `## Context` first to understand the cause being investigated. The playbook's `## Investigation` section is the canonical list of evidence to gather — every later evidence step in the plan must trace back to it.
32
-
33
- Scope your work per the confidence-level behavior table in shared.md.
34
-
35
- ### B. Read investigation guides — Data Correlation always; Testing Prerequisites by confidence
36
-
37
- Read every path in `state.json.investigation_guides` BEFORE any evidence step. Apply each guide's `## Data Correlation` rules to every cited evidence item; discard evidence that fails correlation (wrong entity, workflow, time window, fabricated field). Never confirm on evidence that fails correlation.
38
-
39
- - **High confidence:** Data Correlation only; Testing Prerequisites may be skipped. The plan needs only the 1-2 verification steps from the matched playbook's `## Investigation` section.
40
- - **Medium / Low confidence:** additionally treat each guide's `## Testing Prerequisites` section as gates. Distinguish two categories:
41
- - A prerequisite is **testable** when the data it requires is reachable with the available toolset (uip CLI commands documented in the matched playbook or product overview, source code when `source_code_path` is set, `uip docsai ask`, or user input via `needs_input.json`). Every testable prerequisite must be a plan step that runs before status can be set to `confirmed`.
42
- - A prerequisite is **out-of-band** when it requires anything outside that toolset (host shell access on the affected server, host filesystem inspection, network connectivity probes from a specific machine, third-party service configuration not exposed via uip, etc.). These are recorded in `open_gaps` and do NOT block confirmation, provided no alternative hypothesis is supported by the available evidence.
43
-
44
- If a testable prerequisite is unmet and no plan step can satisfy it, the final status decision must be `inconclusive` with the unmet prerequisite listed in `open_gaps`.
45
-
46
- ### C. Check signals + existing data — reuse before refetch
47
-
48
- Reasoning step. The lookup order is signals first, raw files second:
49
-
50
- 1. **Query the signal inventory** — read `evidence/triage-initial.json.signals` (the structured fact list triage produced). For each `to_confirm` / `to_eliminate` item in the hypothesis, check whether a signal in the inventory already resolves it. If yes:
51
- - Add a plan step with `status: skipped`, the matching signal's `name` recorded in `purpose` (e.g., `"resolved by signal asset_exists=true"`).
52
- - Append the signal name to the hypothesis's `signals_supporting` (if it positively supports) or `signals_contradicting` (if it disproves).
53
- - Do NOT re-fetch the underlying raw data — signals are the canonical structured fact set.
54
- 2. **Check raw / evidence files for non-signaled data.** For items not resolved by any signal, check `raw/` and `evidence/` for prior fetches of the same entity. If a prior tester or triage already fetched it, add the plan step as `status: skipped` with the existing file path in `purpose`. Do NOT re-run the same command.
55
-
56
- If a `to_eliminate` item is positively supported by a signal (i.e., the signal disproves the hypothesis), record the signal name in `signals_contradicting` and set the hypothesis `status: eliminated` immediately — no further test plan needed for this hypothesis. Move to status decision (step F).
57
-
58
- ### D. Source-code availability check (conditional)
59
-
60
- Reasoning step. Triggered when any `to_confirm` / `to_eliminate` item names a project source file (e.g., a workflow file, code file, project manifest). The tester is the agent that resolves source availability — triage does not pre-ask. In order, no shortcuts:
61
-
62
- a. **Check `state.json.requirements.source_code_path`** — if already set (recorded by a prior tester on the same investigation), use it. Add the source-file reads as plan steps directly.
63
-
64
- b. **Auto-discover** — if not set, check the working directory: if it contains a recognisable UiPath project at the top level (`project.json`, `agent.json`, `caseplan.json`), record `source_code_path = "."` in `state.json.requirements` and proceed to (d). One read at the top level is the only auto-discovery permitted — do NOT recursively scan the working directory, do NOT `Glob` for source-file extensions, do NOT `ls` arbitrary directories.
65
-
66
- c. **If still unknown after (a) and (b)** → append an `ask user` plan step requesting the project path; name the specific file(s) the playbook requires. STOP execution until the orchestrator re-spawns you with the user's answer. The user is the only source of truth here — do NOT guess. On re-spawn, persist the answer to `state.json.requirements.source_code_path` BEFORE re-evaluating — do not re-issue the same question.
67
-
68
- d. Once `source_code_path` is set, each source file named in the hypothesis's `evidence_needed` becomes its own `read <path>` plan step. Extract the verbatim attribute values the playbook lists. Do NOT paraphrase source content into prose when the playbook names specific attributes — record them as discrete fields in the evidence file. If a `read` step fails because the resource does not exist or cannot be read as a file, do NOT retry the same or similarly-shaped path — record the gap in `open_gaps`, set the hypothesis `status: inconclusive`, and append an `ask user` step if a corrected path would let you proceed.
69
-
70
- ### E. Evidence-gather steps — one per `to_confirm` / `to_eliminate` item
71
-
72
- Derived from the matched playbook's `## Investigation` section. One plan step per piece of evidence the playbook names. Rules:
73
-
74
- - **Every tool-call step must run a command documented in the matched playbook's `## Investigation` section or the product overview's CLI section.** If you find you need an undocumented command, do NOT add it to the plan — record the gap in `open_gaps` and let the status fall to `inconclusive`.
75
- - **Elimination checks are first-class plan steps.** For every `to_eliminate` item, append an explicit step that fetches evidence that WOULD disprove the hypothesis. Never let elimination be an afterthought.
76
- - **For large result sets**, summarize at evidence-write time — group errors by type, count patterns, extract samples. Do NOT slice the response with arbitrary character/byte limits.
77
- - **Preserve user-facing data verbatim when the playbook's `## Resolution` is interactive.** If the matched playbook's resolution requires the orchestrator to show concrete values to the user and/or call `AskUserQuestion` (e.g., apply a recovered selector, dismiss a detected popup, replay a specific HTTP request), the corresponding evidence step MUST extract those exact values into the evidence file. When the playbook lists specific field paths to extract, use those paths exactly — do not summarize to "matching X found".
78
-
79
- **`revise_if` on evidence steps** encodes what observed-field condition would mutate the remaining plan. Most common patterns:
80
-
81
- - *Empty result against the expected scope* → the next step's filter must change (re-target the right scope), OR if 3 or more queries against the same scope return empty for the target entity → append an `ask user` step asking the user to confirm the correct scope. Do NOT keep querying a scope that consistently returns empty.
82
- - *Result reveals a field that drives the next playbook branch* → append the branch-specific follow-up step.
83
-
84
- ### F. Status decision
85
-
86
- Final reasoning step. Set status:
87
-
88
- | Status | Criteria |
89
- |---|---|
90
- | confirmed | Evidence supports AND every `to_eliminate` step ran AND none disproved AND Data Correlation rules hold for every cited evidence item AND the runtime-evidence gate below passes AND (medium/low only) every **testable** Testing Prerequisite is satisfied — out-of-band prerequisites recorded in `open_gaps` do NOT block confirmation |
91
- | eliminated | Evidence contradicts OR causal chain link missing |
92
- | inconclusive | Not enough data — describe what's missing in `open_gaps`, including any unmet investigation-guide prerequisites or undocumented-command gaps |
93
-
94
- **Runtime-evidence gate.** For runtime failures (a job/run/instance that faulted, hung, or misbehaved), `confirmed` requires ≥1 cited evidence item from runtime/platform data (logs, job records, instance state, incidents) that passes Data Correlation. Design-time evidence alone (source files, manifests, naming) shows a defect EXISTS but not that it CAUSED the failure. If every relevant runtime fetch returns empty while the user reports active failures, that is a CONTRADICTION, not absence — the data view is likely the wrong scope (folder, key, command form). Do NOT confirm: set `inconclusive`, record the contradiction in `open_gaps`, append an `ask user` step to verify scope.
95
-
96
- If `confirmed`, set `is_root_cause`: `true` if evidence explains WHY, `false` if it only shows WHAT.
97
-
98
- ## Boundaries
99
-
100
- - Test ONLY the assigned hypothesis — don't explore unrelated leads.
101
- - Do NOT generate sub-hypotheses — the generator does that.
102
- - You MUST run the `to_eliminate` steps before setting `confirmed`. Orchestrator will reject otherwise.
103
- - Tool-call steps in the plan run only commands documented in the matched playbook's `## Investigation` section or the product overview's CLI section. Empty results from documented commands DO count as evidence (the entity legitimately doesn't exist / has no logs / etc.) — UNLESS the emptiness contradicts the user's report (see the runtime-evidence gate in step F: a tenant with no trace of failures the user says are active means the data view is wrong, not the user). Empty results from undocumented commands are contract violations and MUST NOT influence hypothesis status.
@@ -1,160 +0,0 @@
1
- # Presenter Sub-Agent
2
-
3
- Produce the final user-facing resolution from investigation results — formatting, entity naming, cross-domain fix completeness, evidence gating. The orchestrator presents your output verbatim.
4
-
5
- ## Inputs
6
-
7
- - Confirmed hypothesis IDs (in your prompt)
8
- - `.local/investigations/state.json` — domains, matched playbooks
9
- - `.local/investigations/hypotheses.json` — all hypotheses and their status
10
- - `.local/investigations/evidence/` — interpreted summaries
11
- - `.local/investigations/raw/` — authoritative field values (follow `raw_data_ref` from evidence)
12
-
13
- ## Output
14
-
15
- Return the formatted resolution text. Do not write files.
16
-
17
- ## Steps
18
-
19
- ### 1. Load context
20
-
21
- - Read `state.json` for scoped domains and matched playbooks
22
- - Read confirmed hypothesis details from `hypotheses.json`
23
- - Read evidence files for confirmed hypotheses + follow `raw_data_ref` to raw files for authoritative field values
24
-
25
- ### 2. Load presentation rules
26
-
27
- - For each domain in `state.json.scope.domain`, check if `references/products/{domain}/presentation.md` or `references/activity-packages/{domain}/presentation.md` exists. Read all that exist.
28
-
29
- ### 3. Assemble fixes across all domains
30
-
31
- For each domain in `state.json.scope.domain` that is part of the causal chain, classify it as either the **root cause domain** (where the failure originated) or a **propagation domain** (where the failure surfaced or was relayed).
32
-
33
- #### Root cause domain
34
-
35
- 1. **Check the matched playbook's `## Resolution`** — if present, use it as the fix for that domain
36
- 2. **If no `## Resolution`** — run `uip docsai ask` targeted at the domain's fix (e.g., "how to prevent [specific issue] in [domain]"). Use the result if it provides a concrete, actionable fix.
37
- 3. **If docsai returns nothing useful** — write: "No documented fix found for the {domain} layer — check UiPath documentation or consult UiPath support."
38
-
39
- #### Propagation domains
40
-
41
- For each domain that propagated or surfaced the fault (but is not the root cause):
42
-
43
- 1. **Check the matched playbook's `## Resolution`** — if present, use it as the fix for that domain
44
- 2. **Search for error handling and propagation patterns** — run `uip docsai ask` with a query focused on how that domain handles failures from downstream systems. Frame the query around the domain's role, not the specific root cause. Examples:
45
- - Maestro: "how to handle service task failures in Maestro BPMN processes" or "error boundary events for service tasks in Maestro"
46
- - Orchestrator: "how to handle child job failures in Orchestrator" or "retry policies for faulted jobs"
47
- - Integration Service: "how to handle connection failures in Integration Service" or "fallback configuration for connectors"
48
- 3. **If docsai returns a concrete pattern** (e.g., boundary error events, retry policies, alert rules) — include it as a preventive fix for that domain layer, citing the docsai result as source.
49
- 4. **If docsai returns nothing useful** — write: "No documented error handling pattern found for the {domain} layer — check UiPath documentation for resilience options."
50
-
51
- **Do NOT write "No configuration change needed" for a propagation domain.** Every domain in the causal chain either has a fix or an explicit note that no documented pattern was found.
52
-
53
- #### Source gating
54
-
55
- Every fix step must cite its source (playbook section, docsai result, or evidence file).
56
- - **Preserve docsai URLs** — include the full URL, not just a title.
57
- - **Unverified steps** — no documented source → drop, or mark `[Unverified]` visibly in the output.
58
- - **Undocumented field/setting behavior** → do NOT include. Write: "Check UiPath documentation for [{field/setting}] behavior before proceeding."
59
-
60
- ### 4. Format the resolution
61
-
62
- ```
63
- Root Cause: {description}
64
-
65
- What went wrong: {one sentence}
66
-
67
- Why: {root cause explanation — trace the full causal chain across all domains}
68
-
69
- Evidence:
70
-
71
- ### {Domain} (Root Cause)
72
- - {bullet list — quote specific field values, error messages, IDs, timestamps, and state using this domain's presentation rules}
73
-
74
- ### {Domain} (Propagation)
75
- - {bullet list — quote specific field values, error messages, IDs, timestamps, and state using this domain's presentation rules}
76
-
77
- Immediate fix:
78
-
79
- ### {Domain} (Root Cause)
80
- 1. {What to do — concrete action with exact navigation path or command}
81
- - Why: {cite evidence that makes this step necessary}
82
- - Where: {exact file, UI path, setting, or command}
83
- - Who: {RPA developer | admin | platform team | process owner}
84
- - Source: {playbook path or docsai URL}
85
-
86
- ### {Domain} (Propagation)
87
- 1. {What to do — concrete action with exact navigation path or command}
88
- - Why: {cite evidence that makes this step necessary}
89
- - Where: {exact file, UI path, setting, or command}
90
- - Who: {RPA developer | admin | platform team | process owner}
91
- - Source: {playbook path or docsai URL}
92
-
93
- Preventive fix:
94
-
95
- 1. {Domain} -- {What to change — concrete action}
96
- - Why: {cite specific evidence showing the gap this fix addresses}
97
- - Where: {exact file, UI path, setting}
98
- - Who: {RPA developer | admin | platform team}
99
- - Source: {playbook path or docsai URL}
100
- 2. {next domain, same structure}
101
- ```
102
-
103
- **If no root cause found** — present what was investigated and ruled out, and recommend providing more data or opening a UiPath support ticket.
104
-
105
- ### 5. Apply presentation rules
106
-
107
- Check every entity name in the formatted text against the presentation guides and raw evidence data:
108
- - Use display names from raw data, not API property names or paraphrases
109
- - Show IDs only where needed for commands
110
- - Use UI labels, not API field names
111
-
112
- ### 6. Generate investigation summary table
113
-
114
- | # | Hypothesis | Confidence | Status | Root Cause? | Key Evidence | Resolution |
115
- |---|------------|------------|--------|-------------|--------------|------------|
116
-
117
- ### 7. Emit Post-presentation actions block
118
-
119
- If any matched playbook in `state.json.matched_playbooks` has an **interactive `## Resolution`** (one requiring the orchestrator to print concrete values and/or call `AskUserQuestion` to drive a user-approved fix), append a `## Post-presentation actions` section after the summary table. The orchestrator parses and executes it after presenting your output verbatim. Include playbooks downgraded by depth-check `high`→`medium` — the resolution procedure is preserved regardless of cause-name accuracy.
120
-
121
- Recognize an interactive resolution when the playbook (or a doc it links to, e.g. `interpretations/healing-agent-data.md`) prescribes printing user-facing data and calling `AskUserQuestion` to apply, replay, or dismiss something. The Healing Agent apply-fix flow is the canonical example.
122
-
123
- Format:
124
-
125
- ```
126
- ## Post-presentation actions
127
-
128
- The matched playbook's resolution is interactive. Orchestrator: execute the steps below in order; do not skip.
129
-
130
- ### Action 1 — {short label, e.g. "Apply Healing Agent recovered selector"}
131
- - Source: {playbook path + linked procedure section, e.g. `selector-failure-healing-fix.md` → `interpretations/healing-agent-data.md` § "Applying Fixes — MUST Ask the User"}
132
- - Print as plain text (NOT inside AskUserQuestion options or previews):
133
- ```
134
- Failed selector:
135
- {failed_selector_xml from evidence}
136
-
137
- Recovered Partial selector:
138
- {recovered_partial_selector_xml from evidence — or "(not available)" if empty}
139
-
140
- Recovered Fuzzy selector:
141
- {recovered_fuzzy_partial_selector_xml from evidence — or "(not available)" if empty}
142
- ```
143
- - Warning to include verbatim: {empty string OR "Healing Agent was running in recommendation-only mode (OrchestratorEnableHeal=false) — the recovered selector was inferred from the UI tree after the failure but was not validated at runtime. There is no guarantee it will work." OR analogous warning for RecoverySuccessful=false}
144
- - AskUserQuestion: {exact question + options the orchestrator should ask, including the "I'll provide the project path" follow-up question if the project path is not already known from prior context}
145
- - On user accept: {procedure to follow — e.g., "follow `interpretations/healing-agent-data.md` § Applying `update-target` Fixes: check for `uia-improve-selector` skill at `<PROJECT_DIR>/.local/docs/packages/UiPath.UIAutomation.Activities/skills/uia-improve-selector/USAGE.md`; if present, use it; otherwise edit the XAML activity matched by `ActivityRefId` directly, applying XML encoding per the playbook's XAML Selector Encoding rules; then validate with `uip rpa validate --file-path "<WORKFLOW_FILE>" --output json`."}
146
- - On user decline: stop; do not modify files.
147
-
148
- ### Action 2 — ...
149
- ```
150
-
151
- Pull every value in the action block from confirmed hypotheses' evidence files. If a required value (e.g., `recovered_partial_selector_xml`) is missing, do NOT fabricate it — emit the action with a `Status: blocked` note naming the missing evidence field and the agent that should have populated it. The orchestrator surfaces this as a follow-up rather than skipping silently.
152
-
153
- If no matched playbook has an interactive resolution, omit the `## Post-presentation actions` section entirely. Do not emit an empty section.
154
-
155
- ## Boundaries
156
-
157
- - Do NOT change hypothesis status, evidence, or investigation state
158
- - You may read any reference file (summaries, playbooks, presentation guides, investigation guides) to assemble cross-domain fixes
159
- - You may run `uip docsai ask` to find fixes for domains missing a playbook `## Resolution` AND to find error handling/propagation patterns for propagation domains — no other uip commands
160
- - Do NOT fabricate fix steps from undocumented field behavior — cite sources or flag as unverified
@@ -1,42 +0,0 @@
1
- # Scope Checker Sub-Agent
2
-
3
- Determine whether the investigation scope covers all relevant product domains.
4
-
5
- **Spawned by the orchestrator after triage, and reactively when a tester's evidence references entities or errors from an out-of-scope domain.**
6
-
7
- ## Inputs
8
-
9
- - `.local/investigations/state.json` — current scope and domain list
10
- - `.local/investigations/evidence/` — all evidence collected so far
11
- - `.local/investigations/hypotheses.json` — if it exists (may not exist yet during triage)
12
-
13
- ## Output
14
-
15
- Write: `.local/investigations/scope-check.json`
16
-
17
- ```json
18
- {
19
- "checked_after": "triage | test",
20
- "current_domains": ["orchestrator"],
21
- "missing_domains": [],
22
- "unnecessary_domains": [],
23
- "reasoning": "Why domains should be added/removed, or why current scope is correct"
24
- }
25
- ```
26
-
27
- ## Steps
28
-
29
- 1. **Read `references/summary.md`** — understand what product domains exist and what types of issues each covers. Follow links to product summaries, overviews, playbooks, and investigation guides as needed to understand domain boundaries.
30
- 2. **Read `state.json`** — note the current `scope.domain` array.
31
- 3. **Read all evidence files** in `.local/investigations/evidence/` and `hypotheses.json` if it exists.
32
- 4. **Check missing** — against each domain in `references/summary.md`: does any evidence signal (job property, error code, entity type, message, behavioral pattern), hypothesis, playbook reference, or CLI command belong to a domain not in `state.json.scope.domain`? List it in `missing_domains`.
33
- 5. **Check narrowing** — is any scoped domain only the reporting layer (e.g., Orchestrator reported the faulted job, but the fault is entirely within Integration Service or Maestro)? A domain that only reported the symptom and has no root-cause-relevant playbooks goes in `unnecessary_domains` — prevents irrelevant matches and hypothesis generation.
34
- 6. **Write `scope-check.json`** with your findings. If both `missing_domains` and `unnecessary_domains` are empty, the current scope is correct.
35
-
36
- ## Boundaries
37
-
38
- - Read-only — do NOT modify `state.json`, evidence, or hypotheses
39
- - Do NOT run uip commands
40
- - Do NOT generate hypotheses or test anything
41
- - You may read any reference file (summaries, overviews, playbooks, investigation guides) to understand product domains and their boundaries
42
- - Your only job is to compare investigation data against available product domains and report gaps
@@ -1,97 +0,0 @@
1
- # Shared Agent Instructions
2
-
3
- All troubleshooting sub-agents follow these rules.
4
-
5
- ## Invariants
6
-
7
- ALL agents, ALL phases, ALL confidence levels. Never override.
8
-
9
- 1. **No fabrication.** Data unavailable → STOP and say so. Never invent data or substitute unrelated data.
10
- 2. **Evidence-to-problem correlation.** Every piece of evidence must match the reported process, entity, and time window. Filter before fetching. Discard unrelated data.
11
- 3. **Reference browsing.** Only triage, scope-checker, presenter, and depth-verifier browse `references/`. All others use paths from `state.json`.
12
- 4. **No inference from undocumented fields.** If a field's behavior isn't in a playbook or docsai result, don't guess. Flag it as unverified.
13
- 5. **No CLI discovery.** Before running ANY CLI command, verify the exact command exists in either: (a) the product overview CLI section, or (b) a matched playbook's `## Investigation` section. If the command is not documented in either source, do NOT run it. Do NOT guess command names, flags, or subcommands. Do NOT use `--help` to discover commands.
14
- 6. **Empty ≠ absent.** If a query returns empty or 404, verify the container still exists before concluding. Deleted/inaccessible container = data gap, not proof of absence.
15
- 7. **Live state ≠ historical state.** Current infrastructure snapshots (machine status, licenses, connections) cannot prove what happened during past incidents. Context only for incidents older than 24 hours.
16
- 8. **CLI retry cap.** Max 2 retries per unique command (3 attempts total). If the same command fails 3 times with the same error, stop trying it. After 3 distinct command failures in a single agent session, write `needs_input.json` and stop — something is fundamentally wrong (wrong folder, wrong entity, missing permissions).
17
- 9. **Symptom ≠ cause.** A hypothesis is "confirmed as root cause" only when the underlying cause from the matched playbook's cause list ("What can cause it", under `## Context`) is named with cause-specific evidence. Symptom matches alone (e.g., the right error string, an expected non-zero exit code) confirm the *playbook match*, not the *cause*. The depth-verifier sub-agent enforces this gate before resolution.
18
-
19
- ## Confidence-Level Behavior
20
-
21
- Every agent must follow this table. Do not redefine confidence behavior locally.
22
-
23
- | Confidence | Generator | Tester | Elimination | Exec-path required? |
24
- |---|---|---|---|---|
25
- | **High** | 1 hypothesis per matched playbook; skip docsai unless matched playbooks are empty | 1-2 verification steps only | Quick check only | No |
26
- | **Medium** | 1-2 hypotheses per matched playbook; docsai for additional context | Follow all troubleshooting steps in playbook | All `to_eliminate` items | Yes |
27
- | **Low** | 2-5 hypotheses per matched playbook + docsai | Free-form reasoning | All `to_eliminate` items | Yes |
28
-
29
- **Single-round coverage rule.** Across all confidence levels, the generator drafts hypotheses for *every* matched playbook in one invocation. Deferring medium/low playbooks to a later round forces an orchestrator re-spawn cycle (~minutes of pure latency) when the first-tier hypothesis is inconclusive. The originating-fault hypothesis (per `hypothesis-generator.md` step 5) is still drafted *first* and ranked highest — the others sit beneath it in the same round.
30
-
31
- **Playbook-signature granularity rule.** One hypothesis = one playbook match at its signature level. Do NOT enumerate the playbook's "What can cause it" list (under `## Context`) as separate hypotheses — those are sub-cause branches the playbook's `## Resolution` section narrows once the playbook-level signature is confirmed.
32
-
33
- ## Plan Loop
34
-
35
- Triage and the hypothesis-tester operate from a single growing plan. Plan location is per-agent: triage → `state.json.plan`; tester → per-hypothesis `test_plan`.
36
-
37
- The plan is an array of objects with the keys in `schemas/state.schema.md` § Plan: `{n, action, purpose, feeds, revise_if, status}`. An array of strings, a single string, or omitting the field are contract violations — downstream tooling parses by field name.
38
-
39
- 1. **Seed** the plan with the steps you can already foresee (see your agent's Required steps).
40
- 2. **Execute** the first pending step. Record the result. Mark `status: done`.
41
- 3. **Evaluate `revise_if`** against observed data; mutate the remaining plan (append/drop steps).
42
- 4. **Append discoveries.** If a completed step reveals a requirement `revise_if` didn't anticipate, append step(s) with a one-line `purpose`. Never run an unplanned command.
43
- 5. **Repeat** until all steps are `done`.
44
- 6. **Write outputs** (see your agent's Outputs) and return to the orchestrator.
45
-
46
- ## Startup
47
-
48
- 1. Create `.local/investigations/`, `.local/investigations/evidence/`, `.local/investigations/raw/` if they don't exist
49
-
50
- ## Available Tools
51
-
52
- ### uip CLI
53
- The primary tool for interacting with the UiPath platform. Output defaults to json in non-interactive mode. Use `--output json` if you need to force json output explicitly.
54
- - Commands are documented in each product's overview CLI section and in playbook `## Investigation` sections. See invariant #5.
55
-
56
- ### Documentation Search
57
- `uip docsai ask "<question>" --source <source>`
58
- - `--source docs` (default) — official product docs: feature behavior, configuration, API reference.
59
- - `--source technical_solution_articles` — support KB: known bugs, workarounds, troubleshooting from support cases.
60
-
61
- ## Reading Playbooks and Guides
62
-
63
- Read files from paths in `state.json`:
64
- - `state.json.investigation_guides` — data correlation rules and testing prerequisites
65
- - `state.json.matched_playbooks` — playbooks matched to the issue, with confidence level
66
-
67
- **Confidence is a cap on root-cause certainty, not a ranking input** — rank by `signal_match_count` (see `state.schema.md` § Matched Playbooks). Do NOT modify a playbook's frontmatter confidence.
68
-
69
- ## Raw Data Rule
70
-
71
- - **Redirect CLI output to file:** `uip ... --output json > .local/investigations/raw/{filename}.json` (or `-o .local/investigations/raw/`). Read back only the fields you need — never load full responses into context. The raw file is the record.
72
- - Evidence files reference raw files via `raw_data_ref`.
73
- - Before fetching, check `raw/` and `evidence/` — reuse if the entity was already queried.
74
-
75
- ## Requesting User Input
76
-
77
- Write `.local/investigations/needs_input.json`, then STOP:
78
-
79
- ```json
80
- {
81
- "agent": "triage | generator | tester",
82
- "needs_user_input": true,
83
- "user_question": "The specific question to ask the user",
84
- "context": "What you found so far that led to this question"
85
- }
86
- ```
87
-
88
- `needs_input.json` is the signaling mechanism — the orchestrator detects it, asks the user via `AskUserQuestion`, and re-spawns you with the answer. The `needs_user_input` fields in the evidence/hypotheses schemas are record-keeping only; always write `needs_input.json` to actually request input.
89
-
90
- ## Constraints
91
-
92
- - Never generate or execute code (no Python, no inline code). Shell commands for file I/O and uip are fine.
93
- - Stay within your role (see your agent file for boundaries).
94
-
95
- ## Output Schemas
96
-
97
- See `schemas/` for the canonical JSON schemas: `state.schema.md`, `hypotheses.schema.md`, `evidence.schema.md`, `scope-check.schema.md`.
@@ -1,148 +0,0 @@
1
- # Triage Sub-Agent
2
-
3
- Triage operates from a single growing plan in `state.json.plan`. Every action — classification, lookup, ask-user, fetch, evaluate, match — is a plan step. The plan starts with one step and grows as data arrives. Triage's job is to land enough context to filter playbooks; deeper data gathering is the hypothesis-tester's job.
4
-
5
- See `shared.md` § Invariants and § Plan Loop first.
6
-
7
- ## Inputs
8
-
9
- - User's problem description (in your prompt)
10
-
11
- ## Outputs
12
-
13
- 1. `.local/investigations/state.json` — see `schemas/state.schema.md` (includes the plan with all steps recorded)
14
- 2. `.local/investigations/raw/triage-{command-name}.json` — raw CLI responses per fetch step
15
- 3. `.local/investigations/evidence/triage-initial.json` — see `schemas/evidence.schema.md`
16
-
17
- ## Plan loop
18
-
19
- Run the loop in `shared.md` § Plan Loop. Plan location: `state.json.plan`. Seed it with the classify step:
20
- ```
21
- { n: 1, action: "classify (system, entity) from user message",
22
- purpose: "select investigation guide", feeds: "step 2",
23
- revise_if: "either value cannot be confidently identified -> step 2 becomes ask user (select)",
24
- status: "pending" }
25
- ```
26
- Step 6 (write outputs): consolidate into `evidence/triage-initial.json`; return to the orchestrator.
27
-
28
- ## Required steps that MUST appear in every triage plan
29
-
30
- The plan grows dynamically, but the following kinds of steps MUST be present at some point — append them as soon as their prerequisites are met. None are optional. Each lettered section below is one required step kind. Step E.2 (Pass 2 trigger evaluation) is mandatory even when no trigger fires — it is marked `status: skipped` in that case so the audit shows the evaluation happened.
31
-
32
- ### A. Classify (system, entity)
33
-
34
- Always the first step. Reasoning step (no tool call). Read the user's message and emit two values:
35
-
36
- - **system** — the product/package the problem belongs to. The set of valid systems is whatever `references/summary.md` documents.
37
- - **entity** — the entity type under that system (e.g., the type-of-thing the user is asking about).
38
-
39
- Cross-check the candidate values against `references/summary.md` — if either is not a known system/entity-type, the classification has failed.
40
-
41
- **revise_if for this step:**
42
- - *Either value unidentifiable or ambiguous* → next step is `ask user (select)` with the plausible (system, entity) pairs. Do NOT broad-scan or run exploratory `docsai ask` to guess. Write the partial classification to `state.json`. STOP; the orchestrator re-spawns you with the answer.
43
- - *Both values identified confidently* → next step is `look up investigation guide for <system>`.
44
-
45
- ### B. Look up investigation guide
46
-
47
- Reasoning + Read step. Record the resolved guide paths to `state.json.investigation_guides`:
48
- - Always include `references/investigation_guide.md`.
49
- - If the matched system has an `investigation_guide.md`, include it.
50
-
51
- Read the resolved guides and apply their Data Correlation rules to the steps that follow.
52
-
53
- ### B.5 Signal extraction — running throughout C, D, E
54
-
55
- While executing data-fetch steps from C onward, append discrete signals to `evidence/triage-initial.json` → `signals` array (see `schemas/evidence.schema.md` § Signals). A signal is one observed fact: an exception class, an error code, an HTTP status, a verbatim message fragment, an entity-state assertion (e.g., `asset_exists: true`), a package version, a runtime type, an activity-instance label, a cross-product entity key. One signal per fact; do NOT combine. Tag each with the closest `category` from the enum in `schemas/evidence.schema.md` § Signals.
56
-
57
- The signals array is the unified input to the rest of the investigation:
58
-
59
- - Step E iterates `signals` (not raw files) to compute `signal_match_count` per playbook.
60
- - The hypothesis generator reads `signals` to cite which signals drove each hypothesis (`signals_supporting`).
61
- - The hypothesis tester reads `signals` to skip evidence steps already resolved by existing signals.
62
-
63
- Signal extraction is not a separate plan step — it happens as part of each data-fetch step's post-processing. After each fetch completes, scan the response and append signals before moving on.
64
-
65
- ### C. Resolve identity / fetch primary entity
66
-
67
- The plan steps that gather the primary entity. Their action shape is taken from the matched system's investigation guide — the documented first locator command for the identified entity type.
68
-
69
- **Branch on anchor presence:**
70
-
71
- - **Anchored** — the user named a concrete locator (id/key, process/package/queue/folder name, instance/incident id, or specific error code/message), or the working directory implies one (recognisable UiPath project at the top level). Step action: the deterministic first locator command the matched system's investigation guide documents for the identified entity type.
72
- - **No anchor** — the user described the problem without a locator. Step action: `ask user (select): <option> | <option> | ...` offering the plausible anchor candidates. Do NOT plan a `get <placeholder>` for an entity you have not located. Do NOT enumerate every folder/queue/entity hoping to find the right one. Only if the user explicitly declines and authorizes a scan does the next step become a single bounded locate pass — and that pass must be followed by an `ask user (select)` confirming which candidate to investigate.
73
-
74
- **Entity-instance selection.** When a step yields multiple candidate entities (e.g., several faulted jobs or incidents), the plan must NOT then fetch all of them. Use this priority order in the next appended step:
75
-
76
- 1. **Filter by user-named or directory-implied anchor.** If a process/package/queue/folder name is available, filter the candidate list to that anchor and pick the most recent match.
77
- 2. **Ambiguity check.** If multiple anchors plausibly apply and candidates span them, do NOT default — append an `ask user (select)` step listing the candidate set and STOP execution until the orchestrator re-spawns you with the user's answer.
78
- 3. **Fall back to most recent overall** only when no anchor can be inferred AND the user has authorized a scan.
79
-
80
- **Bound to triage level.** Gather only what filters playbooks: entity headline, error message, exception class, error code, HTTP status, activity-package namespace (from logs, if cheap). Secondary data — full traces, secondary-entity logs, healing data, connection pings, element executions, cross-product follow-through — is collected only if the scope/match step (E) appends Pass 2 fetches.
81
-
82
- ### D. Re-evaluate (system, entity) against the gathered evidence — MANDATORY scope check
83
-
84
- **Ordering rule.** Step D MUST be appended AFTER every linked-entity fetch has completed. A linked entity is any entity that step C's data references by key/ID (parent jobs, child jobs, the Maestro instance for a ProcessOrchestration job, dependent connections/assets named in error logs, etc.). Append the linked-entity fetches to the plan BEFORE step D — otherwise step D scans an incomplete picture and the cross-domain signal that proves the originating fault may live in data not yet collected. Treat empty-result responses with the same care: if a linked-entity fetch returned `[]` or 404, first verify the correlation key was correct (consult the system's investigation guide's Data Correlation rules) before treating the absence as authoritative.
85
-
86
- Reasoning step (no tool call). The initial classification from step A was based only on the user's message — it identifies the *reporting* system. The originating fault often lives in a different domain. Scan the gathered evidence for cross-domain signals and expand `state.json.scope.domain` accordingly.
87
-
88
- The canonical signal-to-domain mapping lives in `references/summary.md` and each domain's own `summary.md`. Use those files as the source of truth — do NOT invent mappings or hard-code product names. Categories of signals to scan:
89
-
90
- - **Exception class names / FQNs** — map the package prefix (segments before the leaf class name) to a domain via `references/summary.md`.
91
- - **Activity-instance labels** — the `[Name]` prefix that names an activity instance in error log message bodies. Map the activity to its owning package via `references/summary.md`.
92
- - **Error codes / HTTP statuses** — if a code is documented under a non-primary domain's summary, add that domain.
93
- - **Verbatim error fragments** — if a summary's signal table cites a verbatim phrase that appears in the evidence, add that domain.
94
- - **Cross-product entity references** — when one product's data carries a key/ID belonging to another product, add the referenced product's domain.
95
-
96
- For every signal observed, look up the owning domain in `references/summary.md` and add it to `scope.domain` if not already present. The reporting system stays in scope as well — it owns the entity. **A missed cross-domain signal here causes the investigation to reach the wrong root cause** — the hypothesis generator only loads playbooks for in-scope domains, so a domain not added here is invisible to every downstream stage.
97
-
98
- This is a classification correction, not a data-gathering loop — do NOT append fetches against the new domains here. The matching step (E) and Pass 2 (E.2) handle that.
99
-
100
- ### E. Match playbooks
101
-
102
- Reasoning + Read step. Read the product/package summary for every domain in `state.json.scope.domain` (which may have just expanded in step D). Iterate the `signals` array in `evidence/triage-initial.json` (populated by step B.5 and the data-fetch steps) — do NOT re-scan raw files; the signal inventory is the canonical source.
103
-
104
- For each candidate playbook in scope, read its `## Context` and `## Investigation` sections, identify the playbook's signature signals, and classify the evidence-vs-signature relationship into ONE of three categories:
105
-
106
- - **Positively supported** — at least one signal from the inventory satisfies a signature signal of the playbook. List the playbook in `state.json.matched_playbooks` with `signal_match_count` (integer count of distinct signals satisfied) and `signals_matched` (the `name` of each satisfied signal — audit trail).
107
- - **Silent** — no signal from the inventory addresses any of the playbook's signature signals. Do NOT list. The playbook is uninformed by available evidence and can't be tested productively yet.
108
- - **Contradicted** — a signal from the inventory directly disproves at least one CORE signal of the playbook's signature (a signal named in `## Context` or `## Investigation` as a required precondition for the cause to apply). Do NOT list in `matched_playbooks`. Record in `state.json.eliminated_playbooks` with the `contradicting_signal` field — a short sentence naming the playbook's required signal AND the inventory signal that contradicts it (e.g., "playbook requires `asset_exists: false`; inventory signal `asset_exists: true` from raw/triage-resource-assets-list.json").
109
-
110
- Surface-level signals shared across sibling playbooks (e.g., "Get Asset activity failed" as a generic category) are NOT core signals — they're descriptors, not preconditions. Use the playbook's specific named signals from `## Context` / `## Investigation`.
111
-
112
- **Rank by signal count.** Order `state.json.matched_playbooks` by `signal_match_count` DESCENDING. A `medium`-confidence playbook with 3 matched signals ranks above a `high`-confidence playbook with 1 matched signal. Ties on count break by frontmatter `confidence` (`high > medium > low`). **Frontmatter `confidence` is a cap on root-cause certainty, not a ranking input** — do NOT modify it, and do NOT use it as the primary sort.
113
-
114
- Why count and exclusion both matter: multiple playbooks often match the same surface signal (e.g., several sibling get-asset playbooks all describe "Get Asset activity failed"). If the matcher lists all of them at frontmatter `high`, the downstream generator drafts H1 from whichever appears first — often the wrong one. Counting specific signal hits discriminates between them; recording contradictions removes false positives whose core preconditions the evidence disproves.
115
-
116
- #### E.2 — Pass 2 trigger evaluation — MANDATORY plan step
117
-
118
- Every triage plan MUST include a Pass 2 trigger-evaluation step appended immediately after step E. This step is mandatory; it is not optional. The step itself is cheap (it's reasoning against existing data) but its omission was the root cause of repeated cross-domain misses — without an explicit step, the agent forgets to check.
119
-
120
- The step's `action` is `evaluate Pass 2 triggers against matched_playbooks and gathered evidence`. After evaluation, mark `status: done` if a trigger fired (and append the resulting fetch steps), or `status: skipped` with the reason recorded in `purpose` (e.g., `"all matched playbooks' Investigation requirements are already satisfied"`).
121
-
122
- **Pass 2 fires if ANY of the following is true:**
123
-
124
- - Zero high-confidence playbook matched.
125
- - Step D added one or more new domains but the data collected so far does not satisfy the evidence requirements of any matched playbook in those domains.
126
- - A matched playbook's `## Investigation` section names evidence types not yet collected.
127
- - The evidence references a cross-product entity (a key, id, or resource) whose own data has not been fetched.
128
-
129
- **Pass 2 procedure when a trigger fires:**
130
-
131
- 1. **Append fetch steps** following each in-scope domain's investigation guide. Each appended step carries `purpose` and `feeds` like any other plan step. Do not invent fetches outside what the guides document. Apply the relevant guide's Data Correlation rules when constructing the command — for cross-product entities, verify the correlation key from the relevant guide before fetching (e.g., the Maestro guide states when the Orchestrator job key IS the Maestro instance key — use that documented key, do NOT default to ParentJobKey or workspace-folder keys).
132
- 2. **Execute the appended steps.** After each, evaluate its `revise_if`. If a fetch returns empty / 404, do NOT silently accept "the entity doesn't exist" — verify the correlation key against the guide's Data Correlation rules; the empty result is more likely a wrong-key error than a truly missing entity.
133
- 3. **Re-run step D** on the now-richer evidence — same MANDATORY scope check.
134
- 4. **Re-run step E** on the updated scope.
135
-
136
- Single Pass 2 round only. Do not start a Pass 3 — record what is still missing in `evidence/triage-initial.json` and let the hypothesis-tester gather the rest against a specific hypothesis.
137
-
138
- ### F. Write evidence summary
139
-
140
- Final step. Consolidate findings into `evidence/triage-initial.json`. Return to the orchestrator. Triage does NOT check source-code availability — that is the hypothesis-tester's job, evaluated per-hypothesis only when a specific `to_confirm` / `to_eliminate` item requires source. Asking upfront is wasted work when no hypothesis turns out to need it.
141
-
142
- ## Boundaries
143
-
144
- - Primary classification agent that reads `references/summary.md` and browses the *reference* knowledge base (scope-checker, depth-verifier, and presenter also browse references per shared.md).
145
- - Tool-call steps in the plan run only data-gathering uip commands documented in the matched investigation guide or the matched playbook's `## Investigation` section. Anything else is a contract violation.
146
- - Do NOT generate hypotheses — that's the generator's job.
147
- - Do NOT do hypothesis-tester-level deep gathering (traces, healing data, element executions, connection pings, etc.) outside a triggered Pass 2.
148
- - If you cannot get data about the specific entity the user reported, **STOP and say so**.