← Design · c132

review-phase3.md

c132 review stop: the loop built (Phase 3, 2026-11-11, evening)

Reader: Mark. What to look at, in order:

  1. The bake-off page, now with both sides for every state. The six holes are closed: B's fresh and minimal captures were taken by the native capture mode. Wipe fresh on Harnesses: the empty states agree; wipe minimal on the harness page: 17 calls, 478k tokens, $17.97 on both sides. One drift the wipe showed: the app's rail has a Help › Getting started group since the Tour stretch and the skin's rail had not; D7 doing its job. c131 D20 had already ruled the launcher's place (gathered in the sidebar), so the skin took the group at this stop and A was recaptured; the chrome wipes clean again.
  2. process.md: the five steps, who does which with what, the two media exactly, the native capture mode, the token bridge, the review stop as a page, what is not in the loop yet. Read it as the thing a designer or an executor is handed.
  3. The native capture mode in action: npm run shots -- --native scripts/shot-programs/c132-native-worlds.json (13 captures in about a minute once the binary is built). The program is the model for every cycle after this.
  4. /gpui-story (.claude/skills/gpui-story/SKILL.md): the story shape, the test, the capture, the path from a Vue mock to a story.
  5. The hand-on to qnative c2, landed: one line in crates/stories/src/main.rs so the stories read QPOINT_WORLD as the app does (the patch file was removed from this tree once c2 applied it). The first captures were taken from a scratch copy with that patch; c2 landed it (b4cbc23) with the recut the same evening, and the final captures come from qnative proper: four worlds, meridian-day90 now nina-mbp and pilot priya-x1. The wipe on pilot shows what the first bake-off showed; the wipe on meridian-day90 shows nina's quiet laptop on both sides.

What was built

  • scripts/capture.mts: --native <program.json> (the mode), scale and clip for programs, pages and shots, --clip and --scale for single shots; manifest entries carry scale, and native ones surface: native, world, variant: world=<name>.
  • scripts/shot-programs/c132-native-worlds.json (B per world) and c132-bake-off.json (A at 2×, clipped to the window; the eleven captures retaken, no hand crop).
  • .claude/skills/gpui-story/SKILL.md, process.md, the bake-off page with both sides.
  • The token bridge was not rebuilt: scripts/tokens-to-kit.mjs exists from qnative c2 and is documented in process.md.

Not done, and why

  • The kit's own skills are not installed in .claude/skills. They come from the kit's repo (npx skills add longbridge/gpui-kit fetches and runs from the network); the primer says they lag the kit and renders empty on the kit's site. Install from the repo at the pinned tag when a cycle needs them, after looking at what they contain.
  • A dark variant per world for A: the skin follows the site's theme, so a dark program would set the theme first; B has --mode dark. Not needed for the pick.
  • /figma-to-gpui: Q2 (a kit-shaped Figma library) stays open.
  • The recut landed (qnative 71dd21a) while Phase 3 ran: synced, both programs re-run, pilot added as a fourth state on the bake-off page.

Open for you

  • Phase 4, the worked example: Status or Inventory through the loop and into c131. Inventory is already most of the way (three views in both media on three worlds); Status has no page yet in either medium and would exercise the loop end to end, including the six endpoint-only shapes (c131 D17) as a world to cut. Which?
  • Whether the skin takes the rail's Help group now taken (c131 D20 had ruled it; a Phase 3 follow-up, no new ruling).
  • Whether the native mode should also publish into design's own atlas (a copy of each native capture under public/cycles/design/ with the cycle's thread) so a design cycle's Visual record shows B beside A without crossing into the qnative atlas. Today it writes to one project.

Qpoint Brand Style Guide