fix(uipath-rpa): make the report turn one message and chain the output check into the gate - #3103
fix(uipath-rpa): make the report turn one message and chain the output check into the gate#3103danmunteanu1 wants to merge 6 commits into
Conversation
…t check into the gate
|
Claude finished @danmunteanu1's task in 2m 33s —— View job Review of PR #3103
SummaryDocumentation-only change to the uipath-rpa skill that collapses post-gate report turns from 4–12 messages into 1–2 by (1) chaining the output check ( Change-by-Change Review1.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | OK | No frontmatter changes |
| E2E Tests | OK | Documentation-only change to turn-batching instructions; no new CLI workflows or commands introduced — existing tests still cover the same build/validate/run behavior |
| Skill Body | OK | SKILL.md change is minimal and consistent with execution-maps changes |
| References & Assets | OK | All relative links verified. New anchors (cli-reference.md#capturing-the-verdict, environment-setup.md step 3) exist. No orphaned files |
| Repo Hygiene | OK | No secrets, no cross-skill references, no UIA boundary violations, changes scoped to uipath-rpa only |
Issues for Manual Review
- Bench validation: The expected effect (report tail collapses from 4–12 messages to 1–2) cannot be verified in CI — it depends on live agent turn behavior. The PR's 30-run bench data supports the change; a follow-up bench after merge would confirm the improvement.
- Interaction with fix(uipath-rpa): document both run/debug payload shapes (Helm vs Studio Desktop) and drop the --output-filter mandate #3102 and fix(uipath-rpa): make Rule 22 a one-turn read so the greenfield map fits its 10-turn gate #3055: The PR notes these are independent but share pointers. Whichever merges second may need a trivial re-anchor. Not a blocker, but the merger should verify links after rebase.
Conclusion
Clean, well-scoped documentation change. Every modification is consistent across the four journey maps and the SKILL.md completion section. Links verified, no UIA boundary violations, no cross-skill coupling. The inlined marker names (Low observation in item 4) are a justified tradeoff given the bench data. Approve.
…ry-written context files alone after the gate
…o regenerate prompt
Why
In a 30-run headless bench of
uipath-rpa(5 journeys x 3 replicates x 2 skill arms, Opus 5), the turns spent after the lastvalidate/buildwere 4-12 per run on every journey and both arms: 60run/debugcalls, 54 shell checks, 46 memory-fileWrites, 20project-context.mdwrites, 14AGENTS.mdwrites plus 9 shell edits of it, and 29Read/Grepcalls back into the skill's own references. Turn-by-turn shape of a typical greenfield XAML run after the gate:Every one of these is a separate assistant message, i.e. a full context replay. Cost tracks message count (~10 s and one replay per message), so this tail was the largest fixed overhead on the short journeys: greenfield XAML took 15-18 messages end to end against the map's 5-turn budget, and 6-8 of the excess were here.
Three causes, all in the map's report row and the memory section:
cat/ls/Test-Path'd the result file in separate turns (the--output-filterretries from fix(uipath-rpa): document both run/debug payload shapes (Helm vs Studio Desktop) and drop the --output-filter mandate #3102 added more).project-context.md, thenAGENTS.md, then a shellcat >> AGENTS.md, often preceded by aGrep+Readofenvironment-setup.md § Project Context Discoveryto recover the marker names and the metadata-comment format (29 reference re-reads at wrap-up).uip rpa runpayload/flag notes (uip-rpa-run-output-filter-null-errors.md,uip-rpa-run-verdict-shape.md) on first-try-clean, card-only builds. The § Cross-session memory rules never said the save happens inside the report message, nor that a clean gate on card-covered activities qualifies nothing.Fix (docs only)
execution-maps-guide.md:run --skip-buildfollowed bycatof every file the workflow was asked to write. "The output check is a link of this chain, never its own turn." § Gate ≠ runtime proof updated to match.catoutput, then emit in the same message as parallel tool calls:Write.claude/rules/project-context.md∥WriteAGENTS.md∥ qualifying memoryWrites ∥ § Completion Output text. The two facts agents kept re-reading (<!-- discovery-metadata: cs=N xaml=N deps=N -->first line,<!-- PROJECT-CONTEXT:START/END -->markers) are named inline with the pointer toenvironment-setup.mdstep 3, and the row states that noRead/Grepprecedes these writes because the agent created every file they describe. Brownfield keeps "the discovery agent wrote them in T1 — do not rewrite."Writes inside the report message, never one file per turn; "a first-try clean gate on card-covered activities qualifies nothing — skip the save entirely";uip rpaflag shapes and run/debug payload fields added to Never save (cli-reference.md owns them; a gap there is a/uipath-feedbackreport).SKILL.md § Completion Output: the memory-save sentence now says what qualifies (often nothing) and that the saves, the context files and the report text are one message with nothing running after it.Rule numbering, journey turn numbering (T1-T4), anchors and inbound links are unchanged. No flavor override touches either file.
Expected effect
On the bench data: the report tail collapses from 4-12 messages to 1-2 (the gate chain plus one report message; the UIA journey keeps its window-cleanup turn). Combined with #3102 (which removes the
--output-filterretries feeding cause 1 and the memory topics feeding cause 3), greenfield XAML lands at 8-10 messages instead of 15-18.Follow-up commits from the combined bench
5486c4dd6— gate rows spell the fullrun --file-path "<RELATIVE_FILE>" --project-dir "<PROJECT_DIR>" --skip-build --output json(an agent ranrun --skip-buildwithout the required--file-pathand paid a retry); brownfield report row says not to read, edit or rewrite the discovery-written context files after the gate (staleness is judged by file and dependency counts at the next session, per environment-setup § Project Context Discovery).a63ff648f—agents/uipath-project-discovery-agent.md: the generated context's Quick Reference nameduip rpa run-fileanduip rpa get-errors. Both verbs exist but are hidden from--help, so the main agent judged them wrong and spent 4–10 post-gate turns "correcting" the files it had been told not to touch. The template now uses the standard-loopuip rpa run --file-path …/uip rpa validate --file-path …, the header line "Regenerate after significant project changes." is gone (it invited exactly that regeneration), andlist-instances --format jsonbecameinstances list --output json(--formatis not a flag of that verb).Measured on a combined arm (#3055 + #3102 + this PR), 12 runs
--output-filterevaluation failures: 0 of 12 (13 of 15 on main). Memory-file writes: 2 (27 on main), emitted inside the report message. Post-gate turns: 2–6 in 11 of 12 runs (4–17 on main). Greenfield XAML end to end: 9 messages, $1.38–1.47 (main 15–18 messages, $2.36–2.42). Brownfield XAML aftera63ff648f: 10 messages, 2-turn tail, zero context-file edits with the discovery agent running. All 12 runs succeeded with correct outputs.Relationship to other PRs
Verification
node scripts/check-skill-links.mjs: all links resolve.npm run skills:validate: OK.