feat(bpmn): derive package metadata with refresh - #2387
Conversation
4f03df6 to
72fca32
Compare
72fca32 to
9bae081
Compare
9bae081 to
68dfa31
Compare
bb85637 to
381d267
Compare
381d267 to
7e2c2b6
Compare
7e2c2b6 to
a5b37d0
Compare
|
Claude finished @DevMomo's task in 2m 41s —— View job PR Review: feat(bpmn): derive package metadata with refresh
SummaryThis PR introduces Change-by-Change Review1.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | OK | No changes; existing frontmatter is valid |
| E2E Tests | OK | 3 contract guard tests added; existing task suite covers the skill |
| Skill Body | OK | Step 5 cleanly integrated; count updated |
| References & Assets | OK | All 5 references consistently updated; links verified |
| Repo Hygiene | OK | CODEOWNERS present; no secrets; no cross-skill refs; CI job added |
Issues for Manual Review
- CLI contract accuracy: The review cannot verify that
uip maestro bpmn refreshactually exists with the documented behavior (atomic four-file writes, idempotence, GUID validation, deduplication). The PR description references UiPath/cli#3331 and UiPath/cli#3356 — confirm those are merged or will merge before this skill layer ships. - "root manual start event" qualifier: The guide now consistently says "root manual" rather than just "root." Confirm this matches the CLI's actual filter — i.e., that refresh truly skips non-manual (e.g., message, timer, signal) root start events.
Conclusion
Clean PR. The refresh command is consistently documented across all 5 reference files with proper ownership boundaries, and the contract guard covers the key invariants (ordering, scope, atomicity, delegation). No issues found that require changes. Approve.
Summary
This layer makes
uip maestro bpmn refresh <project-path> --output jsonthe explicit boundary between authored BPMN source and generated package metadata:packconsumes refreshed files; it does not own their generation.What refresh generates
entry-points.jsonbindings_v2.jsonoperate.jsonpackage-descriptor.jsonThe supported source has exactly one project-root
.bpmnfile, one or more root processes, and at least one root manual start event overall. Every root manual start event must have exactly one valid GUIDuipath:entryPointId; refresh emits one entry point for each.Why
The skill previously referred only to an unspecified metadata-regeneration path. That left room to hand-author generated JSON, assume
packwould create missing metadata, or operate on package files that no longer matched the BPMN.This layer gives those four files one clear owner and one explicit regeneration command.
Failure and repeat-run behavior
Refresh validates the proposed four-file set before replacing files. Changed files are staged and replaced as one operation; if a later replacement fails, already changed files are restored and temporary files are removed.
Running refresh again without source changes is idempotent. A failure is treated as a BPMN or project precondition failure: fix the source, validate again, and rerun refresh rather than editing generated JSON.
Scope
Refresh is local, offline, and provider-neutral. It does not log in, discover or import tenant resources, choose a connection, invoke a connector operation, edit BPMN source, or upload/publish/deploy/debug/run the process. It derives only from identities already authored into the project.
Stack and dependencies
bindings_v2.json.Verification
git diff --check: passed.