fix(maestro-case): centralize the create-on-missing 'already exists' adopt contract (two live-run gaps)#1833
fix(maestro-case): centralize the create-on-missing 'already exists' adopt contract (two live-run gaps)#1833song-zhao-25 wants to merge 1 commit into
Conversation
|
Claude finished @song-zhao-25's task in 2m 7s —— View job PR Review: fix(maestro-case): centralize create-on-missing adopt contract
SummaryCentralizes the "already exists" adopt contract for the create-on-missing path into Change-by-Change Review1.
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | OK | Not modified |
| E2E Tests | Medium | No coder_eval task covers the adopt path (existing skill, not blocking) |
| Skill Body | OK | Not modified |
| References & Assets | OK | New §3b is well-placed, correctly linked, no duplication |
| Repo Hygiene | OK | No secrets, no cross-skill refs, changes scoped to one skill |
Issues for Manual Review
- CLI behavior accuracy. The stale-resource-declaration workaround (§3b step 2) — deleting
resources/solution_folder/package/<Name>.jsonandresources/solution_folder/process/<category>/<Name>.jsonbefore re-runningproject add— is documented as "verified live, CLI 1.198." Future CLI versions may fix this collision-check behavior, which would make the deletion step unnecessary but harmless. Worth watching. - Downstream leg adoption. The PR description notes that open legs (feat(maestro-case): build missing API workflows inline during planning #1802, feat(maestro-case): add RPA process leg to create-on-missing #1803, feat(maestro-case): build missing agentic processes inline (stacked on #1622) #1723) should slim their per-type blockquotes to the same pointer shape on next rebase. Reviewers familiar with those PRs should confirm the contract is compatible.
Conclusion
Clean, well-scoped docs-only fix. The centralization removes a duplication vector that would otherwise re-break with each new creatable-kind leg. The two gaps (kind-check blind spot, stale-declaration refusal) are clearly root-caused and the remediation is specific. Approve — the missing test task is a medium gap but doesn't block this fix.
dfdbf0e to
f6ed914
Compare
…adopt contract; fix two live-run gaps Surfaced by the api-workflow L4 suite (T2b, on-disk-unregistered residual) and verified live on CLI 1.198; both gaps also affect the merged agent leg: 1. registry list --local enumerates only .uipx-registered projects — an unregistered on-disk residual is invisible to it, so the adopt path's kind-check is now two-step (registered name -> list --local Category; unregistered dir -> on-disk project.uiproj ProjectType). 2. uip solution project add refuses 'Project name already exists' even when the name is absent from .uipx Projects[] — the collision check keys on stale resource declaration files left by a prior registration. Remediation: delete resources/solution_folder/package/<Name>.json + the kind's process/<category>/<Name>.json, re-run project add (verified: 'Added successfully'), then resources refresh regenerates them. The corrected contract now lives ONCE, kind-agnostically, in registry-discovery.md § Create-on-Missing 3b; agent/planning.md's residual blockquote shrinks to a pointer + agent-specific tokens. Open create-on-missing legs (#1802 api-workflow, #1803 rpa, #1723 agentic) inherit on their next rebase and should slim their per-type blockquotes to the same pointer shape. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
f6ed914 to
3fd5114
Compare
Summary
Two gaps in the create-on-missing "already exists" adopt path, surfaced by the api-workflow L4 suite (T2b: on-disk-unregistered residual) and root-caused live on CLI 1.198. Both affect the already-merged agent leg too. Docs-only, 2 files.
registry list --localenumerates only.uipx-registered projects — an unregistered on-disk residual (the exact case the residual handles) is invisible to it. Fixed: two-step kind-check — registered name →list --localCategory; unregistered dir → on-diskproject.uiprojProjectType.project addstale-decl refusal.uip solution project addrefusesProject name already existseven when the name is absent from.uipxProjects[]— its collision check keys on stale resource declaration files left by a prior registration, not the manifest. Verified live: deletingresources/solution_folder/package/<Name>.json+ the kind'sprocess/<category>/<Name>.jsonmakes the same command succeed ("Added successfully");resources refreshregenerates them. (Arguably a CLI bug — the collision check could key on the manifest; docs carry the remediation either way.)Structure
The corrected contract now lives once, kind-agnostically, as
registry-discovery.md§ Create-on-Missing 3b ("Already exists" = adopt).agent/planning.md's residual blockquote shrinks to a pointer + agent-specific tokens (error verbs, kind markers). This removes the duplication that let each new creatable-kind leg re-author (and re-break) the same recovery logic.Downstream
Merge-first by design: the open create-on-missing legs — #1802 (api-workflow), #1803 (rpa), #1723 (agentic) — inherit on their next rebase and should slim their per-type residual blockquotes to the same pointer shape. Future legs link §3b instead of re-authoring.
Runtime evidence:
case_coding_agent_tests/create-on-missing-api-workflow-test/T2b-ondisk-unregistered/run-log.md+results.md(adopt completed end-to-end via the corrected procedure: project add "Added successfully" → refresh → rediscoverSource:local→ validate Valid).🤖 Generated with Claude Code