Skip to content

fix(process-mining): grade the real add-table verb and fix required tags - #2545

Open
Cellcote wants to merge 1 commit into
mainfrom
fix/pm-evalset-add-table-verb
Open

fix(process-mining): grade the real add-table verb and fix required tags#2545
Cellcote wants to merge 1 commit into
mainfrom
fix/pm-evalset-add-table-verb

Conversation

@Cellcote

Copy link
Copy Markdown
Contributor

Split out of #2544 (part 1 of 2). The linter change that would have caught this
is in the companion PR; this one is the eval-set fix on its own.

Why

The process-mining eval set looked flaky across the two most recent nightly runs
(2026-08-05,
2026-08-10).
It wasn't flake. Only 2 of 6 tasks moved, each by exactly one criterion:

Task 2026-08-05 2026-08-10
skill-pm-add-table-queryable 1.0 0.778 FAILURE
skill-pm-custom-app-pipeline-e2e 0.833 FAILURE 1.0

1. skill-pm-add-table-queryable graded a verb that doesn't exist

The 3.0-weight criterion required uip pm apps model add-table. The catalog has
uip pm apps data-model add-table; apps model is the semantic model
(fields / get / update) and has no add-table child. The skill teaches the
correct verb in both SKILL.md (Rule 1) and references/data-model.md.

So the eval rewarded a hallucinated verb and penalised agents that followed the
skill:

  • 08-05 — the agent typed apps model add-table, it errored, it retried with
    apps data-model add-table. The regex matched the failed attempt → passed.
  • 08-10 — the agent went straight to the correct verb → matched nothing →
    0.778, FAILURE.

The green run was the wrong result. Fixed to apps\s+data-model\s+add-table,
and the same correction applied to the task description.

2. Tag hygiene

Five of six tasks were missing required tags or using values outside the closed
vocabularies in tests/README.md §Tag Taxonomy (mode:fix, lifecycle:extend,
lifecycle:maintain are not valid; tier was absent on four). Those tasks were
invisible to make targets, coverage reports and evalboard drilldown.

Task Before After
add_table_queryable mode:build, lifecycle:extend integration, mode:build, lifecycle:setup
app_types_discovery_smoke smoke, mode:diagnose, discover smoke, mode:diagnose, lifecycle:discover
mapping_fix_in_place mode:fix, lifecycle:maintain integration, mode:diagnose, lifecycle:setup
query_group_by_sugar mode:diagnose smoke, mode:diagnose, lifecycle:discover
transform_fix_apply_not_reingest mode:fix, lifecycle:maintain integration, mode:diagnose, lifecycle:setup

The two repair tasks follow the precedent set by
uipath-api-workflow/diagnose/runtime_fix (mode:diagnose for "here is an
error, fix it"), with lifecycle:setup because they mutate tenant state. The
bare discover tag duplicating lifecycle:discover was dropped.
custom_app_pipeline_e2e was already correct.

Verification

Verified statically against the uip catalog (1.200.0-dev.8173): the corrected
verb pm apps data-model add-table is present, the old one is not.

Passing-run claim: the tasks were not re-run against a tenant for this PR —
the change is to a grader regex and to tags, neither of which alters agent
behaviour. skill-pm-add-table-queryable should be watched on the next nightly;
it is the one whose score this moves (0.778 → expected 1.0).

Not addressed here

From the same investigation, deliberately out of scope:

  • The two runs aren't comparable. 08-05 ran gemini-3.5-flash on uip 8093;
    08-10 ran gpt-5.6-terra on 8173, and mapping_fix_in_place gained two
    criteria in between. With one replicate per task, a single criterion flips
    the whole task. Pin the model or run ≥3 replicates before calling anything flaky.
  • custom_app_pipeline_e2e's "inspect the transformations" criterion is
    incidental to the task goal and cost the 08-05 run a FAILURE for no behavioural
    reason — drop it or make it advisory (pass_threshold: 0).
  • Coverage — separate PR.

🤖 Generated with Claude Code

`skill-pm-add-table-queryable` required `uip pm apps model add-table`, which is
not a verb — the CLI has `uip pm apps data-model add-table` (`apps model` is the
semantic model: fields/get/update). The eval therefore rewarded a hallucinated
verb and penalised agents that followed the skill: on 2026-08-05 the agent typed
the wrong verb, errored, retried correctly, and scored 1.0; on 2026-08-10 it went
straight to the correct verb and scored 0.778 FAILURE. That 3.0-weight criterion
was the entire delta between the two runs.

Tags: all six process-mining tasks now carry the required
`skill` + `tier` + `mode:*` + `lifecycle:*` from the closed vocabularies in
tests/README.md. `mode:fix`, `lifecycle:extend` and `lifecycle:maintain` were
outside them and `tier` was missing on four tasks, so those tasks were invisible
to `make` targets, coverage reports and evalboard drilldown.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Cellcote
Cellcote requested a review from a team as a code owner August 10, 2026 12:30
@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Cellcote's task in 2m 27s —— View job


PR Review: fix(process-mining): grade the real add-table verb and fix required tags

  • Read review criteria and project conventions
  • Read full diff and changed files
  • Verify tag taxonomy against tests/README.md
  • Verify corrected verb against uip catalog
  • Check for cross-skill references, secrets, broken links
  • Post review

Summary

Fixes a wrong CLI verb in the add_table_queryable grader regex (apps model add-tableapps data-model add-table) and corrects missing/invalid tags across 5 of 6 process-mining task YAMLs. The verb fix is verified against the uip catalog (1.200.0-dev.8173): pm apps data-model add-table exists at line 1156, pm apps model has no add-table child (only fields, get, update).

Change-by-Change Review

1. tests/tasks/uipath-process-mining/add_table_queryable.yaml

Severity: OK

Three changes, all correct:

  • Description (line 4): apps model add-tableapps data-model add-table — matches the catalog and the skill's own documentation.
  • Tags (line 16): Added missing integration tier and replaced invalid lifecycle:extend with lifecycle:setup. Both values are in the closed taxonomy. lifecycle:setup is appropriate — the task mutates tenant state (registers a table, triggers ingestion).
  • Grader regex (line 52): apps\s+model\s+add-tableapps\s+data-model\s+add-table — the critical fix. The old regex matched only the wrong verb.

2. tests/tasks/uipath-process-mining/app_types_discovery_smoke.yaml

Severity: OK

Tags (line 11): bare discoverlifecycle:discover. Correct — discover is not a valid flat tag; the taxonomy requires the lifecycle: prefix. Other tags (smoke, mode:diagnose) were already valid and unchanged.

3. tests/tasks/uipath-process-mining/mapping_fix_in_place.yaml

Severity: OK

Tags (line 19): mode:fix, lifecycle:maintainintegration, mode:diagnose, lifecycle:setup. All three changes are correct:

  • mode:fix is not in the taxonomy; mode:diagnose fits (the task presents an error to fix).
  • lifecycle:maintain is not in the taxonomy; lifecycle:setup fits (the task mutates a mapping on the tenant).
  • Added missing integration tier tag.

4. tests/tasks/uipath-process-mining/query_group_by_sugar.yaml

Severity: OK

Tags (line 11): Added smoke tier (was missing) and lifecycle:discover. Both correct — the task is a lightweight command-construction check (smoke-appropriate) and exercises read-only query construction (lifecycle:discover).

5. tests/tasks/uipath-process-mining/transform_fix_apply_not_reingest.yaml

Severity: OK

Tags (line 16): mode:fix, lifecycle:maintainintegration, mode:diagnose, lifecycle:setup. Same rationale as mapping_fix_in_place — error-fix scenario (mode:diagnose), mutates tenant state (lifecycle:setup), added missing integration tier.

What's Missing

Nothing identified. The changes are scoped precisely to the grader regex and tag hygiene. The PR description explicitly lists items deferred to follow-up PRs (linter improvements, e2e criterion cleanup, coverage expansion) — that's appropriate for a targeted fix.

Area Ratings

Area Status Notes
Frontmatter N/A No SKILL.md changes
E2E Tests OK Existing custom_app_pipeline_e2e.yaml provides e2e coverage; smoke coverage via app_types_discovery_smoke and now query_group_by_sugar
Skill Body N/A No skill content changes
References & Assets N/A No changes
Repo Hygiene OK No secrets, no cross-skill refs, changes scoped to the affected task YAMLs

Issues for Manual Review

  • Watch the next nightly for skill-pm-add-table-queryable. The PR description notes this task should move from 0.778 → 1.0 now that the regex matches the correct verb. Confirm on the next run.
  • mode:diagnose for repair tasks — the PR follows the precedent from uipath-api-workflow/diagnose/runtime_fix. This is a reasonable interpretation ("here is an error, fix it" = diagnosis), but worth confirming the team is aligned since mode:build could also apply to tasks that construct corrective commands.

Conclusion

Clean PR. The verb fix is verified against the catalog, the tag corrections all map to valid taxonomy values, and the rationale for each tag choice is sound. Approve.

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Claude finished @Cellcote's task in 3m 13s —— View job


Coder-eval task lint (advisory)

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

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

Evidence of passing run

⚠️ Partial — PR body states: "the tasks were not re-run against a tenant for this PR — the change is to a grader regex and to tags, neither of which alters agent behaviour. skill-pm-add-table-queryable should be watched on the next nightly; it is the one whose score this moves (0.778 → expected 1.0)."

The author explicitly documents why a re-run wasn't done and identifies which task to watch. The rationale is reasonable — regex and tag changes don't alter agent behavior — and the PR defers verification to the next nightly. Accepting the claim.

Per-task lint

tests/tasks/uipath-process-mining/add_table_queryable.yaml — verdict: OK

The core fix in this PR: command_pattern corrected from apps\s+model\s+add-table (nonexistent verb) to apps\s+data-model\s+add-table (catalog-verified ✅). Description updated to match. Tags fixed to include required tier (integration) and valid lifecycle:setup (was lifecycle:extend, not in taxonomy). Good mix of positive (command_executed, file_contains) and negative (command_not_executed) criteria.

tests/tasks/uipath-process-mining/app_types_discovery_smoke.yaml — verdict: OK

Tag fix only: bare discoverlifecycle:discover. All other tags were already correct.

tests/tasks/uipath-process-mining/mapping_fix_in_place.yaml — verdict: OK

Tag fix: mode:fix, lifecycle:maintainintegration, mode:diagnose, lifecycle:setup. Both old values were outside the closed taxonomy. New values align with the mode:diagnose precedent for "here is an error, fix it" tasks. Strong criteria set with 10 success criteria including positive and negative assertions.

tests/tasks/uipath-process-mining/query_group_by_sugar.yaml — verdict: OK

Tag fix: missing tier and lifecycle:* added (smoke, lifecycle:discover). mode:diagnose was already correct.

tests/tasks/uipath-process-mining/transform_fix_apply_not_reingest.yaml — verdict: OK

Tag fix: mode:fix, lifecycle:maintainintegration, mode:diagnose, lifecycle:setup. Same pattern as mapping_fix_in_place — consistent treatment of the two repair tasks.

CLI verb reachability

All command_pattern verbs across the 5 changed tasks verified against catalog (assets/uip-catalog-snapshot.json, 1.200.0-dev.8173):

  • pm apps data-model add-table ✅ (the fix)
  • pm ingestions create, pm app-types list, pm apps data-mapping get/update, pm files upload, pm apps delete/create, pm transformations get/update/apply, pm query run — all present ✅

Within-PR duplicates

No duplicate clusters detected. All 5 tasks exercise distinct operations (add-table registration, app-type discovery, mapping repair, query construction, transform repair).

Conclusion

✅ All 5 changed tasks pass the rubric. The verb fix on add_table_queryable is the substantive change — correcting a grader regex that rewarded a hallucinated CLI verb and penalized agents following the skill correctly. The tag fixes bring all 5 tasks into compliance with the closed tag taxonomy. Clean PR.


@Cellcote

Copy link
Copy Markdown
Contributor Author

Passing-run claim

Ran locally with coder-eval (experiments/default.yaml, tempdir sandbox, claude-sonnet-5, 1 replicate), on this branch merged with #2547:

skill-pm-add-table-queryable                 SUCCESS  1.000  turns=23

Same task, same agent, on main before this fix it scores 0.778 FAILURE — the 3.0-weight add-table criterion never fires. With data-model it is 1.000. That is the whole delta, reproduced.

Full process-mining set in the same run: 10/11 SUCCESS. All other tasks touched by this PR (tags only) scored 1.000:

skill-pm-app-types-discovery-smoke           SUCCESS  1.000
skill-pm-mapping-fix-in-place                SUCCESS  1.000
skill-pm-query-group-by-sugar                FAILURE  0.750   <- pre-existing, not this PR
skill-pm-transform-fix-apply-not-reingest    SUCCESS  1.000
skill-pm-custom-app-pipeline-e2e             SUCCESS  1.000

query_group_by_sugar is untouched here and its failure is unrelated to this change — details in a separate issue/PR.

Caveat: the local run used @uipath/cli@1.198.0 (public npm latest); CI builds from @uipath/cli@dev. The verbs this PR touches exist in both, so the result carries over.

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