• Status: written after the build was deployed and verified; every number here comes from a run, not a plan.
  • Plan of record: 30-first-delivery as corrected by 50-reflection.
  • Live surfaces: the Storybook at the project domain, this wiki at its companion domain.

What shipped

flowchart LR
  A["sflw sources: Icon, SourcePanel, StudioNode"] -->|"imported directly"| F["fleet instance at /"]
  B["svelte-chat private room markup"] -->|"adapted, attributed"| C["stbk components: MessageBubble, AttachmentList, ToastStack"]
  C --> F
  D["bits demos: Dialog, Combobox, Checkbox"] -->|"imported directly"| G["bits instance at /bits/"]
  F -->|"refs composition"| G
  H["one Node static server, one systemd unit"] --> F
  H --> G
  • Two native Svelte Storybook instances, exactly as decided:
    • fleet instance: 54 stories across 6 components, daisyUI regime, four themes.
    • bits instance: 8 stories across 3 components, upstream ink skin, federated by composition.
  • Story totals verified from the served indexes, not from source counting: 62 stories, all rendering clean in headless Chrome.

Measured evidence

  • Browser harness: dependency-free CDP suite driving the host Chrome against the live site; 18 checks, all passing; the run is reproducible from the project scripts directory.
  • Interaction proof, not screenshots:
    • Icon gallery draws 25 icons, all decorative and all inheriting colour.
    • SourcePanel copy: the granted path hands the panel’s exact 6262-character source to the write call; the denied path lands on the upstream fallback label.
    • StudioNode handle topology inside a real graph: input 1, transform 2, branch 3, sink 1, note 0, on a 560 pixel stage.
    • MessageBubble inline edit: editor closes and the bubble shows the newly typed text.
    • ToastStack: three notices, one dismissed, two remain.
    • AttachmentList: four media URLs, zero cross-origin, image decoded, audio element present.
    • Theme switching changes the document theme attribute and the computed page background.
    • bits Dialog opens through a real click and renders outside the story subtree.
    • bits Combobox: the real toggle opens six options; an unmatched query leaves zero options and shows the portalled empty branch.
    • bits Checkbox moves from mixed to checked on a real click.
    • Composition: the manager lists local projects and the referenced tree, and a referenced deep link renders through the referenced instance’s own iframe.
    • A missing asset returns a not-found status with no HTML fallback.
  • Gate credibility: the suite was mutation-proved. Flipping one expected value (the branch handle count, then the composed-frame expectation) produced exactly that failing check and left the others passing.

Defects found and fixed during verification

  • Three story interaction assertions sampled an animating element and failed on computed opacity; they now wait for the settled state and still assert visibility.
  • The chat stories pinned a theme global, which silently disabled the theme toolbar for those stories; the pin is removed and the native themes are named in provenance instead.
  • The first harness draft carried three wrong expectations of its own: it re-clicked a copy button whose stub had already been restored, treated same-origin absolute asset URLs as remote, and searched for empty-state text that the upstream demo does not use. Each was corrected against the real source.

Coverage

  • Covered projects: sflw, svelte-chat, bits.
  • Covered components:
    • sflw: Icon, SourcePanel, StudioNode.
    • svelte-chat: three adapted surfaces from the private room markup.
    • bits: Dialog, Combobox, Checkbox demos.
  • Deferred inside covered projects: sflw TypedEdge, FlowViewport, AssistantBubble, DemoShell and the craft page; the chat pending-upload list, offline alert and full room composition; the bits builder editor shell and the remaining demonstrations of that library.
  • Deferred projects, unchanged from the plan: airi (Vue renderer, UnoCSS, pinned pnpm workspace, existing Histoire explorer), iconmania (React renderer, own global stylesheet, API-served artwork), click2punch (standalone HTML documents with CDN dependencies), wrdp (PHP templates; only the vanilla player renderer is a future HTML-lane candidate).

Fences held

  • No sibling project was modified by this delivery. The imported sources are unchanged; the working trees of two neighbours show edits made by other concurrent work, none of them files this project imports.
  • The adapted chat components carry their source ranges in headers and in the on-canvas provenance panel, and are labelled adapted rather than upstream components.
  • Every story shows source, project, framework, relationship, style regime, what it proves and what it does not prove.

Known limits

  • One story render check was observed to flake once when two browser sessions ran concurrently on the same host; two consecutive clean runs of the full suite followed.
  • The preview uses one neutral canvas base instead of two project resets; that divergence is disclosed on the delivery page and in each story’s provenance.
  • Markdown conversion and sanitisation stay upstream: bubble fixtures carry pre-sanitised block strings, so this project proves layout and edit behaviour, not sanitiser posture.