Dogfood Clean Consumer Report
This report records the first clean-consumer dogfood pass for
@ponchia/annotations. It uses the packed package from the current checkout in
a separate Vite consumer rather than package examples or workspace imports.
Consumer
- Host app or report: clean Vite report generated by
scripts/dogfood-clean-consumer.mjs - Surface type: DOM/report regions, Vega-Lite generated chart, Mermaid generated diagram
- Package source: local packed tarball installed into
.tmp/dogfood-clean-consumer - Commit/version: current checkout via
npm pack
Integration Path
- Public imports used:
@ponchia/annotations@ponchia/annotations/dom@ponchia/annotations/vega@ponchia/annotations/mermaid@ponchia/annotations/bronto.css
- Adapter/helper used:
prepareDomAnnotationsprepareVegaScenegraphAnnotationsprepareMermaidAnnotationsresolvePreparedAnnotationLayoutrenderAnnotationsSvg
- Bounds source:
- DOM report surface:
getBoundingClientRect() - Vega-Lite chart:
annotationFrameFromSvg() - Mermaid diagram:
annotationFrameFromSvg()
- DOM report surface:
- Anchor source:
- DOM selectors measured relative to the report surface
- Vega-Lite compiled to Vega, then anchored from Vega scenegraph marks
- Mermaid rendered SVG labels and rendered edge path selectors
- Obstacles source:
- DOM region cards
- Vega scenegraph marks plus rendered SVG marks
- Mermaid rendered SVG nodes and paths
- Manual placement needed: yes, for editorial DOM and Mermaid edge callouts
- Target-alignment checks used: yes
- Layout-quality checks used: yes
Evidence
npm run test:dogfood proves the integration by:
- Packing the package with
npm pack - Installing the tarball plus optional peers into a clean Vite consumer
- Rendering the report in Chromium through Playwright
- Verifying no console errors
- Verifying five rendered annotation notes and connectors
- Verifying DOM, Vega-Lite, and Mermaid anchor validation
- Verifying generated-target alignment for every dogfood surface
- Verifying an external note list with roving focus, note focus sync, keyboard activation, and a screen-reader summary from validation and layout-quality results
- Capturing
.tmp-dogfood/dogfood-report.png
Friction
| Area | Observation | Severity | Proposed Fix |
|---|---|---|---|
| API naming | The prepared-layout flow is coherent, but first use requires learning several assertion option names. | low | Keep resolvePreparedAnnotationLayout as the recommended path; the mixed DOM/SVG report recipe now covers the combined report path. |
| Coordinate space | Matching host viewBox, overlay bounds, and DOM pixel coordinates remains the main thing a consumer must get right. |
medium | Keep emphasizing annotationFrameFromSvg() and same-coordinate manual placement in recipes. |
| Generated geometry timing | Vega-Lite must compile and Vega must run before scenegraph anchors exist; Mermaid must render before SVG anchors exist. | low | Add timing callouts to generated-surface recipes. |
| Styling | @ponchia/annotations/bronto.css worked from a clean package install without @ponchia/ui. |
low | No package change required. |
| Accessibility | noteTabIndex made SVG notes focusable, and the clean dogfood now verifies a host-owned external note list with roving focus, note focus sync, keyboard activation, and a screen-reader summary. |
low | Keep the recipe backed by npm run test:dogfood; broader production apps can still add their own command palettes or workflows. |
| Performance | Five annotations across three surfaces resolved quickly in Chromium. | low | Keep separate 10/50/200 stress benchmark as the practical limit signal. |
| Docs/examples | Existing examples are strong per adapter, and the mixed DOM/SVG report recipe now reduces first-use uncertainty for combined report surfaces. | low | Keep the recipe backed by npm run test:dogfood:bronto-report. |
Outcome
- Would ship with this API today: yes for
0.1.xdogfood and canary use - Required package changes before public release: none blocking from this pass
- Changes that can wait: app-specific command palettes or workflows
- Screenshots or browser evidence:
.tmp-dogfood/dogfood-report.pngfromnpm run test:dogfood