mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-26 18:31:34 +01:00
PAP-13568 Phase 4b. Render a workspace-validation diagnosis card on the run
page from the run's own `resultJson.workspaceValidation` evidence even when the
source issue has no live recovery action (blocked / pending-interaction issues,
per L3) — a failed workspace-validation run never renders nothing.
- Enrich the shared IssueRecoveryActionCard: lead with the plain-language reason,
expected-vs-found branches with ahead/behind counts (read defensively — optional
until Phase 2 lands them), and parked-by provenance (which issue/run left the
worktree on the live branch).
- New lossless "Restore recorded branch" CTA (Contract A) for a clean divergence,
wired to a new `restore` reconcile mode; the parked branch keeps its commits.
Hidden when the recorded branch is contended (steer to isolated re-issue). The
dangerous `override` stays demoted behind its reason-prompt popover.
- Run-page fallback reuses the same card via a presentational synthetic action
built from run evidence; no resolve menu (no persisted action to resolve).
- Thread the restore handler through IssueDetail → IssueChatThread so the issue
thread card gains the same enrichment.
- Component tests (50) + a Storybook panel for the card states; screenshots on
the issue.
Coordinates with Phase 2 (PAP-13575): calls
POST /execution-workspaces/:id/reconcile-branch { mode: "restore" } and reads
optional provenance.aheadCount/behindCount. UI-only; no server files touched.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@paperclipai/ui
Published static assets for the Paperclip board UI.
What gets published
The npm package contains the production build under dist/. It does not ship the UI source tree or workspace-only dependencies.
Storybook
Storybook config, stories, and fixtures live under ui/storybook/.
pnpm --filter @paperclipai/ui storybook
pnpm --filter @paperclipai/ui build-storybook
Typical use
Install the package, then serve or copy the built files from node_modules/@paperclipai/ui/dist.