@hraness/design-kit 0.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/ARTICLE_COPY.md +208 -0
  2. package/HERO_FIELDS.md +55 -0
  3. package/ICONS.md +56 -0
  4. package/LANTERN_MATERIAL.md +60 -0
  5. package/LICENSE +21 -0
  6. package/MARKETING_COPY.md +49 -0
  7. package/MARKETING_PRESET.md +108 -0
  8. package/PALETTES.md +90 -0
  9. package/PAPER_THEME.md +128 -0
  10. package/README.md +745 -0
  11. package/STATUS_PAGES.md +67 -0
  12. package/STYLE.md +245 -0
  13. package/WRITING.md +72 -0
  14. package/dist/browser/index.js +2345 -0
  15. package/dist/chunk-44djxk16.js +6872 -0
  16. package/dist/chunk-5gtx3pza.js +9 -0
  17. package/dist/chunk-77391vmq.js +454 -0
  18. package/dist/chunk-7b1586eb.js +1209 -0
  19. package/dist/chunk-8834fh4n.js +6 -0
  20. package/dist/chunk-9t8xyqte.js +870 -0
  21. package/dist/chunk-cejpzyfh.js +446 -0
  22. package/dist/chunk-eh71jz57.js +429 -0
  23. package/dist/chunk-evb02bc1.js +516 -0
  24. package/dist/chunk-h4k7yv6x.js +368 -0
  25. package/dist/chunk-he8eznb1.js +760 -0
  26. package/dist/chunk-mr1vdcjq.js +404 -0
  27. package/dist/chunk-wzvdn8ey.js +116 -0
  28. package/dist/fonts/nebula-sans/social-fonts.generated.js +53 -0
  29. package/dist/icons.js +48 -0
  30. package/dist/index.js +237 -0
  31. package/dist/launch.js +41 -0
  32. package/dist/mockups/client.js +422 -0
  33. package/dist/mockups/index.js +1850 -0
  34. package/dist/portfolio.js +1549 -0
  35. package/dist/provider-marks.js +19 -0
  36. package/dist/react/charts.js +11 -0
  37. package/dist/react/hero-backdrop.js +8 -0
  38. package/dist/react/index.js +7252 -0
  39. package/dist/react/platform-install.js +10 -0
  40. package/dist/react/server.js +137 -0
  41. package/dist/stylex-manifest.json +1 -0
  42. package/dist/stylex.css +5392 -0
  43. package/dist/syntax-highlighting.js +15 -0
  44. package/dist/testing.js +250 -0
  45. package/package.json +377 -0
  46. package/portfolio-inventory.json +31 -0
  47. package/scripts/check-lantern-material-snapshot.d.mts +26 -0
  48. package/scripts/check-lantern-material-snapshot.mjs +126 -0
  49. package/scripts/check-marketing-snapshot.d.mts +12 -0
  50. package/scripts/check-marketing-snapshot.mjs +58 -0
  51. package/scripts/lantern-material-snapshot.ts +101 -0
  52. package/scripts/marketing-textures.ts +48 -0
  53. package/scripts/paper-theme-snapshot.ts +97 -0
  54. package/scripts/product-marketing-snapshot.ts +149 -0
  55. package/src/appearance-menu.css +266 -0
  56. package/src/appearance.ts +32 -0
  57. package/src/article-html.ts +269 -0
  58. package/src/article.ts +686 -0
  59. package/src/browser/appearance-menu.ts +604 -0
  60. package/src/browser/artifact-share.ts +164 -0
  61. package/src/browser/design-palette.ts +197 -0
  62. package/src/browser/foil.ts +124 -0
  63. package/src/browser/hero-light.ts +11 -0
  64. package/src/browser/index.ts +29 -0
  65. package/src/browser/status-field.ts +432 -0
  66. package/src/browser/status-page.ts +100 -0
  67. package/src/browser/sticky-offset.ts +82 -0
  68. package/src/browser/theme-color-sync.ts +213 -0
  69. package/src/charts.css +7 -0
  70. package/src/compiler-components.css +34 -0
  71. package/src/compiler-foundation.css +18 -0
  72. package/src/compiler-palettes.css +7 -0
  73. package/src/compiler-tokens.css +342 -0
  74. package/src/components.css +3 -0
  75. package/src/design-gallery.css +431 -0
  76. package/src/effects.css +14 -0
  77. package/src/fonts/geist-mono/GeistMono[wght].woff2 +0 -0
  78. package/src/fonts/geist-mono/OFL.txt +93 -0
  79. package/src/fonts/geist-mono/PROVENANCE.md +12 -0
  80. package/src/fonts/instrument-serif/OFL.txt +93 -0
  81. package/src/fonts/instrument-serif/UPSTREAM.md +14 -0
  82. package/src/fonts/instrument-serif/instrument-serif-latin-400.woff2 +0 -0
  83. package/src/fonts/nebula-sans/LICENSE.txt +96 -0
  84. package/src/fonts/nebula-sans/NebulaSans-Black.woff2 +0 -0
  85. package/src/fonts/nebula-sans/NebulaSans-BlackItalic.woff2 +0 -0
  86. package/src/fonts/nebula-sans/NebulaSans-Bold.otf +0 -0
  87. package/src/fonts/nebula-sans/NebulaSans-Bold.woff2 +0 -0
  88. package/src/fonts/nebula-sans/NebulaSans-BoldItalic.woff2 +0 -0
  89. package/src/fonts/nebula-sans/NebulaSans-Book.otf +0 -0
  90. package/src/fonts/nebula-sans/NebulaSans-Book.woff2 +0 -0
  91. package/src/fonts/nebula-sans/NebulaSans-BookItalic.woff2 +0 -0
  92. package/src/fonts/nebula-sans/NebulaSans-Light.woff2 +0 -0
  93. package/src/fonts/nebula-sans/NebulaSans-LightItalic.woff2 +0 -0
  94. package/src/fonts/nebula-sans/NebulaSans-Medium.woff2 +0 -0
  95. package/src/fonts/nebula-sans/NebulaSans-MediumItalic.woff2 +0 -0
  96. package/src/fonts/nebula-sans/NebulaSans-Semibold.woff2 +0 -0
  97. package/src/fonts/nebula-sans/NebulaSans-SemiboldItalic.woff2 +0 -0
  98. package/src/fonts/nebula-sans/PROVENANCE.md +14 -0
  99. package/src/fonts/nebula-sans/social-fonts.generated.ts +3873 -0
  100. package/src/fonts.css +106 -0
  101. package/src/icons/act60/act60.svg +5 -0
  102. package/src/icons/act60/application.svg +9 -0
  103. package/src/icons/act60/chapter-compare.svg +3 -0
  104. package/src/icons/act60/decree-residence.svg +6 -0
  105. package/src/icons/act60/estimate.svg +7 -0
  106. package/src/icons/act60/export-services.svg +4 -0
  107. package/src/icons/act60/investor.svg +13 -0
  108. package/src/icons/act60/presence.svg +7 -0
  109. package/src/icons/aicharts/aicharts.svg +6 -0
  110. package/src/icons/aicharts/cost-compare.svg +4 -0
  111. package/src/icons/aicharts/task-audio.svg +7 -0
  112. package/src/icons/aicharts/task-coding.svg +6 -0
  113. package/src/icons/aicharts/task-images.svg +3 -0
  114. package/src/icons/aicharts/task-reasoning.svg +9 -0
  115. package/src/icons/aicharts/task-research.svg +5 -0
  116. package/src/icons/aicharts/task-video.svg +4 -0
  117. package/src/icons/manifest.json +1371 -0
  118. package/src/icons/platonik/conversation.svg +3 -0
  119. package/src/icons/platonik/creature.svg +7 -0
  120. package/src/icons/platonik/economy.svg +4 -0
  121. package/src/icons/platonik/keep-light.svg +6 -0
  122. package/src/icons/platonik/platonik.svg +7 -0
  123. package/src/icons/platonik/spark-route.svg +15 -0
  124. package/src/icons/receipts/act60-retry.receipt.json +888 -0
  125. package/src/icons/receipts/act60.receipt.json +1366 -0
  126. package/src/icons/receipts/aicharts.receipt.json +1546 -0
  127. package/src/icons/receipts/platonik.receipt.json +1011 -0
  128. package/src/icons/receipts/roughday.receipt.json +770 -0
  129. package/src/icons/receipts/shared.receipt.json +1296 -0
  130. package/src/icons/receipts/slopcamera.receipt.json +1495 -0
  131. package/src/icons/receipts/soundfish-retry.receipt.json +460 -0
  132. package/src/icons/receipts/soundfish.receipt.json +1709 -0
  133. package/src/icons/receipts/sponge.receipt.json +1743 -0
  134. package/src/icons/receipts/stripe-history-retry.receipt.json +145 -0
  135. package/src/icons/receipts/stripe-history.receipt.json +1202 -0
  136. package/src/icons/receipts/wordcell.receipt.json +1924 -0
  137. package/src/icons/roughday/finance.svg +7 -0
  138. package/src/icons/roughday/roughday.svg +6 -0
  139. package/src/icons/roughday/technology.svg +4 -0
  140. package/src/icons/roughday/world.svg +4 -0
  141. package/src/icons/sets/act60.json +63 -0
  142. package/src/icons/sets/aicharts.json +63 -0
  143. package/src/icons/sets/platonik.json +39 -0
  144. package/src/icons/sets/roughday.json +25 -0
  145. package/src/icons/sets/shared.json +12 -0
  146. package/src/icons/sets/slopcamera.json +47 -0
  147. package/src/icons/sets/soundfish.json +43 -0
  148. package/src/icons/sets/sponge.json +51 -0
  149. package/src/icons/sets/stripe-history.json +39 -0
  150. package/src/icons/sets/wordcell.json +51 -0
  151. package/src/icons/shared/agent-skill.svg +4 -0
  152. package/src/icons/shared/cli.svg +5 -0
  153. package/src/icons/shared/privacy.svg +3 -0
  154. package/src/icons/shared/research.svg +7 -0
  155. package/src/icons/shared/sdk.svg +3 -0
  156. package/src/icons/slopcamera/diagram.svg +3 -0
  157. package/src/icons/slopcamera/direct-scene.svg +5 -0
  158. package/src/icons/slopcamera/edit-video.svg +17 -0
  159. package/src/icons/slopcamera/mcp.svg +3 -0
  160. package/src/icons/slopcamera/native-world.svg +3 -0
  161. package/src/icons/slopcamera/slopcamera.svg +11 -0
  162. package/src/icons/soundfish/agent-ui.svg +7 -0
  163. package/src/icons/soundfish/collaborate.svg +5 -0
  164. package/src/icons/soundfish/compose.svg +3 -0
  165. package/src/icons/soundfish/hear.svg +6 -0
  166. package/src/icons/soundfish/human-ui.svg +6 -0
  167. package/src/icons/soundfish/share.svg +3 -0
  168. package/src/icons/soundfish/soundfish.svg +6 -0
  169. package/src/icons/sponge/api.svg +3 -0
  170. package/src/icons/sponge/documents.svg +3 -0
  171. package/src/icons/sponge/library.svg +3 -0
  172. package/src/icons/sponge/one-question.svg +5 -0
  173. package/src/icons/sponge/people-direct.svg +5 -0
  174. package/src/icons/sponge/read.svg +3 -0
  175. package/src/icons/sponge/save.svg +4 -0
  176. package/src/icons/sponge/sponge.svg +7 -0
  177. package/src/icons/stripe-history/company-history.svg +3 -0
  178. package/src/icons/stripe-history/evidence.svg +4 -0
  179. package/src/icons/stripe-history/independence.svg +7 -0
  180. package/src/icons/stripe-history/publications.svg +11 -0
  181. package/src/icons/stripe-history/sources.svg +6 -0
  182. package/src/icons/stripe-history/stripe-history.svg +3 -0
  183. package/src/icons/wordcell/backlinks.svg +6 -0
  184. package/src/icons/wordcell/capture.svg +6 -0
  185. package/src/icons/wordcell/git-provenance.svg +4 -0
  186. package/src/icons/wordcell/kb.svg +4 -0
  187. package/src/icons/wordcell/markdown.svg +4 -0
  188. package/src/icons/wordcell/scopes.svg +3 -0
  189. package/src/icons/wordcell/search.svg +7 -0
  190. package/src/icons.generated.ts +734 -0
  191. package/src/icons.ts +51 -0
  192. package/src/index.ts +275 -0
  193. package/src/lantern-material.css +213 -0
  194. package/src/launch.ts +624 -0
  195. package/src/marketing-assets/UPSTREAM.md +18 -0
  196. package/src/marketing-assets/cells.svg +1 -0
  197. package/src/marketing-assets/grain.svg +1 -0
  198. package/src/marketing-forced-colors.css +12 -0
  199. package/src/mockups/client.tsx +415 -0
  200. package/src/mockups/core.tsx +318 -0
  201. package/src/mockups/frames.tsx +368 -0
  202. package/src/mockups/index.ts +14 -0
  203. package/src/mockups/surfaces.tsx +681 -0
  204. package/src/mockups.css +2607 -0
  205. package/src/palette-appearance.ts +45 -0
  206. package/src/palette-bridge.css +124 -0
  207. package/src/palette-color.ts +41 -0
  208. package/src/palette-system.css +721 -0
  209. package/src/palette-themes.ts +23 -0
  210. package/src/palette-tokens.stylex.ts +519 -0
  211. package/src/palettes.css +3 -0
  212. package/src/palettes.ts +161 -0
  213. package/src/paper-theme.css +244 -0
  214. package/src/plain-publication.css +1241 -0
  215. package/src/plain-site.css +397 -0
  216. package/src/platforms.ts +151 -0
  217. package/src/portfolio.generated.json +1595 -0
  218. package/src/portfolio.generated.ts +1596 -0
  219. package/src/portfolio.ts +226 -0
  220. package/src/product-marketing-foundation.css +433 -0
  221. package/src/product-marketing-preset.css +261 -0
  222. package/src/product-marketing.css +2186 -0
  223. package/src/provider-marks.generated.ts +112 -0
  224. package/src/provider-marks.ts +143 -0
  225. package/src/react/animated-rail-stage.stylex.ts +15 -0
  226. package/src/react/animated-rail-stage.tsx +51 -0
  227. package/src/react/app-shell.stylex.ts +104 -0
  228. package/src/react/app-shell.tsx +121 -0
  229. package/src/react/article.tsx +602 -0
  230. package/src/react/aurora-dots-background.tsx +34 -0
  231. package/src/react/charts.stylex.ts +563 -0
  232. package/src/react/charts.tsx +610 -0
  233. package/src/react/chat.stylex.ts +34 -0
  234. package/src/react/chat.tsx +155 -0
  235. package/src/react/design-gallery.tsx +943 -0
  236. package/src/react/design-palette.stylex.ts +124 -0
  237. package/src/react/design-palette.tsx +196 -0
  238. package/src/react/design-theme-context.tsx +41 -0
  239. package/src/react/effects.stylex.ts +325 -0
  240. package/src/react/fader.stylex.ts +71 -0
  241. package/src/react/fader.tsx +151 -0
  242. package/src/react/foil-card-math.ts +100 -0
  243. package/src/react/foil-card-surface.stylex.ts +326 -0
  244. package/src/react/foil-card-surface.tsx +742 -0
  245. package/src/react/foil-mark.tsx +35 -0
  246. package/src/react/foil.stylex.ts +163 -0
  247. package/src/react/haptics.ts +228 -0
  248. package/src/react/hero-backdrop.tsx +22 -0
  249. package/src/react/index.ts +38 -0
  250. package/src/react/keyboard-shortcuts.ts +228 -0
  251. package/src/react/lantern-material-gallery.tsx +166 -0
  252. package/src/react/lantern-material.stylex.ts +39 -0
  253. package/src/react/launch-beats.tsx +73 -0
  254. package/src/react/navigation-rail.stylex.ts +130 -0
  255. package/src/react/navigation-rail.tsx +228 -0
  256. package/src/react/particle-halo.tsx +115 -0
  257. package/src/react/phaser-dots.tsx +501 -0
  258. package/src/react/platform-icons.tsx +94 -0
  259. package/src/react/platform-install.stylex.ts +385 -0
  260. package/src/react/platform-install.tsx +389 -0
  261. package/src/react/playback-transport.stylex.ts +14 -0
  262. package/src/react/playback-transport.tsx +112 -0
  263. package/src/react/procedural-backdrop.tsx +192 -0
  264. package/src/react/procedural-recipe.ts +323 -0
  265. package/src/react/product-marketing.stylex.ts +4469 -0
  266. package/src/react/product-marketing.tsx +1611 -0
  267. package/src/react/production-data-preview-notice.stylex.ts +40 -0
  268. package/src/react/production-data-preview-notice.tsx +34 -0
  269. package/src/react/provider-mark.stylex.ts +132 -0
  270. package/src/react/provider-mark.tsx +120 -0
  271. package/src/react/relative-time.tsx +117 -0
  272. package/src/react/route-state.stylex.ts +39 -0
  273. package/src/react/route-state.tsx +350 -0
  274. package/src/react/server.ts +11 -0
  275. package/src/react/social-kit-panel.tsx +103 -0
  276. package/src/react/sticky-offset.tsx +33 -0
  277. package/src/react/surfaces.stylex.ts +179 -0
  278. package/src/react/surfaces.tsx +330 -0
  279. package/src/react/syntax-code.tsx +33 -0
  280. package/src/react/theme-color-sync.ts +1 -0
  281. package/src/react/theme-resolution.ts +11 -0
  282. package/src/react/theme.stylex.ts +276 -0
  283. package/src/react/theme.tsx +402 -0
  284. package/src/reading.css +72 -0
  285. package/src/relative-time.ts +185 -0
  286. package/src/reset.css +2 -0
  287. package/src/site-shell.css +16 -0
  288. package/src/status-page-html.ts +63 -0
  289. package/src/status-page.css +276 -0
  290. package/src/status-page.ts +323 -0
  291. package/src/styles.css +21 -0
  292. package/src/syntax-code-lexers.ts +303 -0
  293. package/src/syntax-highlighting.css +78 -0
  294. package/src/syntax-highlighting.ts +477 -0
  295. package/src/syntax-tokens.ts +33 -0
  296. package/src/testing.ts +307 -0
  297. package/src/tokens.css +3 -0
  298. package/src/typography.css +86 -0
  299. package/vendor/evilcharts/LICENSE +21 -0
  300. package/vendor/evilcharts/UPSTREAM.md +14 -0
  301. package/vendor/platform-marks/LICENSE +30 -0
  302. package/vendor/platform-marks/UPSTREAM.md +15 -0
  303. package/vendor/platform-marks/apple.svg +1 -0
  304. package/vendor/platform-marks/linux.svg +1 -0
  305. package/vendor/provider-marks/CRUSH-LICENSE.md +134 -0
  306. package/vendor/provider-marks/LICENSE +21 -0
  307. package/vendor/provider-marks/UPSTREAM.md +27 -0
  308. package/vendor/provider-marks/aider.svg +3 -0
  309. package/vendor/provider-marks/crush-heartbit.svg +8 -0
  310. package/vendor/provider-marks/lobehub/alibabacloud-color.svg +1 -0
  311. package/vendor/provider-marks/lobehub/alibabacloud.svg +1 -0
  312. package/vendor/provider-marks/lobehub/amp-color.svg +1 -0
  313. package/vendor/provider-marks/lobehub/amp.svg +1 -0
  314. package/vendor/provider-marks/lobehub/anthropic.svg +1 -0
  315. package/vendor/provider-marks/lobehub/claude-color.svg +1 -0
  316. package/vendor/provider-marks/lobehub/claude.svg +1 -0
  317. package/vendor/provider-marks/lobehub/claudecode-color.svg +1 -0
  318. package/vendor/provider-marks/lobehub/claudecode.svg +1 -0
  319. package/vendor/provider-marks/lobehub/codex-color.svg +1 -0
  320. package/vendor/provider-marks/lobehub/codex.svg +1 -0
  321. package/vendor/provider-marks/lobehub/cursor.svg +1 -0
  322. package/vendor/provider-marks/lobehub/deepseek-color.svg +1 -0
  323. package/vendor/provider-marks/lobehub/deepseek.svg +1 -0
  324. package/vendor/provider-marks/lobehub/devin-color.svg +1 -0
  325. package/vendor/provider-marks/lobehub/devin.svg +1 -0
  326. package/vendor/provider-marks/lobehub/gemini-color.svg +1 -0
  327. package/vendor/provider-marks/lobehub/gemini.svg +1 -0
  328. package/vendor/provider-marks/lobehub/geminicli-color.svg +1 -0
  329. package/vendor/provider-marks/lobehub/geminicli.svg +1 -0
  330. package/vendor/provider-marks/lobehub/goose.svg +1 -0
  331. package/vendor/provider-marks/lobehub/meta-color.svg +1 -0
  332. package/vendor/provider-marks/lobehub/meta.svg +1 -0
  333. package/vendor/provider-marks/lobehub/mistral-color.svg +1 -0
  334. package/vendor/provider-marks/lobehub/mistral.svg +1 -0
  335. package/vendor/provider-marks/lobehub/moonshot.svg +1 -0
  336. package/vendor/provider-marks/lobehub/nvidia-color.svg +1 -0
  337. package/vendor/provider-marks/lobehub/nvidia.svg +1 -0
  338. package/vendor/provider-marks/lobehub/openai.svg +1 -0
  339. package/vendor/provider-marks/lobehub/opencode.svg +1 -0
  340. package/vendor/provider-marks/lobehub/perplexity-color.svg +1 -0
  341. package/vendor/provider-marks/lobehub/perplexity.svg +1 -0
  342. package/vendor/provider-marks/lobehub/qwen-color.svg +1 -0
  343. package/vendor/provider-marks/lobehub/qwen.svg +1 -0
  344. package/vendor/provider-marks/lobehub/xai.svg +1 -0
  345. package/vendor/provider-marks/lobehub/zai.svg +1 -0
@@ -0,0 +1,1011 @@
1
+ {
2
+ "context": "card",
3
+ "ink": "#2474d4",
4
+ "members": [
5
+ {
6
+ "attempts": [
7
+ {
8
+ "critiqueModel": "google/gemini-3-flash",
9
+ "metrics": {
10
+ "aspectRatio": 1.0040567951318458,
11
+ "bytes": 22893,
12
+ "coverageRatio": 0.22125514782715594,
13
+ "pathCount": 1,
14
+ "strokePx": 20.686868686868685
15
+ },
16
+ "pass": false,
17
+ "problems": [
18
+ "The overlap is poorly executed, with the tail of the back bubble clipping through the outline of the front bubble.",
19
+ "The intersection creates small, messy line fragments that clutter the illustration.",
20
+ "The lack of opacity or filled planes makes the spatial relationship between the two bubbles confusing."
21
+ ],
22
+ "requestId": "sha256:4eb067719fdfdb13e497d3ab0ea888a8b29e95274cf5575ad0f446137da96fe1",
23
+ "round": 1,
24
+ "score": 70,
25
+ "status": "candidate",
26
+ "svgSha256": "5e242a86099ff501856dc5406e1b99fc4fb4af2df9d6061d3af361814d0cf2bb",
27
+ "vectorize": {
28
+ "alphaCutoff": 8,
29
+ "bytes": 22893,
30
+ "candidatesEvaluated": 2,
31
+ "format": "png",
32
+ "height": 495,
33
+ "inputBytes": 5512,
34
+ "outputMode": "color",
35
+ "pathCount": 1,
36
+ "profile": "balanced",
37
+ "provenance": {
38
+ "arch": "arm64",
39
+ "platform": "darwin",
40
+ "sharp": "0.35.3",
41
+ "sharpVersions": {
42
+ "aom": "3.14.1",
43
+ "archive": "3.8.8",
44
+ "cairo": "1.18.4",
45
+ "cgif": "0.5.3",
46
+ "exif": "0.6.26",
47
+ "expat": "2.8.2",
48
+ "ffi": "3.6.0",
49
+ "fontconfig": "2.18.1",
50
+ "freetype": "2.14.3",
51
+ "fribidi": "1.0.16",
52
+ "glib": "2.89.1",
53
+ "harfbuzz": "14.2.1",
54
+ "heif": "1.23.1",
55
+ "highway": "1.4.0",
56
+ "imagequant": "2.4.1",
57
+ "lcms": "2.19.1",
58
+ "mozjpeg": "0826579",
59
+ "pango": "1.58.0",
60
+ "pixman": "0.46.4",
61
+ "png": "1.6.58",
62
+ "proxy-libintl": "0.5",
63
+ "rsvg": "2.62.90",
64
+ "sharp": "0.35.3",
65
+ "tiff": "d01a94b",
66
+ "uhdr": "1acdbed",
67
+ "vips": "8.18.3",
68
+ "webp": "1.6.0",
69
+ "xml2": "2.15.3",
70
+ "zlib-ng": "2.3.3"
71
+ },
72
+ "vips": "8.18.3",
73
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
74
+ "vtracerSource": "official-release",
75
+ "vtracerVersion": "0.6.4"
76
+ },
77
+ "quality": {
78
+ "alphaRmse": 0.08187871,
79
+ "colorRmse": 0.05671084,
80
+ "outsideAlphaRatio": 0.0005769,
81
+ "sampleHeight": 495,
82
+ "sampleWidth": 493,
83
+ "supportRecall": 0.96816284
84
+ },
85
+ "receiptVersion": 1,
86
+ "representation": "color-paths",
87
+ "sourceSha256": "82034cc753246c0355c724a3481d2fc6b847488c6c465826a04ea0858dbe0371",
88
+ "svgSha256": "5e242a86099ff501856dc5406e1b99fc4fb4af2df9d6061d3af361814d0cf2bb",
89
+ "width": 493
90
+ },
91
+ "warnings": []
92
+ },
93
+ {
94
+ "critiqueModel": "google/gemini-3-flash",
95
+ "metrics": {
96
+ "aspectRatio": 1.1661237785016287,
97
+ "bytes": 15070,
98
+ "coverageRatio": 0.3690449111058541,
99
+ "pathCount": 1,
100
+ "strokePx": 45.76536312849162
101
+ },
102
+ "pass": false,
103
+ "problems": [
104
+ "Inconsistent visual structure: the background bubble is a hollow frame while the foreground bubble is a solid fill.",
105
+ "The tails of the speech bubbles taper into sharp hairlines at the tips.",
106
+ "The subject is poorly centered, with the bottom elements too close to the edge."
107
+ ],
108
+ "requestId": "sha256:c807b566fe9f6d976932b23fd52b98aab9936ecb5675ebd44f7384c2f9f93ba1",
109
+ "round": 2,
110
+ "score": 70,
111
+ "status": "candidate",
112
+ "svgSha256": "760767b50bbe878157041c664f408c3145b6540e2060ec40011868b7deb16f10",
113
+ "vectorize": {
114
+ "alphaCutoff": 8,
115
+ "bytes": 15070,
116
+ "candidatesEvaluated": 1,
117
+ "format": "png",
118
+ "height": 716,
119
+ "inputBytes": 7277,
120
+ "outputMode": "color",
121
+ "pathCount": 1,
122
+ "profile": "balanced",
123
+ "provenance": {
124
+ "arch": "arm64",
125
+ "platform": "darwin",
126
+ "sharp": "0.35.3",
127
+ "sharpVersions": {
128
+ "aom": "3.14.1",
129
+ "archive": "3.8.8",
130
+ "cairo": "1.18.4",
131
+ "cgif": "0.5.3",
132
+ "exif": "0.6.26",
133
+ "expat": "2.8.2",
134
+ "ffi": "3.6.0",
135
+ "fontconfig": "2.18.1",
136
+ "freetype": "2.14.3",
137
+ "fribidi": "1.0.16",
138
+ "glib": "2.89.1",
139
+ "harfbuzz": "14.2.1",
140
+ "heif": "1.23.1",
141
+ "highway": "1.4.0",
142
+ "imagequant": "2.4.1",
143
+ "lcms": "2.19.1",
144
+ "mozjpeg": "0826579",
145
+ "pango": "1.58.0",
146
+ "pixman": "0.46.4",
147
+ "png": "1.6.58",
148
+ "proxy-libintl": "0.5",
149
+ "rsvg": "2.62.90",
150
+ "sharp": "0.35.3",
151
+ "tiff": "d01a94b",
152
+ "uhdr": "1acdbed",
153
+ "vips": "8.18.3",
154
+ "webp": "1.6.0",
155
+ "xml2": "2.15.3",
156
+ "zlib-ng": "2.3.3"
157
+ },
158
+ "vips": "8.18.3",
159
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
160
+ "vtracerSource": "official-release",
161
+ "vtracerVersion": "0.6.4"
162
+ },
163
+ "quality": {
164
+ "alphaRmse": 0.0450141,
165
+ "colorRmse": 0.03165887,
166
+ "outsideAlphaRatio": 0,
167
+ "sampleHeight": 512,
168
+ "sampleWidth": 439,
169
+ "supportRecall": 0.99210141
170
+ },
171
+ "receiptVersion": 1,
172
+ "representation": "color-paths",
173
+ "sourceSha256": "ee8bd862ab51c2efc4a948d54e1529e8970f071a2f243b3d5d80d7bd5e09f174",
174
+ "svgSha256": "760767b50bbe878157041c664f408c3145b6540e2060ec40011868b7deb16f10",
175
+ "width": 614
176
+ },
177
+ "warnings": []
178
+ }
179
+ ],
180
+ "candidates": [
181
+ {
182
+ "metrics": {
183
+ "aspectRatio": 1.0040567951318458,
184
+ "bytes": 22893,
185
+ "coverageRatio": 0.22125514782715594,
186
+ "pathCount": 1,
187
+ "strokePx": 20.686868686868685
188
+ },
189
+ "round": 1,
190
+ "pass": false,
191
+ "score": 70,
192
+ "selected": true
193
+ },
194
+ {
195
+ "metrics": {
196
+ "aspectRatio": 1.1661237785016287,
197
+ "bytes": 15070,
198
+ "coverageRatio": 0.3690449111058541,
199
+ "pathCount": 1,
200
+ "strokePx": 45.76536312849162
201
+ },
202
+ "round": 2,
203
+ "pass": false,
204
+ "score": 70,
205
+ "selected": false
206
+ }
207
+ ],
208
+ "context": "card",
209
+ "metrics": {
210
+ "aspectRatio": 1.0040567951318458,
211
+ "bytes": 22893,
212
+ "coverageRatio": 0.22125514782715594,
213
+ "pathCount": 1,
214
+ "strokePx": 20.686868686868685
215
+ },
216
+ "outputPath": "/tmp/iconsets/platonik/conversation.svg",
217
+ "purpose": "illustration",
218
+ "regenerated": 0,
219
+ "slug": "conversation",
220
+ "subject": "two overlapping speech bubbles",
221
+ "svgSha256": "5e242a86099ff501856dc5406e1b99fc4fb4af2df9d6061d3af361814d0cf2bb"
222
+ },
223
+ {
224
+ "attempts": [
225
+ {
226
+ "critiqueModel": "google/gemini-3-flash",
227
+ "metrics": {
228
+ "aspectRatio": 1.146875,
229
+ "bytes": 20929,
230
+ "coverageRatio": 0.1678857288828338,
231
+ "pathCount": 5,
232
+ "strokePx": 26.506811989100818
233
+ },
234
+ "pass": false,
235
+ "problems": [
236
+ "The illustration is a front-facing view with a depth offset rather than a true isometric perspective.",
237
+ "It contains more than three distinct filled planes (head, torso, arm, leg, and eyes all have separate fills).",
238
+ "The concentric circles in the eyes constitute tiny repeated detail that may blur at small scales.",
239
+ "The offset fill style acts as a prohibited shadow/shading effect."
240
+ ],
241
+ "requestId": "sha256:118078ea975c2c32d865d50da27eb461ce38b00f46297e31c4afa9be4e4d1866",
242
+ "round": 1,
243
+ "score": 60,
244
+ "status": "candidate",
245
+ "svgSha256": "cee3564b41815af01a8373b93718bcc1488fa8a8a3b908e177b685f6bf532bdc",
246
+ "vectorize": {
247
+ "alphaCutoff": 8,
248
+ "bytes": 20929,
249
+ "candidatesEvaluated": 1,
250
+ "format": "png",
251
+ "height": 734,
252
+ "inputBytes": 7841,
253
+ "outputMode": "color",
254
+ "pathCount": 5,
255
+ "profile": "balanced",
256
+ "provenance": {
257
+ "arch": "arm64",
258
+ "platform": "darwin",
259
+ "sharp": "0.35.3",
260
+ "sharpVersions": {
261
+ "aom": "3.14.1",
262
+ "archive": "3.8.8",
263
+ "cairo": "1.18.4",
264
+ "cgif": "0.5.3",
265
+ "exif": "0.6.26",
266
+ "expat": "2.8.2",
267
+ "ffi": "3.6.0",
268
+ "fontconfig": "2.18.1",
269
+ "freetype": "2.14.3",
270
+ "fribidi": "1.0.16",
271
+ "glib": "2.89.1",
272
+ "harfbuzz": "14.2.1",
273
+ "heif": "1.23.1",
274
+ "highway": "1.4.0",
275
+ "imagequant": "2.4.1",
276
+ "lcms": "2.19.1",
277
+ "mozjpeg": "0826579",
278
+ "pango": "1.58.0",
279
+ "pixman": "0.46.4",
280
+ "png": "1.6.58",
281
+ "proxy-libintl": "0.5",
282
+ "rsvg": "2.62.90",
283
+ "sharp": "0.35.3",
284
+ "tiff": "d01a94b",
285
+ "uhdr": "1acdbed",
286
+ "vips": "8.18.3",
287
+ "webp": "1.6.0",
288
+ "xml2": "2.15.3",
289
+ "zlib-ng": "2.3.3"
290
+ },
291
+ "vips": "8.18.3",
292
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
293
+ "vtracerSource": "official-release",
294
+ "vtracerVersion": "0.6.4"
295
+ },
296
+ "quality": {
297
+ "alphaRmse": 0.04190389,
298
+ "colorRmse": 0.02980155,
299
+ "outsideAlphaRatio": 0,
300
+ "sampleHeight": 512,
301
+ "sampleWidth": 446,
302
+ "supportRecall": 0.9772008
303
+ },
304
+ "receiptVersion": 1,
305
+ "representation": "color-paths",
306
+ "sourceSha256": "192babcd4bd1aea0212ebf88a08cd44f9b612bcab3ee3d043b81c7a5bcdac5c1",
307
+ "svgSha256": "cee3564b41815af01a8373b93718bcc1488fa8a8a3b908e177b685f6bf532bdc",
308
+ "width": 640
309
+ },
310
+ "warnings": []
311
+ },
312
+ {
313
+ "problems": [
314
+ "the illustration strokes are too thin for the card context"
315
+ ],
316
+ "requestId": "sha256:ac81e10906b4027f11b56ad4306c7d8f13afcd59cfeacf170b856ca480761ca4",
317
+ "round": 2,
318
+ "status": "failed",
319
+ "warnings": []
320
+ }
321
+ ],
322
+ "candidates": [
323
+ {
324
+ "metrics": {
325
+ "aspectRatio": 1.146875,
326
+ "bytes": 20929,
327
+ "coverageRatio": 0.1678857288828338,
328
+ "pathCount": 5,
329
+ "strokePx": 26.506811989100818
330
+ },
331
+ "round": 1,
332
+ "pass": false,
333
+ "score": 60,
334
+ "selected": true
335
+ }
336
+ ],
337
+ "context": "card",
338
+ "metrics": {
339
+ "aspectRatio": 1.146875,
340
+ "bytes": 20929,
341
+ "coverageRatio": 0.1678857288828338,
342
+ "pathCount": 5,
343
+ "strokePx": 26.506811989100818
344
+ },
345
+ "outputPath": "/tmp/iconsets/platonik/creature.svg",
346
+ "purpose": "illustration",
347
+ "regenerated": 0,
348
+ "slug": "creature",
349
+ "subject": "a small friendly robot creature standing on a plain",
350
+ "svgSha256": "cee3564b41815af01a8373b93718bcc1488fa8a8a3b908e177b685f6bf532bdc"
351
+ },
352
+ {
353
+ "attempts": [
354
+ {
355
+ "critiqueModel": "google/gemini-3-flash",
356
+ "metrics": {
357
+ "aspectRatio": 1.4210526315789473,
358
+ "bytes": 27751,
359
+ "coverageRatio": 0.20253572406682455,
360
+ "pathCount": 2,
361
+ "strokePx": 32.754208754208754
362
+ },
363
+ "pass": false,
364
+ "problems": [
365
+ "The coin lacks a solid face and resembles a wheel or pulley due to the large central hole.",
366
+ "The gear teeth are too small and numerous, creating tiny repeated details that may blur at 64px.",
367
+ "The connecting axle merges the two subjects into a single mechanical assembly rather than showing a coin beside a gear.",
368
+ "Line weights are not perfectly uniform throughout the gear structure."
369
+ ],
370
+ "requestId": "sha256:6fcfe77a7a91be7ba9786ccdc42b126c1089f57dda84da91f5336b01054e7936",
371
+ "round": 1,
372
+ "score": 65,
373
+ "status": "candidate",
374
+ "svgSha256": "3144853aec4d8bc258dc2f23c234f11f98a4df2aa2dbdc6bce717ce93ad624c6",
375
+ "vectorize": {
376
+ "alphaCutoff": 8,
377
+ "bytes": 27751,
378
+ "candidatesEvaluated": 2,
379
+ "format": "png",
380
+ "height": 418,
381
+ "inputBytes": 6216,
382
+ "outputMode": "color",
383
+ "pathCount": 2,
384
+ "profile": "balanced",
385
+ "provenance": {
386
+ "arch": "arm64",
387
+ "platform": "darwin",
388
+ "sharp": "0.35.3",
389
+ "sharpVersions": {
390
+ "aom": "3.14.1",
391
+ "archive": "3.8.8",
392
+ "cairo": "1.18.4",
393
+ "cgif": "0.5.3",
394
+ "exif": "0.6.26",
395
+ "expat": "2.8.2",
396
+ "ffi": "3.6.0",
397
+ "fontconfig": "2.18.1",
398
+ "freetype": "2.14.3",
399
+ "fribidi": "1.0.16",
400
+ "glib": "2.89.1",
401
+ "harfbuzz": "14.2.1",
402
+ "heif": "1.23.1",
403
+ "highway": "1.4.0",
404
+ "imagequant": "2.4.1",
405
+ "lcms": "2.19.1",
406
+ "mozjpeg": "0826579",
407
+ "pango": "1.58.0",
408
+ "pixman": "0.46.4",
409
+ "png": "1.6.58",
410
+ "proxy-libintl": "0.5",
411
+ "rsvg": "2.62.90",
412
+ "sharp": "0.35.3",
413
+ "tiff": "d01a94b",
414
+ "uhdr": "1acdbed",
415
+ "vips": "8.18.3",
416
+ "webp": "1.6.0",
417
+ "xml2": "2.15.3",
418
+ "zlib-ng": "2.3.3"
419
+ },
420
+ "vips": "8.18.3",
421
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
422
+ "vtracerSource": "official-release",
423
+ "vtracerVersion": "0.6.4"
424
+ },
425
+ "quality": {
426
+ "alphaRmse": 0.08425654,
427
+ "colorRmse": 0.059748,
428
+ "outsideAlphaRatio": 0,
429
+ "sampleHeight": 360,
430
+ "sampleWidth": 512,
431
+ "supportRecall": 0.94964493
432
+ },
433
+ "receiptVersion": 1,
434
+ "representation": "color-paths",
435
+ "sourceSha256": "2aedef060f73a43eb718f7dd6e92d54fbc4b22b849ba1938b5bcdc03a6dcab2c",
436
+ "svgSha256": "3144853aec4d8bc258dc2f23c234f11f98a4df2aa2dbdc6bce717ce93ad624c6",
437
+ "width": 594
438
+ },
439
+ "warnings": []
440
+ },
441
+ {
442
+ "critiqueModel": "google/gemini-3-flash",
443
+ "metrics": {
444
+ "aspectRatio": 1.1726618705035972,
445
+ "bytes": 14725,
446
+ "coverageRatio": 0.24875804877570337,
447
+ "pathCount": 1,
448
+ "strokePx": 50.25766871165645
449
+ },
450
+ "pass": false,
451
+ "problems": [
452
+ "The subject is cramped within the frame, lacking the required modest clear margin.",
453
+ "The line work is wobbly and inconsistent in weight, failing the uniform structure requirement.",
454
+ "The geometry of the gear teeth is irregular and contains small artifacts that may disappear or blur at 64px."
455
+ ],
456
+ "requestId": "sha256:ae2c1d5240434aa9067b04593008fe2e228dc57ac58f4bac602b0d4d3927373f",
457
+ "round": 2,
458
+ "score": 70,
459
+ "status": "candidate",
460
+ "svgSha256": "b9e9e955fb4407d31eccaecc9e6bc43df882afbaafaacd84c6122367835c1353",
461
+ "vectorize": {
462
+ "alphaCutoff": 8,
463
+ "bytes": 14725,
464
+ "candidatesEvaluated": 2,
465
+ "format": "png",
466
+ "height": 489,
467
+ "inputBytes": 4413,
468
+ "outputMode": "color",
469
+ "pathCount": 1,
470
+ "profile": "balanced",
471
+ "provenance": {
472
+ "arch": "arm64",
473
+ "platform": "darwin",
474
+ "sharp": "0.35.3",
475
+ "sharpVersions": {
476
+ "aom": "3.14.1",
477
+ "archive": "3.8.8",
478
+ "cairo": "1.18.4",
479
+ "cgif": "0.5.3",
480
+ "exif": "0.6.26",
481
+ "expat": "2.8.2",
482
+ "ffi": "3.6.0",
483
+ "fontconfig": "2.18.1",
484
+ "freetype": "2.14.3",
485
+ "fribidi": "1.0.16",
486
+ "glib": "2.89.1",
487
+ "harfbuzz": "14.2.1",
488
+ "heif": "1.23.1",
489
+ "highway": "1.4.0",
490
+ "imagequant": "2.4.1",
491
+ "lcms": "2.19.1",
492
+ "mozjpeg": "0826579",
493
+ "pango": "1.58.0",
494
+ "pixman": "0.46.4",
495
+ "png": "1.6.58",
496
+ "proxy-libintl": "0.5",
497
+ "rsvg": "2.62.90",
498
+ "sharp": "0.35.3",
499
+ "tiff": "d01a94b",
500
+ "uhdr": "1acdbed",
501
+ "vips": "8.18.3",
502
+ "webp": "1.6.0",
503
+ "xml2": "2.15.3",
504
+ "zlib-ng": "2.3.3"
505
+ },
506
+ "vips": "8.18.3",
507
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
508
+ "vtracerSource": "official-release",
509
+ "vtracerVersion": "0.6.4"
510
+ },
511
+ "quality": {
512
+ "alphaRmse": 0.10453223,
513
+ "colorRmse": 0.07238668,
514
+ "outsideAlphaRatio": 0.00438534,
515
+ "sampleHeight": 489,
516
+ "sampleWidth": 417,
517
+ "supportRecall": 0.96685519
518
+ },
519
+ "receiptVersion": 1,
520
+ "representation": "color-paths",
521
+ "sourceSha256": "d88f6b232c92f98f2e1c948afdf5a1462f510643fec4cd225198b9b8c206874a",
522
+ "svgSha256": "b9e9e955fb4407d31eccaecc9e6bc43df882afbaafaacd84c6122367835c1353",
523
+ "width": 417
524
+ },
525
+ "warnings": []
526
+ }
527
+ ],
528
+ "candidates": [
529
+ {
530
+ "metrics": {
531
+ "aspectRatio": 1.4210526315789473,
532
+ "bytes": 27751,
533
+ "coverageRatio": 0.20253572406682455,
534
+ "pathCount": 2,
535
+ "strokePx": 32.754208754208754
536
+ },
537
+ "round": 1,
538
+ "pass": false,
539
+ "score": 65,
540
+ "selected": true
541
+ },
542
+ {
543
+ "metrics": {
544
+ "aspectRatio": 1.1726618705035972,
545
+ "bytes": 14725,
546
+ "coverageRatio": 0.24875804877570337,
547
+ "pathCount": 1,
548
+ "strokePx": 50.25766871165645
549
+ },
550
+ "round": 2,
551
+ "pass": false,
552
+ "score": 70,
553
+ "selected": false
554
+ }
555
+ ],
556
+ "context": "card",
557
+ "metrics": {
558
+ "aspectRatio": 1.4210526315789473,
559
+ "bytes": 27751,
560
+ "coverageRatio": 0.20253572406682455,
561
+ "pathCount": 2,
562
+ "strokePx": 32.754208754208754
563
+ },
564
+ "outputPath": "/tmp/iconsets/platonik/economy.svg",
565
+ "purpose": "illustration",
566
+ "regenerated": 0,
567
+ "slug": "economy",
568
+ "subject": "a coin beside a conveyor gear",
569
+ "svgSha256": "3144853aec4d8bc258dc2f23c234f11f98a4df2aa2dbdc6bce717ce93ad624c6"
570
+ },
571
+ {
572
+ "attempts": [
573
+ {
574
+ "critiqueModel": "google/gemini-3-flash",
575
+ "metrics": {
576
+ "aspectRatio": 1.5094017094017094,
577
+ "bytes": 18800,
578
+ "coverageRatio": 0.20979760141708045,
579
+ "pathCount": 4,
580
+ "strokePx": 22.033975084937715
581
+ },
582
+ "pass": false,
583
+ "problems": [
584
+ "The illustration is in a frontal orthographic view rather than an isometric perspective.",
585
+ "It contains more than three filled planes due to the inclusion of highlights.",
586
+ "The highlights on the top and base function as shading, which is prohibited.",
587
+ "The line weight is not perfectly uniform, with thinner lines used for the inner flame detail."
588
+ ],
589
+ "requestId": "sha256:79702b8e721a5d37dd49118b988f3d13a9264a284cedb680a2fe528d920e5790",
590
+ "round": 1,
591
+ "score": 65,
592
+ "status": "candidate",
593
+ "svgSha256": "7354122657a53e7b7c8e2f073fa0bf8f35339a2507cbc10efd8d1c4b8b21fb3b",
594
+ "vectorize": {
595
+ "alphaCutoff": 8,
596
+ "bytes": 18800,
597
+ "candidatesEvaluated": 2,
598
+ "format": "png",
599
+ "height": 883,
600
+ "inputBytes": 9223,
601
+ "outputMode": "color",
602
+ "pathCount": 4,
603
+ "profile": "balanced",
604
+ "provenance": {
605
+ "arch": "arm64",
606
+ "platform": "darwin",
607
+ "sharp": "0.35.3",
608
+ "sharpVersions": {
609
+ "aom": "3.14.1",
610
+ "archive": "3.8.8",
611
+ "cairo": "1.18.4",
612
+ "cgif": "0.5.3",
613
+ "exif": "0.6.26",
614
+ "expat": "2.8.2",
615
+ "ffi": "3.6.0",
616
+ "fontconfig": "2.18.1",
617
+ "freetype": "2.14.3",
618
+ "fribidi": "1.0.16",
619
+ "glib": "2.89.1",
620
+ "harfbuzz": "14.2.1",
621
+ "heif": "1.23.1",
622
+ "highway": "1.4.0",
623
+ "imagequant": "2.4.1",
624
+ "lcms": "2.19.1",
625
+ "mozjpeg": "0826579",
626
+ "pango": "1.58.0",
627
+ "pixman": "0.46.4",
628
+ "png": "1.6.58",
629
+ "proxy-libintl": "0.5",
630
+ "rsvg": "2.62.90",
631
+ "sharp": "0.35.3",
632
+ "tiff": "d01a94b",
633
+ "uhdr": "1acdbed",
634
+ "vips": "8.18.3",
635
+ "webp": "1.6.0",
636
+ "xml2": "2.15.3",
637
+ "zlib-ng": "2.3.3"
638
+ },
639
+ "vips": "8.18.3",
640
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
641
+ "vtracerSource": "official-release",
642
+ "vtracerVersion": "0.6.4"
643
+ },
644
+ "quality": {
645
+ "alphaRmse": 0.07131809,
646
+ "colorRmse": 0.05002523,
647
+ "outsideAlphaRatio": 0.00000803,
648
+ "sampleHeight": 512,
649
+ "sampleWidth": 339,
650
+ "supportRecall": 0.96718445
651
+ },
652
+ "receiptVersion": 1,
653
+ "representation": "color-paths",
654
+ "sourceSha256": "864ed4d9baa59ab7337429db70ca7c6f5adc3796bb25bc2de4334214ad309649",
655
+ "svgSha256": "7354122657a53e7b7c8e2f073fa0bf8f35339a2507cbc10efd8d1c4b8b21fb3b",
656
+ "width": 585
657
+ },
658
+ "warnings": []
659
+ },
660
+ {
661
+ "critiqueModel": "google/gemini-3-flash",
662
+ "metrics": {
663
+ "aspectRatio": 1.3921259842519684,
664
+ "bytes": 23621,
665
+ "coverageRatio": 0.3008711297965582,
666
+ "pathCount": 4,
667
+ "strokePx": 37.067873303167424
668
+ },
669
+ "pass": false,
670
+ "problems": [
671
+ "Exceeds the limit of three filled planes (currently has four: two side panels, the flame, and the base).",
672
+ "Inconsistent line weights, with hairlines appearing at the bottom corners and base connection.",
673
+ "The perspective of the oval base does not perfectly align with the isometric hexagonal body."
674
+ ],
675
+ "requestId": "sha256:70e48cfcf3bf25cda6b875bd97ac5a92b71541b970092299c90f8beb730db02e",
676
+ "round": 2,
677
+ "score": 75,
678
+ "status": "candidate",
679
+ "svgSha256": "288959c5bf1bf09e267099059066b6d80f8e9b3700ea81060b6115284effbfb2",
680
+ "vectorize": {
681
+ "alphaCutoff": 8,
682
+ "bytes": 23621,
683
+ "candidatesEvaluated": 1,
684
+ "format": "png",
685
+ "height": 884,
686
+ "inputBytes": 9163,
687
+ "outputMode": "color",
688
+ "pathCount": 4,
689
+ "profile": "balanced",
690
+ "provenance": {
691
+ "arch": "arm64",
692
+ "platform": "darwin",
693
+ "sharp": "0.35.3",
694
+ "sharpVersions": {
695
+ "aom": "3.14.1",
696
+ "archive": "3.8.8",
697
+ "cairo": "1.18.4",
698
+ "cgif": "0.5.3",
699
+ "exif": "0.6.26",
700
+ "expat": "2.8.2",
701
+ "ffi": "3.6.0",
702
+ "fontconfig": "2.18.1",
703
+ "freetype": "2.14.3",
704
+ "fribidi": "1.0.16",
705
+ "glib": "2.89.1",
706
+ "harfbuzz": "14.2.1",
707
+ "heif": "1.23.1",
708
+ "highway": "1.4.0",
709
+ "imagequant": "2.4.1",
710
+ "lcms": "2.19.1",
711
+ "mozjpeg": "0826579",
712
+ "pango": "1.58.0",
713
+ "pixman": "0.46.4",
714
+ "png": "1.6.58",
715
+ "proxy-libintl": "0.5",
716
+ "rsvg": "2.62.90",
717
+ "sharp": "0.35.3",
718
+ "tiff": "d01a94b",
719
+ "uhdr": "1acdbed",
720
+ "vips": "8.18.3",
721
+ "webp": "1.6.0",
722
+ "xml2": "2.15.3",
723
+ "zlib-ng": "2.3.3"
724
+ },
725
+ "vips": "8.18.3",
726
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
727
+ "vtracerSource": "official-release",
728
+ "vtracerVersion": "0.6.4"
729
+ },
730
+ "quality": {
731
+ "alphaRmse": 0.05231178,
732
+ "colorRmse": 0.03661356,
733
+ "outsideAlphaRatio": 0,
734
+ "sampleHeight": 512,
735
+ "sampleWidth": 368,
736
+ "supportRecall": 0.99226588
737
+ },
738
+ "receiptVersion": 1,
739
+ "representation": "color-paths",
740
+ "sourceSha256": "e1d6bb927ee4a108bca798233e1b3150eddd0f47fa5a23439e404a6a52506542",
741
+ "svgSha256": "288959c5bf1bf09e267099059066b6d80f8e9b3700ea81060b6115284effbfb2",
742
+ "width": 635
743
+ },
744
+ "warnings": []
745
+ }
746
+ ],
747
+ "candidates": [
748
+ {
749
+ "metrics": {
750
+ "aspectRatio": 1.5094017094017094,
751
+ "bytes": 18800,
752
+ "coverageRatio": 0.20979760141708045,
753
+ "pathCount": 4,
754
+ "strokePx": 22.033975084937715
755
+ },
756
+ "round": 1,
757
+ "pass": false,
758
+ "score": 65,
759
+ "selected": true
760
+ },
761
+ {
762
+ "metrics": {
763
+ "aspectRatio": 1.3921259842519684,
764
+ "bytes": 23621,
765
+ "coverageRatio": 0.3008711297965582,
766
+ "pathCount": 4,
767
+ "strokePx": 37.067873303167424
768
+ },
769
+ "round": 2,
770
+ "pass": false,
771
+ "score": 75,
772
+ "selected": false
773
+ }
774
+ ],
775
+ "context": "card",
776
+ "metrics": {
777
+ "aspectRatio": 1.5094017094017094,
778
+ "bytes": 18800,
779
+ "coverageRatio": 0.20979760141708045,
780
+ "pathCount": 4,
781
+ "strokePx": 22.033975084937715
782
+ },
783
+ "outputPath": "/tmp/iconsets/platonik/keep-light.svg",
784
+ "purpose": "illustration",
785
+ "regenerated": 0,
786
+ "slug": "keep-light",
787
+ "subject": "a small beacon lantern keeping a flame lit",
788
+ "svgSha256": "7354122657a53e7b7c8e2f073fa0bf8f35339a2507cbc10efd8d1c4b8b21fb3b"
789
+ },
790
+ {
791
+ "attempts": [
792
+ {
793
+ "critiqueModel": "google/gemini-3-flash",
794
+ "metrics": {
795
+ "aspectRatio": 1.0733752620545074,
796
+ "bytes": 15318,
797
+ "coverageRatio": 0.17954828354297694,
798
+ "pathCount": 13,
799
+ "strokePx": 22
800
+ },
801
+ "pass": false,
802
+ "problems": [
803
+ "The illustration is a flat 2D graphic rather than an isometric illustration.",
804
+ "Contains too many small repeated elements (sparks), violating the 'no tiny repeated detail' rule.",
805
+ "The waypoints are depicted as flat concentric circles instead of isometric forms."
806
+ ],
807
+ "requestId": "sha256:4ac3c04f5952ac2e5fcb3d672e3d4eb7a268b1eded3b44c1220c0d84ed68bd64",
808
+ "round": 1,
809
+ "score": 60,
810
+ "status": "candidate",
811
+ "svgSha256": "d631bdf1f47371dc9c57692df90a21f2e248f978aecb69633ffef6b0e098c8ad",
812
+ "vectorize": {
813
+ "alphaCutoff": 8,
814
+ "bytes": 15318,
815
+ "candidatesEvaluated": 1,
816
+ "format": "png",
817
+ "height": 512,
818
+ "inputBytes": 4721,
819
+ "outputMode": "color",
820
+ "pathCount": 13,
821
+ "profile": "balanced",
822
+ "provenance": {
823
+ "arch": "arm64",
824
+ "platform": "darwin",
825
+ "sharp": "0.35.3",
826
+ "sharpVersions": {
827
+ "aom": "3.14.1",
828
+ "archive": "3.8.8",
829
+ "cairo": "1.18.4",
830
+ "cgif": "0.5.3",
831
+ "exif": "0.6.26",
832
+ "expat": "2.8.2",
833
+ "ffi": "3.6.0",
834
+ "fontconfig": "2.18.1",
835
+ "freetype": "2.14.3",
836
+ "fribidi": "1.0.16",
837
+ "glib": "2.89.1",
838
+ "harfbuzz": "14.2.1",
839
+ "heif": "1.23.1",
840
+ "highway": "1.4.0",
841
+ "imagequant": "2.4.1",
842
+ "lcms": "2.19.1",
843
+ "mozjpeg": "0826579",
844
+ "pango": "1.58.0",
845
+ "pixman": "0.46.4",
846
+ "png": "1.6.58",
847
+ "proxy-libintl": "0.5",
848
+ "rsvg": "2.62.90",
849
+ "sharp": "0.35.3",
850
+ "tiff": "d01a94b",
851
+ "uhdr": "1acdbed",
852
+ "vips": "8.18.3",
853
+ "webp": "1.6.0",
854
+ "xml2": "2.15.3",
855
+ "zlib-ng": "2.3.3"
856
+ },
857
+ "vips": "8.18.3",
858
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
859
+ "vtracerSource": "official-release",
860
+ "vtracerVersion": "0.6.4"
861
+ },
862
+ "quality": {
863
+ "alphaRmse": 0.08109972,
864
+ "colorRmse": 0.05610142,
865
+ "outsideAlphaRatio": 0.00034723,
866
+ "sampleHeight": 512,
867
+ "sampleWidth": 477,
868
+ "supportRecall": 0.9934715
869
+ },
870
+ "receiptVersion": 1,
871
+ "representation": "color-paths",
872
+ "sourceSha256": "ce21e27a16e685a6a4a0a8d9c63b3be99a8cc3ed3aa41f8790d616c0f4c592be",
873
+ "svgSha256": "d631bdf1f47371dc9c57692df90a21f2e248f978aecb69633ffef6b0e098c8ad",
874
+ "width": 477
875
+ },
876
+ "warnings": []
877
+ },
878
+ {
879
+ "critiqueError": "GENERATION_FAILED",
880
+ "metrics": {
881
+ "aspectRatio": 1.1132075471698113,
882
+ "bytes": 15851,
883
+ "coverageRatio": 0.12222399886294993,
884
+ "pathCount": 6,
885
+ "strokePx": 27.480225988700564
886
+ },
887
+ "requestId": "sha256:6bc4d876b845edf12e78596257f1ee235559b664f016e99c8e42b81e4759ee90",
888
+ "round": 2,
889
+ "status": "candidate",
890
+ "svgSha256": "eac1aaf0b73affba0e027bcab43e93438c01ce23991853f2a1f363baafd052f7",
891
+ "vectorize": {
892
+ "alphaCutoff": 8,
893
+ "bytes": 15851,
894
+ "candidatesEvaluated": 1,
895
+ "format": "png",
896
+ "height": 708,
897
+ "inputBytes": 6731,
898
+ "outputMode": "color",
899
+ "pathCount": 6,
900
+ "profile": "balanced",
901
+ "provenance": {
902
+ "arch": "arm64",
903
+ "platform": "darwin",
904
+ "sharp": "0.35.3",
905
+ "sharpVersions": {
906
+ "aom": "3.14.1",
907
+ "archive": "3.8.8",
908
+ "cairo": "1.18.4",
909
+ "cgif": "0.5.3",
910
+ "exif": "0.6.26",
911
+ "expat": "2.8.2",
912
+ "ffi": "3.6.0",
913
+ "fontconfig": "2.18.1",
914
+ "freetype": "2.14.3",
915
+ "fribidi": "1.0.16",
916
+ "glib": "2.89.1",
917
+ "harfbuzz": "14.2.1",
918
+ "heif": "1.23.1",
919
+ "highway": "1.4.0",
920
+ "imagequant": "2.4.1",
921
+ "lcms": "2.19.1",
922
+ "mozjpeg": "0826579",
923
+ "pango": "1.58.0",
924
+ "pixman": "0.46.4",
925
+ "png": "1.6.58",
926
+ "proxy-libintl": "0.5",
927
+ "rsvg": "2.62.90",
928
+ "sharp": "0.35.3",
929
+ "tiff": "d01a94b",
930
+ "uhdr": "1acdbed",
931
+ "vips": "8.18.3",
932
+ "webp": "1.6.0",
933
+ "xml2": "2.15.3",
934
+ "zlib-ng": "2.3.3"
935
+ },
936
+ "vips": "8.18.3",
937
+ "vtracerSha256": "77e495bbe212448240387fba3b6d8bc62ba20ecfb6f3c22967e51600f1cc6e66",
938
+ "vtracerSource": "official-release",
939
+ "vtracerVersion": "0.6.4"
940
+ },
941
+ "quality": {
942
+ "alphaRmse": 0.04883239,
943
+ "colorRmse": 0.0343364,
944
+ "outsideAlphaRatio": 0,
945
+ "sampleHeight": 512,
946
+ "sampleWidth": 460,
947
+ "supportRecall": 0.97220958
948
+ },
949
+ "receiptVersion": 1,
950
+ "representation": "color-paths",
951
+ "sourceSha256": "94b3d806d9f51c575141bb6de4df4d82275fd4ebf575c60a66dc1f95d52cb0f9",
952
+ "svgSha256": "eac1aaf0b73affba0e027bcab43e93438c01ce23991853f2a1f363baafd052f7",
953
+ "width": 636
954
+ },
955
+ "warnings": []
956
+ }
957
+ ],
958
+ "candidates": [
959
+ {
960
+ "metrics": {
961
+ "aspectRatio": 1.0733752620545074,
962
+ "bytes": 15318,
963
+ "coverageRatio": 0.17954828354297694,
964
+ "pathCount": 13,
965
+ "strokePx": 22
966
+ },
967
+ "round": 1,
968
+ "pass": false,
969
+ "score": 60,
970
+ "selected": true
971
+ },
972
+ {
973
+ "metrics": {
974
+ "aspectRatio": 1.1132075471698113,
975
+ "bytes": 15851,
976
+ "coverageRatio": 0.12222399886294993,
977
+ "pathCount": 6,
978
+ "strokePx": 27.480225988700564
979
+ },
980
+ "round": 2,
981
+ "selected": false
982
+ }
983
+ ],
984
+ "context": "card",
985
+ "metrics": {
986
+ "aspectRatio": 1.0733752620545074,
987
+ "bytes": 15318,
988
+ "coverageRatio": 0.17954828354297694,
989
+ "pathCount": 13,
990
+ "strokePx": 22
991
+ },
992
+ "outputPath": "/tmp/iconsets/platonik/spark-route.svg",
993
+ "purpose": "illustration",
994
+ "regenerated": 0,
995
+ "slug": "spark-route",
996
+ "subject": "a winding path between two waypoints with small sparks",
997
+ "svgSha256": "d631bdf1f47371dc9c57692df90a21f2e248f978aecb69633ffef6b0e098c8ad"
998
+ }
999
+ ],
1000
+ "model": "recraft/recraft-v4.1-utility",
1001
+ "name": "platonik",
1002
+ "outputDir": "/tmp/iconsets/platonik",
1003
+ "receiptVersion": 1,
1004
+ "setCritiques": [],
1005
+ "setCritiqueErrors": 3,
1006
+ "setRoundsUsed": 3,
1007
+ "target": {
1008
+ "coverageRatio": 0.2061666627419525,
1009
+ "strokePx": 24.270393537019267
1010
+ }
1011
+ }