Skip to content

Run 4: Integration

Full-flow stories (GEN-MEDIA-0001::0001.UC), grid inline edit (GEN-MEDIA-0001::0007.FS), removal (GEN-MEDIA-0002), REF::ITM integration stories, and remaining MDX descriptions.

#CriterionVerification CommandExpected Output
1On branch jmpicnic/uc-stories with Run 3 checkpoint commitgit -C <worktree> log --oneline -1 --grep='Run 3 complete'Commit hash
2Branch up-to-date with basegit -C <worktree> fetch origin jmpicnic/item-image-upload-components && git -C <worktree> merge-base --is-ancestor origin/jmpicnic/item-image-upload-components HEADExit 0
3All GEN-MEDIA-0003 stories existfind <worktree>/src/use-cases/general-behaviors/entity-media/view-entity-image -name '*.stories.tsx' | wc -l10
4All input/validation stories exist (Runs 1–2)find <worktree>/src/use-cases/general-behaviors/entity-media/set-entity-image -name '*.stories.tsx' | wc -l16
5All preview/confirm stories exist (Run 3)find <worktree>/src/use-cases/general-behaviors/entity-media/set-entity-image/000[56]-* -name '*.stories.tsx' | wc -l10
6ImageCellEditor wired to ImageUploadDialog — the cell editor must open the upload dialog on mount, not cancel immediately. If this check fails, stop and notify the user — tasks 4.7–4.10 and 4.16 cannot proceed.grep -c 'stopEditing.*true' <worktree>/src/components/canary/atoms/grid/image/image-cell-editor.tsx0 (placeholder stopEditing(true) removed)
ArtifactPathFormatDescription
entity-media description (final)entity-media/description.mdxMDXSection description with cross-cutting concerns (finalize stub from Run 1)
remove-entity-image UC descriptionremove-entity-image/description.mdxMDXRemove use case description
4 scenario descriptions0001-set-image/description.mdx, 0007-grid-inline-edit/description.mdx, 0001-remove-image/description.mdx, 0010-set-image/description.mdx (+ 0006-change-or-remove-image/description.mdx)MDXOne per new scenario
3 set-image storiesset-entity-image/0001-set-image/*.stories.tsxTypeScriptEnd-to-end framework stories
4 grid-edit storiesset-entity-image/0007-grid-inline-edit/*.stories.tsxTypeScriptGrid inline edit stories
3 remove storiesremove-entity-image/0001-remove-image/*.stories.tsxTypeScriptRemove image stories
2 REF::ITM create storiesreference/items/create-item/0010-set-image/*.stories.tsxTypeScriptVendored reference + canary
2 REF::ITM edit storiesreference/items/edit-item/0006-change-or-remove-image/*.stories.tsxTypeScriptCanary grid/detail composition
items.mdx updatereference/items/items.mdxMDXAdd ITM-0003 and ITM-0004 image entries
#TaskPersonaDepends OnStatusAcceptance Criteria
4.1Finalize entity-media/description.mdx — section description with cross-cutting concerns (permissions, concurrency) and links to all 3 use case descriptionsfePendingMDX renders, links resolve
4.2Create remove-entity-image/description.mdx — use case description with scenarios tablefePendingMDX renders, links to spec
4.3Create scenario directories: 0001-set-image/, 0007-grid-inline-edit/, 0001-remove-image/, 0010-set-image/, 0006-change-or-remove-image/ with description.mdx in eachfePending5 directories + 5 description.mdx files
4.40001-set-image/happy-path.stories.tsx — end-to-end with createUseCaseStories (Interactive/Stepwise/Automated)fe4.3PendingAll 3 variants render, automated play function passes
4.50001-set-image/replace-existing.stories.tsx — comparison layout, replacement flowfe4.4PendingShows desktop and mobile comparison
4.60001-set-image/cancel-and-warn.stories.tsx — Warn state confirmationfe4.4PendingPlay function exercises discard and return paths
4.70007-grid-inline-edit/double-click.stories.tsx — double-click opens dialogfe4.3PendingPlay function double-clicks cell, dialog opens, confirm updates row
4.80007-grid-inline-edit/enter-key.stories.tsx — Enter key triggerfe4.7PendingKeyboard accessibility demonstrated
4.90007-grid-inline-edit/from-inspector.stories.tsx — inspector→edit transitionfe4.7PendingPlay function: eye→inspector→edit→dialog
4.100007-grid-inline-edit/cancel.stories.tsx — cancel preserves rowfe4.7PendingGrid row unchanged after cancel
4.110001-remove-image/from-form.stories.tsx — trash icon→confirm→placeholderfe4.3PendingPlay function exercises removal
4.120001-remove-image/cancel.stories.tsx — cancel preserves imagefe4.11PendingImage unchanged after cancel
4.130001-remove-image/playground.stories.tsx — argTypes controlsfe4.11PendingControls toggle image states
4.140010-set-image/during-creation.stories.tsx — vendored reference storyfe4.3PendingRenders vendored ItemFormPanel, existing image handling
4.150010-set-image/during-creation-canary.stories.tsx — canary simplified form with createUseCaseStoriesfe4.4PendingInteractive/Stepwise/Automated, 10-scene wizard
4.160006-change-or-remove-image/change-item-image.stories.tsx — full-app grid, change imagefe4.7PendingPlay function: double-click→dialog→confirm→row updates
4.170006-change-or-remove-image/remove-item-image.stories.tsx — full-app grid+detail, remove imagefe4.11PendingPlay function: hover→trash→confirm→placeholder
4.18Update items.mdx — add ITM-0003::0010 and ITM-0004::0006 entriesfe4.14–4.17PendingNew entries appear in use case table
4.19Wave gate: lint, tsc, build-storybook, test, full Storybook test runner, VRTfe4.1–4.18PendingAll checks pass
4.20Quality review of all new filesqr4.19PendingNo anti-patterns, consistent style, vendored scoped correctly, description.mdx in every scenario dir
4.1 (entity-media.mdx) 4.2 (remove MDX) 4.13 (vendored reference)
│ │ │
▼ ▼ │
4.3 (happy path) ──────► 4.4 (replace) + 4.5 (cancel/warn) │
│ │
├──────────────────────────────────────────► 4.14 (canary create)
4.6 (grid dbl-click) ──► 4.7 (enter) + 4.8 (inspector) + 4.9 (cancel)
│ │
└──────────────────────────────────────────► 4.15 (change item image)
4.10 (remove form) ──► 4.11 (remove cancel) + 4.12 (playground)
│ │
└──────────────────────────────────────────► 4.16 (remove item image)
4.17 (items.mdx update) ◄┘
4.18 (sidebar sort)
4.19 (wave gate)
4.20 (quality review)

Three parallel tracks:

  • Track A: End-to-end flow stories (4.3→4.4, 4.5, 4.14)
  • Track B: Grid inline edit stories (4.6→4.7, 4.8, 4.9, 4.15)
  • Track C: Remove stories (4.10→4.11, 4.12, 4.16)

MDX files (4.1, 4.2, 4.13) can start immediately.

#CriterionVerification CommandExpected Output
1entity-media.mdx finalizedtest -f <ux-prototype>/src/use-cases/general-behaviors/entity-media/entity-media.mdxExit 0
2remove-entity-image.mdx existstest -f <ux-prototype>/src/use-cases/general-behaviors/entity-media/remove-entity-image/remove-entity-image.mdxExit 0
33 set-image storiesfind <set-dir> -name 'set-image-*.stories.tsx' | wc -l3
44 grid-edit storiesfind <set-dir> -name 'grid-inline-edit-*.stories.tsx' | wc -l4
53 remove storiesfind <remove-dir> -name '*.stories.tsx' | wc -l3
62 REF::ITM create storiesfind <ux-prototype>/src/use-cases/reference/items/create-item -name '*.stories.tsx' | wc -l2
72 REF::ITM edit storiesls <ux-prototype>/src/use-cases/reference/items/edit-item/{change,remove}-item-image.stories.tsx 2>/dev/null | wc -l2
8Total story count = 47find <ux-prototype>/src/use-cases/general-behaviors/entity-media -name '*.stories.tsx' | wc -l + REF::ITM count47
9Lint passesnpm run lint --prefix <ux-prototype>Exit 0
10TypeScript compilesnpx tsc --noEmit --project <ux-prototype>Exit 0
11Storybook buildsnpm run build-storybook --prefix <ux-prototype>Exit 0
12Unit tests passnpm run test --prefix <ux-prototype>Exit 0
13Storybook test runner passesAll play functions passExit 0
14VRT baselines currentnpx playwright test --project=vrt --prefix <ux-prototype>Exit 0
15Rebased onto base branchgit -C <worktree> fetch origin jmpicnic/item-image-upload-components && git -C <worktree> rebase origin/jmpicnic/item-image-upload-componentsExit 0, no conflicts
16Post-rebase checks pass (lint, tsc, build, test, VRT)Re-run criteria 9–14 after rebaseAll pass

Implement end-to-end Storybook use case stories for GEN-MEDIA-0001::0001.UC, GEN-MEDIA-0001::0007.FS, GEN-MEDIA-0002, and REF::ITM integration stories. Working directory: <worktree-path>.

Read the full specification. This is the final run — all prior stories exist as pattern references. Key points:

  • 0001.UC stories use createUseCaseStories framework (Interactive/Stepwise/Automated)
  • 0007.FS stories need createImageCellEditor wired into story-local column overrides (the shared column defs have editable: false)
  • REF::ITM::0003::0010.UC has two stories: vendored reference (wrap ItemFormPanel) and canary (story-local simplified form with ImageFormField)
  • REF::ITM::0004::0006.UC is 100% canary — compose from ItemGrid + ItemDetails
  • Follow existing full-app patterns from view-items-list.stories.tsx and edit-inline.stories.tsx

Quality Reviewer — qr-integration-stories

Section titled “Quality Reviewer — qr-integration-stories”

Final quality review of all files produced across all 4 runs. Verify:

  • Canary-only imports (except vendored reference story)
  • Vendored CSS imported ONLY in set-image-during-creation.stories.tsx
  • MDX formatting (HTML tables, numeric entities, no bare braces)
  • Sidebar title conventions
  • Play function coverage for all scenarios
  • Framework stories have all 3 variants (Interactive/Stepwise/Automated)
ArtifactSource RunPath
Use-case mock dataRun 1_shared/mock-data.ts
View stories (pattern)Run 1view-entity-image/
Input/validation stories (pattern)Run 2set-entity-image/input-*, formats-*, url-*
Preview/confirm stories (pattern)Run 3set-entity-image/preview-*, confirm-*
Set Entity Image MDXRun 3set-entity-image/set-entity-image.mdx
ArtifactConsumerPath
Complete use case story suiteStakeholder review, PRAll story and MDX files