New icon, Icon unchanged. The proposal adds one icon name, sparklesSolid. zappy already exists in v2 (custom, 374x512) and is shown beside it.
Name sparklesSolid, per v2's {name}Solid convention next to the existing sparkles. Open: that name says "solid" not "sharp"; rename if the sharp style should be visible in the name.
Custom path, not an FA registry entry. v2's registry only takes FA styles regular, solid and brands; the supplied glyph is FA's sharp solid, so it goes in custom-icons.tsx as a type: 'path' icon.
Path normalised to v2's custom icon rules: the FA 640x640 box was cropped to the glyph bounds, scaled to 512 height (x0.8649), origin moved to 0,0, rounded to 2 decimals. Result: viewBox 0 0 519 512, one path, fill="currentColor" added at render time. The three sparkles (one large, two small) are kept as a single compound path.
Local Icon wrapper copies the v2 Icon markup for the new name and passes every other name to the published Icon. The port puts the path data in custom-icons.tsx and the registry and deletes the wrapper.
Licence: the path comes from Font Awesome Pro (commercial licence, per the SVG header). v2 already extracts FA Pro paths into generated-icon-data.ts, so this is consistent, but the engineer should confirm the licence covers a hand-copied glyph.
Optical balance still to check at xs to 4xl next to FA icons (v2 icon guidelines).
microphoneLines added for the Chat Input proposal (voice button). Font Awesome Pro regular microphone-lines, from Erika's Figma export Vector.svg (12x16, no padding), scaled x32 to 384x512 so it is 512 high and starts at 0,0 like v2's other icons. An earlier version used FA 7's padded 640x640 box, which rendered smaller than the rest. Same glyph either way, so the port can add it as an FA registry entry (faMicrophoneLines, style regular) and let v2 extract it. Not agentic; staged here with the new icons.
IconButton uses this local Icon wrapper (../Icon/Icon) so the new icons work in icon buttons. Its iconName type widens to include them.