Files
PaperClipAI/ui
a88bde1def fix(ui): label the deliberate-wait recovery kind from the recovery classification change
the recovery classification change added `deliberate_wait_without_target` to
`ISSUE_RECOVERY_ACTION_KINDS` without updating its UI consumer. The two
`Record<IssueRecoveryActionKind, string>` maps in the recovery card are
exhaustive, so the two branches typechecked in isolation but broke the
moment they met:

  IssueRecoveryActionCard.tsx(117,7): error TS2741: Property
  'deliberate_wait_without_target' is missing ...

Give the kind first-class copy instead of letting it fall through to the
generic `missing_disposition` headline. Per the spec this kind means a run
stopped to wait on something that does not exist, and the original owner
gets bounded disposition-repair attempts — so while one of those attempts
is live or queued the display derivation already resolves it to the
recessed `in_progress` state, which is exactly this task's thesis. No
derivation change was needed; the liveness logic is kind-agnostic.

Prevention: the break was invisible to both branches' own test runs, so add
a guard that renders every kind in the shared union and asserts each gets
distinct, non-empty copy. Verified by mutation — pointing the new kind at
the generic headline fails the guard.

Verified: tsc clean, 218 UI tests across 9 affected suites, the recovery back end's
disposition-repair server suite, and all three token gates clean.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-15 19:19:38 +00:00
..

@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.