Files
agentic-dev/docs/work/epics/walking-skeleton/10-web-next-wiring/_story.md
Danijel Martinek 99180887f3 docs(work): decompose platform-retrofit and walking-skeleton epics
platform-retrofit: 8 stories / 18 tasks (spec bundle into docs/product,
single-version release-please before deletions, demo feature removal,
web-next auth shell, optional cores, work-tree archive, library traces,
agent-doc rewrite). walking-skeleton: 11 stories / 28 tasks across
workspaces, discovery, core-runner-protocol, runner app, editor, and
the flagship connect-to-selection e2e; builds on platform-retrofit
(prose dependency note — cross-epic frontmatter unsupported).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016j8z4VHjedXDTjEDNg7qHK
2026-07-12 12:28:51 +02:00

3.7 KiB

id, epic, title, type, status, feature, depends-on, blocks, created
id epic title type status feature depends-on blocks created
10-web-next-wiring walking-skeleton web-next wiring — connect UX, staged progress, editor route user-story todo web-next
03-workspaces-feature-core
07-runner-lifecycle-events-and-realtime
08-discovery-feature
09-editor-package
11-flagship-e2e
2026-07-12T10:24:14Z

Goal

Wire the skeleton into apps/web-next: workspace list + connect form + staged progress (cloning → installing → scanning → starting preview, with named error states), realtime push of runner status, feature routers composed into the appRouter, bindAll() for both features, and the editor route /w/[workspace] hosting the board (PRD Q2 — a real route, the editor's permanent home).

Why

This story is where the user stories become visible: honest staged progress instead of a hung spinner (user story 2, ui-gap §5), a clear named error state instead of a blank board (user story 5), and the real component rendered by the repo's own toolchain on a real route (user story 3). Dev-seed mode + the process provisioner keep pnpm dev + fixtures free of cloud resources (user story 8).

Done when

  • bindAll() in apps/web-next binds workspaces + discovery in production and dev-seed modes; boot assertion green in both (PRD Success criteria); dev-seed + process provisioner boots with pnpm dev and no cloud resources.
  • Both feature routers are composed into the appRouter; schemas imported from the use-case files, never redefined inline.
  • Workspace list + connect form (name + git URL + PAT) built from feature ui/ hooks + connected components per docs/guides/building-feature-ui.md.
  • Staged progress UI driven by the realtime channel: cloning → installing → scanning → starting preview, plus adapter-ready; named error states for bad URL, bad token, install failure — never a blank board.
  • Editor route /w/[workspace] hosts the board: registry via getRegistry, frame node requests render-frame of the discovered component with default props; clicking the component in the iframe selects it and the selection state names it.
  • Stories + component tests per conformance rules.
  • pnpm typecheck && pnpm lint && pnpm test && pnpm conformance && pnpm fallow:audit && pnpm coverage:diff all pass after each task.

In scope

  • bindAll() + appRouter composition + provisioner selection (process provisioner as the dev/CI default).
  • Workspaces UI: list, connect form, staged progress, error states, realtime subscription.
  • Editor route /w/[workspace] composing @repo/editor with registry + frame data.

Out of scope

  • Full connect UX states — org walls, trust prompt, env manager (workspaces-and-connections).
  • The Playwright flagship spec (story 11).
  • web-tanstack wiring (not in PRD scope).

Tasks

  • Wire workspaces + discovery into apps/web-next: bindAll() in production + dev-seed modes (dev-seed + process provisioner boots via pnpm dev with no cloud resources), feature routers composed into the appRouter, realtime channel plumbed to the browser; boot assertion green in both modes; tests.
  • Add the workspace list + connect form + staged progress UI (feature ui/ hooks + connected components per building-feature-ui.md): staged progress cloning → installing → scanning → starting preview driven by realtime push, named error states (bad URL, bad token, install failure — never a blank board); stories + component tests.
  • Add the editor route /w/[workspace] hosting the board: registry via getRegistry, frame node requesting render-frame of the discovered component with default props, click-in-iframe → selection overlay + selection state naming the component; tests.