spec-to-ui 0.1.0 → 0.2.0

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 (143) hide show
  1. package/LICENSE +2 -0
  2. package/README.ko.md +129 -0
  3. package/README.md +96 -29
  4. package/RELEASE.md +26 -0
  5. package/THIRD-PARTY.md +14 -0
  6. package/bin/cli.mjs +70 -91
  7. package/bundle-manifest.json +140 -0
  8. package/package.json +40 -8
  9. package/plugin.json +16 -0
  10. package/skills/design-taste-frontend/LICENSE +21 -0
  11. package/skills/design-taste-frontend/README.md +81 -0
  12. package/skills/design-taste-frontend/SKILL.md +546 -0
  13. package/skills/design-taste-frontend/assets/app.css +216 -0
  14. package/skills/design-taste-frontend/assets/base.css +105 -0
  15. package/skills/design-taste-frontend/assets/base.js +37 -0
  16. package/skills/design-taste-frontend/assets/charts.js +619 -0
  17. package/skills/design-taste-frontend/assets/scenes/stage.css +28 -0
  18. package/skills/design-taste-frontend/assets/scenes/stage.js +134 -0
  19. package/skills/design-taste-frontend/evals/evals.json +76 -0
  20. package/skills/design-taste-frontend/library/app.json +1327 -0
  21. package/skills/design-taste-frontend/library/directions.json +1078 -0
  22. package/skills/design-taste-frontend/library/heroes.json +1086 -0
  23. package/skills/design-taste-frontend/library/motions.json +92 -0
  24. package/skills/design-taste-frontend/library/palettes.json +1485 -0
  25. package/skills/design-taste-frontend/library/photos.json +7240 -0
  26. package/skills/design-taste-frontend/library/sections.json +4429 -0
  27. package/skills/design-taste-frontend/library/sites.json +8350 -0
  28. package/skills/design-taste-frontend/library/type.json +2024 -0
  29. package/skills/design-taste-frontend/references/app-screens.md +1199 -0
  30. package/skills/design-taste-frontend/references/colour.md +141 -0
  31. package/skills/design-taste-frontend/references/copy.md +177 -0
  32. package/skills/design-taste-frontend/references/critique.md +182 -0
  33. package/skills/design-taste-frontend/references/imagery.md +791 -0
  34. package/skills/design-taste-frontend/references/layout.md +292 -0
  35. package/skills/design-taste-frontend/references/motion.md +980 -0
  36. package/skills/design-taste-frontend/references/research.md +356 -0
  37. package/skills/design-taste-frontend/references/scenes.md +174 -0
  38. package/skills/design-taste-frontend/references/tells.md +115 -0
  39. package/skills/design-taste-frontend/references/type.md +170 -0
  40. package/skills/design-taste-frontend/scripts/assets.mjs +865 -0
  41. package/skills/design-taste-frontend/scripts/draw.mjs +584 -0
  42. package/skills/design-taste-frontend/scripts/inspect.mjs +308 -0
  43. package/skills/design-taste-frontend/scripts/lib/app-draw.mjs +203 -0
  44. package/skills/design-taste-frontend/scripts/lib/cdp.mjs +248 -0
  45. package/skills/design-taste-frontend/scripts/lib/inspection-files.mjs +9 -0
  46. package/skills/design-taste-frontend/scripts/lib/probe.mjs +929 -0
  47. package/skills/design-taste-frontend/scripts/lib/rules.mjs +243 -0
  48. package/skills/design-taste-frontend/scripts/lint.mjs +119 -0
  49. package/skills/design-taste-frontend/scripts/scenes.mjs +124 -0
  50. package/skills/spec-to-ui/SKILL.md +61 -0
  51. package/{skill → skills/spec-to-ui}/references/composition-and-validation.md +6 -0
  52. package/{skill → skills/spec-to-ui}/references/drafts-and-feedback.md +10 -0
  53. package/skills/spec-to-ui/references/requirements-supplement.md +21 -0
  54. package/{skill → skills/spec-to-ui}/references/review-and-handoff.md +9 -0
  55. package/skills/spec-to-ui/references/skill-composition.md +21 -0
  56. package/{skill → skills/spec-to-ui}/references/structure-and-decisions.md +4 -0
  57. package/skills/specframe/NOTICE.md +7 -0
  58. package/skills/specframe/SKILL.md +58 -0
  59. package/skills/specframe/agents/openai.yaml +3 -0
  60. package/skills/specframe/references/operating-contract.md +137 -0
  61. package/skills/specframe/references/visual.md +3 -0
  62. package/skills/specframe/references/web.md +15 -0
  63. package/skills/specframe/scripts/state.py +182 -0
  64. package/skills/ui-ux-pro-max/LICENSE +21 -0
  65. package/skills/ui-ux-pro-max/SKILL.md +218 -0
  66. package/skills/ui-ux-pro-max/data/app-interface.csv +33 -0
  67. package/skills/ui-ux-pro-max/data/catalog-summary.json +78 -0
  68. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  69. package/skills/ui-ux-pro-max/data/colors.csv +193 -0
  70. package/skills/ui-ux-pro-max/data/data-provenance.json +1348 -0
  71. package/skills/ui-ux-pro-max/data/google-font-licenses.json +20185 -0
  72. package/skills/ui-ux-pro-max/data/google-fonts.csv +1935 -0
  73. package/skills/ui-ux-pro-max/data/icons.csv +106 -0
  74. package/skills/ui-ux-pro-max/data/landing.csv +35 -0
  75. package/skills/ui-ux-pro-max/data/motion.csv +18 -0
  76. package/skills/ui-ux-pro-max/data/phosphor-icons-upstream.json +32582 -0
  77. package/skills/ui-ux-pro-max/data/products.csv +193 -0
  78. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  79. package/skills/ui-ux-pro-max/data/stacks/angular.csv +51 -0
  80. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  81. package/skills/ui-ux-pro-max/data/stacks/avalonia.csv +57 -0
  82. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  83. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +60 -0
  84. package/skills/ui-ux-pro-max/data/stacks/javafx.csv +76 -0
  85. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  86. package/skills/ui-ux-pro-max/data/stacks/laravel.csv +51 -0
  87. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +62 -0
  88. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +84 -0
  89. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +68 -0
  90. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  91. package/skills/ui-ux-pro-max/data/stacks/react.csv +67 -0
  92. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +69 -0
  93. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +56 -0
  94. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  95. package/skills/ui-ux-pro-max/data/stacks/threejs.csv +54 -0
  96. package/skills/ui-ux-pro-max/data/stacks/uno.csv +60 -0
  97. package/skills/ui-ux-pro-max/data/stacks/uwp.csv +56 -0
  98. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  99. package/skills/ui-ux-pro-max/data/stacks/winui.csv +60 -0
  100. package/skills/ui-ux-pro-max/data/stacks/wpf.csv +57 -0
  101. package/skills/ui-ux-pro-max/data/styles.csv +89 -0
  102. package/skills/ui-ux-pro-max/data/typography.csv +75 -0
  103. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +193 -0
  104. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +120 -0
  105. package/skills/ui-ux-pro-max/references/pro-rules.md +117 -0
  106. package/skills/ui-ux-pro-max/references/quick-reference.md +256 -0
  107. package/skills/ui-ux-pro-max/scripts/core.py +993 -0
  108. package/skills/ui-ux-pro-max/scripts/design_system.py +1668 -0
  109. package/skills/ui-ux-pro-max/scripts/reasoning_contract.py +123 -0
  110. package/skills/ui-ux-pro-max/scripts/search.py +184 -0
  111. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-api.json +36 -0
  112. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-catalog.json +33 -0
  113. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-existing.csv +3 -0
  114. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-metadata.json +17 -0
  115. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/google-overrides.json +7 -0
  116. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/icons-curated.csv +4 -0
  117. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/phosphor-core.json +23 -0
  118. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/phosphor-package.json +13 -0
  119. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/phosphor-react-exports.json +4 -0
  120. package/skills/ui-ux-pro-max/scripts/tests/fixtures/catalogs/phosphor-react-package.json +5 -0
  121. package/skills/ui-ux-pro-max/scripts/tests/fixtures/relevance-baseline.json +3366 -0
  122. package/skills/ui-ux-pro-max/scripts/tests/fixtures/relevance-cases.json +111 -0
  123. package/skills/ui-ux-pro-max/scripts/tests/fixtures/relevance-thresholds.json +100 -0
  124. package/skills/ui-ux-pro-max/scripts/tests/test_catalog_refresh.py +354 -0
  125. package/skills/ui-ux-pro-max/scripts/tests/test_catalog_summary_line_endings.py +78 -0
  126. package/skills/ui-ux-pro-max/scripts/tests/test_core.py +343 -0
  127. package/skills/ui-ux-pro-max/scripts/tests/test_core_data_quality.py +198 -0
  128. package/skills/ui-ux-pro-max/scripts/tests/test_data_contracts.py +421 -0
  129. package/skills/ui-ux-pro-max/scripts/tests/test_design_system_mode.py +233 -0
  130. package/skills/ui-ux-pro-max/scripts/tests/test_design_system_stack.py +61 -0
  131. package/skills/ui-ux-pro-max/scripts/tests/test_native_desktop_stack_freshness.py +179 -0
  132. package/skills/ui-ux-pro-max/scripts/tests/test_relevance_evaluator.py +182 -0
  133. package/skills/ui-ux-pro-max/scripts/tests/test_skill_script_paths.py +82 -0
  134. package/skills/ui-ux-pro-max/scripts/tests/test_style_taxonomy.py +175 -0
  135. package/skills/ui-ux-pro-max/scripts/tests/test_text_layout_resilience.py +120 -0
  136. package/skills/ui-ux-pro-max/scripts/tests/test_web_stack_freshness.py +191 -0
  137. package/skills/ui-ux-pro-max/scripts/validate_data.py +1095 -0
  138. package/sources.json +58 -0
  139. package/skill/SKILL.md +0 -68
  140. package/skill-manifest.json +0 -10
  141. /package/{skill → skills/spec-to-ui}/LICENSE +0 -0
  142. /package/{skill → skills/spec-to-ui}/agents/openai.yaml +0 -0
  143. /package/{skill → skills/spec-to-ui}/references/reference-selection.md +0 -0
@@ -0,0 +1,3366 @@
1
+ {
2
+ "cases": [
3
+ {
4
+ "actual": [
5
+ {
6
+ "Style Category": "Glassmorphism"
7
+ },
8
+ {
9
+ "Style Category": "Spatial UI (VisionOS)"
10
+ },
11
+ {
12
+ "Style Category": "Liquid Glass"
13
+ }
14
+ ],
15
+ "diagnostics": {
16
+ "abstained": false,
17
+ "calibration_version": "2026-08-12-v1",
18
+ "margin": 10.180590466442855,
19
+ "normalized_query": "frosted glass transparent blurred layered UI",
20
+ "query_rewrites": [],
21
+ "reason": "matched",
22
+ "runner_up_score": 9.240573829729811,
23
+ "search_query": "frosted glass transparent blurred layered UI",
24
+ "token_coverage": 1.0,
25
+ "top_score": 19.421164296172666
26
+ },
27
+ "expectedRoute": null,
28
+ "grades": [
29
+ 2,
30
+ 0,
31
+ 0
32
+ ],
33
+ "id": "domain-style-glassmorphism",
34
+ "route": "style",
35
+ "scores": {
36
+ "mrr3": 1.0,
37
+ "ndcg3": 1.0,
38
+ "p1": 1.0,
39
+ "p3": 0.3333333333333333
40
+ }
41
+ },
42
+ {
43
+ "actual": [
44
+ {
45
+ "Style Category": "Accessible & Ethical"
46
+ },
47
+ {
48
+ "Style Category": "Inclusive Design"
49
+ },
50
+ {
51
+ "Style Category": "Vibrant & Block-based"
52
+ }
53
+ ],
54
+ "diagnostics": {
55
+ "abstained": false,
56
+ "calibration_version": "2026-08-12-v1",
57
+ "margin": 0.2007607310218411,
58
+ "normalized_query": "inclusive high contrast interface with keyboard navigation and screen readers",
59
+ "query_rewrites": [],
60
+ "reason": "matched",
61
+ "runner_up_score": 18.40140231643771,
62
+ "search_query": "inclusive high contrast interface with keyboard nav and screen readers",
63
+ "token_coverage": 0.8888888888888888,
64
+ "top_score": 18.602163047459552
65
+ },
66
+ "expectedRoute": null,
67
+ "grades": [
68
+ 2,
69
+ 1,
70
+ 0
71
+ ],
72
+ "id": "domain-style-accessible-paraphrase",
73
+ "route": "style",
74
+ "scores": {
75
+ "mrr3": 1.0,
76
+ "ndcg3": 1.0,
77
+ "p1": 1.0,
78
+ "p3": 0.6666666666666666
79
+ }
80
+ },
81
+ {
82
+ "actual": [
83
+ {
84
+ "Product Type": "Beauty/Spa/Wellness Service"
85
+ },
86
+ {
87
+ "Product Type": "Mental Health App"
88
+ },
89
+ {
90
+ "Product Type": "Parenting & Baby Tracker"
91
+ }
92
+ ],
93
+ "diagnostics": {
94
+ "abstained": false,
95
+ "calibration_version": "2026-08-12-v1",
96
+ "margin": 17.678305652755625,
97
+ "normalized_query": "beauty spa wellness soft pink lavender palette",
98
+ "query_rewrites": [],
99
+ "reason": "matched",
100
+ "runner_up_score": 7.159928053272678,
101
+ "search_query": "beauty spa wellness soft pink lavender palette",
102
+ "token_coverage": 0.8571428571428571,
103
+ "top_score": 24.838233706028305
104
+ },
105
+ "expectedRoute": null,
106
+ "grades": [
107
+ 2,
108
+ 0,
109
+ 0
110
+ ],
111
+ "id": "domain-color-spa",
112
+ "route": "color",
113
+ "scores": {
114
+ "mrr3": 1.0,
115
+ "ndcg3": 1.0,
116
+ "p1": 1.0,
117
+ "p3": 0.3333333333333333
118
+ }
119
+ },
120
+ {
121
+ "actual": [
122
+ {
123
+ "Product Type": "Financial Dashboard"
124
+ },
125
+ {
126
+ "Product Type": "Cybersecurity Platform"
127
+ },
128
+ {
129
+ "Product Type": "Smart Home/IoT Dashboard"
130
+ }
131
+ ],
132
+ "diagnostics": {
133
+ "abstained": false,
134
+ "calibration_version": "2026-08-12-v1",
135
+ "margin": 0.29636583933813654,
136
+ "normalized_query": "cybersecurty threat dashboard matrix green dark pallete",
137
+ "query_rewrites": [],
138
+ "reason": "matched",
139
+ "runner_up_score": 6.62187033218134,
140
+ "search_query": "cybersecurty threat dashboard matrix green dark pallete",
141
+ "token_coverage": 0.5714285714285714,
142
+ "top_score": 6.918236171519476
143
+ },
144
+ "expectedRoute": null,
145
+ "grades": [
146
+ 0,
147
+ 2,
148
+ 0
149
+ ],
150
+ "id": "domain-color-cyber-typo",
151
+ "route": "color",
152
+ "scores": {
153
+ "mrr3": 0.5,
154
+ "ndcg3": 0.6309297535714574,
155
+ "p1": 0.0,
156
+ "p3": 0.3333333333333333
157
+ }
158
+ },
159
+ {
160
+ "actual": [
161
+ {
162
+ "Data Type": "Trend Over Time"
163
+ },
164
+ {
165
+ "Data Type": "Real-Time Streaming"
166
+ },
167
+ {
168
+ "Data Type": "Anomaly Detection"
169
+ }
170
+ ],
171
+ "diagnostics": {
172
+ "abstained": false,
173
+ "calibration_version": "2026-08-12-v1",
174
+ "margin": 12.637395123197123,
175
+ "normalized_query": "trend over time growth timeline line chart",
176
+ "query_rewrites": [],
177
+ "reason": "matched",
178
+ "runner_up_score": 3.1856244638240696,
179
+ "search_query": "trend over time growth timeline line chart",
180
+ "token_coverage": 1.0,
181
+ "top_score": 15.823019587021193
182
+ },
183
+ "expectedRoute": null,
184
+ "grades": [
185
+ 2,
186
+ 0,
187
+ 0
188
+ ],
189
+ "id": "domain-chart-time-series",
190
+ "route": "chart",
191
+ "scores": {
192
+ "mrr3": 1.0,
193
+ "ndcg3": 0.8262346571285599,
194
+ "p1": 1.0,
195
+ "p3": 0.3333333333333333
196
+ }
197
+ },
198
+ {
199
+ "actual": [
200
+ {
201
+ "Data Type": "Correlation / Distribution"
202
+ },
203
+ {
204
+ "Data Type": "Real-Time Streaming"
205
+ }
206
+ ],
207
+ "diagnostics": {
208
+ "abstained": false,
209
+ "calibration_version": "2026-08-12-v1",
210
+ "margin": 0.08727362229790625,
211
+ "normalized_query": "show whether two measures move together using dots and bubbles",
212
+ "query_rewrites": [],
213
+ "reason": "matched",
214
+ "runner_up_score": 2.7743314821590044,
215
+ "search_query": "show whether two measures move together using dots and bubbles",
216
+ "token_coverage": 0.2222222222222222,
217
+ "top_score": 2.8616051044569106
218
+ },
219
+ "expectedRoute": null,
220
+ "grades": [
221
+ 2,
222
+ 0
223
+ ],
224
+ "id": "domain-chart-correlation-paraphrase",
225
+ "route": "chart",
226
+ "scores": {
227
+ "mrr3": 1.0,
228
+ "ndcg3": 1.0,
229
+ "p1": 1.0,
230
+ "p3": 0.3333333333333333
231
+ }
232
+ },
233
+ {
234
+ "actual": [
235
+ {
236
+ "Pattern Name": "Pricing-Focused Landing"
237
+ },
238
+ {
239
+ "Pattern Name": "Pricing Page + CTA"
240
+ },
241
+ {
242
+ "Pattern Name": "Comparison Table + CTA"
243
+ }
244
+ ],
245
+ "diagnostics": {
246
+ "abstained": false,
247
+ "calibration_version": "2026-08-12-v1",
248
+ "margin": 1.4239185572152468,
249
+ "normalized_query": "pricing plans tiers comparison landing CTA",
250
+ "query_rewrites": [],
251
+ "reason": "matched",
252
+ "runner_up_score": 13.508045243232234,
253
+ "search_query": "pricing plans tiers comparison landing CTA",
254
+ "token_coverage": 1.0,
255
+ "top_score": 14.93196380044748
256
+ },
257
+ "expectedRoute": null,
258
+ "grades": [
259
+ 2,
260
+ 2,
261
+ 1
262
+ ],
263
+ "id": "domain-landing-pricing",
264
+ "route": "landing",
265
+ "scores": {
266
+ "mrr3": 1.0,
267
+ "ndcg3": 1.0,
268
+ "p1": 1.0,
269
+ "p3": 1.0
270
+ }
271
+ },
272
+ {
273
+ "actual": [
274
+ {
275
+ "Pattern Name": "Trust & Authority + Conversion"
276
+ },
277
+ {
278
+ "Pattern Name": "Enterprise Gateway"
279
+ },
280
+ {
281
+ "Pattern Name": "Pricing Page + CTA"
282
+ }
283
+ ],
284
+ "diagnostics": {
285
+ "abstained": false,
286
+ "calibration_version": "2026-08-12-v1",
287
+ "margin": 4.337981479641247,
288
+ "normalized_query": "enterprise credibilty trust authority conversion page",
289
+ "query_rewrites": [],
290
+ "reason": "matched",
291
+ "runner_up_score": 9.751278486627811,
292
+ "search_query": "enterprise credibilty trust authority conversion page",
293
+ "token_coverage": 0.8333333333333334,
294
+ "top_score": 14.089259966269058
295
+ },
296
+ "expectedRoute": null,
297
+ "grades": [
298
+ 2,
299
+ 1,
300
+ 0
301
+ ],
302
+ "id": "domain-landing-enterprise-typo",
303
+ "route": "landing",
304
+ "scores": {
305
+ "mrr3": 1.0,
306
+ "ndcg3": 1.0,
307
+ "p1": 1.0,
308
+ "p3": 0.6666666666666666
309
+ }
310
+ },
311
+ {
312
+ "actual": [
313
+ {
314
+ "Product Type": "Beauty/Spa/Wellness Service"
315
+ },
316
+ {
317
+ "Product Type": "Booking & Appointment App"
318
+ },
319
+ {
320
+ "Product Type": "Photography Studio"
321
+ }
322
+ ],
323
+ "diagnostics": {
324
+ "abstained": false,
325
+ "calibration_version": "2026-08-12-v1",
326
+ "margin": 18.297270037662248,
327
+ "normalized_query": "salon massage skincare booking and wellness service",
328
+ "query_rewrites": [],
329
+ "reason": "matched",
330
+ "runner_up_score": 7.065266409246995,
331
+ "search_query": "salon massage skincare booking and wellness service",
332
+ "token_coverage": 1.0,
333
+ "top_score": 25.362536446909242
334
+ },
335
+ "expectedRoute": null,
336
+ "grades": [
337
+ 2,
338
+ 1,
339
+ 0
340
+ ],
341
+ "id": "domain-product-spa",
342
+ "route": "product",
343
+ "scores": {
344
+ "mrr3": 1.0,
345
+ "ndcg3": 1.0,
346
+ "p1": 1.0,
347
+ "p3": 0.6666666666666666
348
+ }
349
+ },
350
+ {
351
+ "actual": [],
352
+ "diagnostics": {
353
+ "abstained": true,
354
+ "calibration_version": "2026-08-12-v1",
355
+ "margin": 0.6408757429869336,
356
+ "normalized_query": "platform for monitoring digital threats and protecting systems",
357
+ "query_rewrites": [],
358
+ "reason": "low-confidence",
359
+ "runner_up_score": 5.294892947558106,
360
+ "search_query": "platform for monitoring digital threats and protecting systems",
361
+ "token_coverage": 0.5,
362
+ "top_score": 5.935768690545039
363
+ },
364
+ "expectedRoute": null,
365
+ "grades": [],
366
+ "id": "domain-product-security-paraphrase",
367
+ "route": "product",
368
+ "scores": {
369
+ "mrr3": 0.0,
370
+ "ndcg3": 0.0,
371
+ "p1": 0.0,
372
+ "p3": 0.0
373
+ }
374
+ },
375
+ {
376
+ "actual": [
377
+ {
378
+ "Category": "Accessibility",
379
+ "Issue": "Keyboard Navigation"
380
+ },
381
+ {
382
+ "Category": "Accessibility",
383
+ "Issue": "Focus Not Obscured (Enhanced)"
384
+ },
385
+ {
386
+ "Category": "Accessibility",
387
+ "Issue": "Focus Not Obscured (Minimum)"
388
+ }
389
+ ],
390
+ "diagnostics": {
391
+ "abstained": false,
392
+ "calibration_version": "2026-08-12-v1",
393
+ "margin": 7.712612997594313,
394
+ "normalized_query": "visible focus and complete keyboard navigation for web users",
395
+ "query_rewrites": [],
396
+ "reason": "matched",
397
+ "runner_up_score": 9.166328360401398,
398
+ "search_query": "visible focus and complete keyboard navigation for web users",
399
+ "token_coverage": 1.0,
400
+ "top_score": 16.87894135799571
401
+ },
402
+ "expectedRoute": null,
403
+ "grades": [
404
+ 2,
405
+ 0,
406
+ 0
407
+ ],
408
+ "id": "domain-ux-keyboard-focus",
409
+ "route": "ux",
410
+ "scores": {
411
+ "mrr3": 1.0,
412
+ "ndcg3": 0.6131471927654584,
413
+ "p1": 1.0,
414
+ "p3": 0.3333333333333333
415
+ }
416
+ },
417
+ {
418
+ "actual": [
419
+ {
420
+ "Category": "Animation",
421
+ "Issue": "Excessive Motion"
422
+ },
423
+ {
424
+ "Category": "Animation",
425
+ "Issue": "Reduced Motion"
426
+ },
427
+ {
428
+ "Category": "Animation",
429
+ "Issue": "Continuous Animation"
430
+ }
431
+ ],
432
+ "diagnostics": {
433
+ "abstained": false,
434
+ "calibration_version": "2026-08-12-v1",
435
+ "margin": 3.342400772580876,
436
+ "normalized_query": "stop animations making people sick and honor their motion preference",
437
+ "query_rewrites": [],
438
+ "reason": "matched",
439
+ "runner_up_score": 4.7581916385107546,
440
+ "search_query": "stop animations making people sick and honor their motion preference",
441
+ "token_coverage": 0.2222222222222222,
442
+ "top_score": 8.10059241109163
443
+ },
444
+ "expectedRoute": null,
445
+ "grades": [
446
+ 1,
447
+ 2,
448
+ 0
449
+ ],
450
+ "id": "domain-ux-motion-paraphrase",
451
+ "route": "ux",
452
+ "scores": {
453
+ "mrr3": 1.0,
454
+ "ndcg3": 0.7967075809905066,
455
+ "p1": 1.0,
456
+ "p3": 0.6666666666666666
457
+ }
458
+ },
459
+ {
460
+ "actual": [
461
+ {
462
+ "Category": "Serif + Sans",
463
+ "Font Pairing Name": "Luxury Serif"
464
+ },
465
+ {
466
+ "Category": "Serif + Sans",
467
+ "Font Pairing Name": "Classic Elegant"
468
+ },
469
+ {
470
+ "Category": "Serif + Sans",
471
+ "Font Pairing Name": "Real Estate Luxury"
472
+ }
473
+ ],
474
+ "diagnostics": {
475
+ "abstained": false,
476
+ "calibration_version": "2026-08-12-v1",
477
+ "margin": 0.4054912435846667,
478
+ "normalized_query": "elegant luxury serif heading with clean readable body font",
479
+ "query_rewrites": [],
480
+ "reason": "matched",
481
+ "runner_up_score": 7.678808998514057,
482
+ "search_query": "elegant luxury serif heading with clean readable body font",
483
+ "token_coverage": 0.6666666666666666,
484
+ "top_score": 8.084300242098724
485
+ },
486
+ "expectedRoute": null,
487
+ "grades": [
488
+ 2,
489
+ 2,
490
+ 0
491
+ ],
492
+ "id": "domain-typography-luxury",
493
+ "route": "typography",
494
+ "scores": {
495
+ "mrr3": 1.0,
496
+ "ndcg3": 0.9072836011519267,
497
+ "p1": 1.0,
498
+ "p3": 0.6666666666666666
499
+ }
500
+ },
501
+ {
502
+ "actual": [
503
+ {
504
+ "Category": "Sans + Sans",
505
+ "Font Pairing Name": "Accessibility First"
506
+ },
507
+ {
508
+ "Category": "Serif + Sans",
509
+ "Font Pairing Name": "Academic/Research"
510
+ },
511
+ {
512
+ "Category": "Sans + Serif (Display) + Mono",
513
+ "Font Pairing Name": "Bold Typography Mobile (Inter Poster)"
514
+ }
515
+ ],
516
+ "diagnostics": {
517
+ "abstained": false,
518
+ "calibration_version": "2026-08-12-v1",
519
+ "margin": 11.232450027626605,
520
+ "normalized_query": "dyslexia frendly hyperlegible inclusive type pairing",
521
+ "query_rewrites": [],
522
+ "reason": "matched",
523
+ "runner_up_score": 3.7239164952881945,
524
+ "search_query": "dyslexia frendly hyperlegible inclusive type pairing",
525
+ "token_coverage": 0.6666666666666666,
526
+ "top_score": 14.956366522914799
527
+ },
528
+ "expectedRoute": null,
529
+ "grades": [
530
+ 2,
531
+ 1,
532
+ 0
533
+ ],
534
+ "id": "domain-typography-accessible-typo",
535
+ "route": "typography",
536
+ "scores": {
537
+ "mrr3": 1.0,
538
+ "ndcg3": 1.0,
539
+ "p1": 1.0,
540
+ "p3": 0.6666666666666666
541
+ }
542
+ },
543
+ {
544
+ "actual": [
545
+ {
546
+ "Category": "Action",
547
+ "Icon Name": "magnifying-glass"
548
+ },
549
+ {
550
+ "Category": "Guideline",
551
+ "Icon Name": "icon-context-accessibility"
552
+ },
553
+ {
554
+ "Category": "Style Config",
555
+ "Icon Name": "cyberpunk-icon-system"
556
+ }
557
+ ],
558
+ "diagnostics": {
559
+ "abstained": false,
560
+ "calibration_version": "2026-08-12-v1",
561
+ "margin": 13.46638832339189,
562
+ "normalized_query": "find lookup search icon for a query field",
563
+ "query_rewrites": [],
564
+ "reason": "matched",
565
+ "runner_up_score": 4.529111017843179,
566
+ "search_query": "find lookup search icon for a query field",
567
+ "token_coverage": 0.8333333333333334,
568
+ "top_score": 17.995499341235067
569
+ },
570
+ "expectedRoute": null,
571
+ "grades": [
572
+ 2,
573
+ 0,
574
+ 0
575
+ ],
576
+ "id": "domain-icons-search",
577
+ "route": "icons",
578
+ "scores": {
579
+ "mrr3": 1.0,
580
+ "ndcg3": 0.8262346571285599,
581
+ "p1": 1.0,
582
+ "p3": 0.3333333333333333
583
+ }
584
+ },
585
+ {
586
+ "actual": [
587
+ {
588
+ "Category": "Status",
589
+ "Icon Name": "warning"
590
+ },
591
+ {
592
+ "Category": "Status",
593
+ "Icon Name": "check"
594
+ },
595
+ {
596
+ "Category": "Status",
597
+ "Icon Name": "x-circle"
598
+ }
599
+ ],
600
+ "diagnostics": {
601
+ "abstained": false,
602
+ "calibration_version": "2026-08-12-v1",
603
+ "margin": 11.175655604554517,
604
+ "normalized_query": "warnng caution danger status symbol",
605
+ "query_rewrites": [],
606
+ "reason": "matched",
607
+ "runner_up_score": 2.771682721324879,
608
+ "search_query": "warnng caution danger status symbol",
609
+ "token_coverage": 0.6,
610
+ "top_score": 13.947338325879397
611
+ },
612
+ "expectedRoute": null,
613
+ "grades": [
614
+ 2,
615
+ 0,
616
+ 0
617
+ ],
618
+ "id": "domain-icons-warning-typo",
619
+ "route": "icons",
620
+ "scores": {
621
+ "mrr3": 1.0,
622
+ "ndcg3": 0.8262346571285599,
623
+ "p1": 1.0,
624
+ "p3": 0.3333333333333333
625
+ }
626
+ },
627
+ {
628
+ "actual": [
629
+ {
630
+ "Category": "Scroll Reveal",
631
+ "Intensity Tier": "Subtle",
632
+ "Trigger": "scroll (viewport enter)"
633
+ },
634
+ {
635
+ "Category": "Scroll Reveal",
636
+ "Intensity Tier": "Standard",
637
+ "Trigger": "scroll (viewport enter)"
638
+ },
639
+ {
640
+ "Category": "Scroll Reveal",
641
+ "Intensity Tier": "Complex",
642
+ "Trigger": "scroll (continuous scrub)"
643
+ }
644
+ ],
645
+ "diagnostics": {
646
+ "abstained": false,
647
+ "calibration_version": "2026-08-12-v1",
648
+ "margin": 0.47825840830284605,
649
+ "normalized_query": "GSAP reveal elements when they enter the viewport on scroll",
650
+ "query_rewrites": [
651
+ "gsap->animation"
652
+ ],
653
+ "reason": "matched",
654
+ "runner_up_score": 7.3587320792912365,
655
+ "search_query": "GSAP reveal elements when they enter the viewport on scroll animation",
656
+ "token_coverage": 0.5555555555555556,
657
+ "top_score": 7.836990487594083
658
+ },
659
+ "expectedRoute": null,
660
+ "grades": [
661
+ 2,
662
+ 2,
663
+ 1
664
+ ],
665
+ "id": "domain-gsap-scroll-reveal",
666
+ "route": "gsap",
667
+ "scores": {
668
+ "mrr3": 1.0,
669
+ "ndcg3": 1.0,
670
+ "p1": 1.0,
671
+ "p3": 1.0
672
+ }
673
+ },
674
+ {
675
+ "actual": [
676
+ {
677
+ "Category": "Loading / Skeleton",
678
+ "Intensity Tier": "Subtle",
679
+ "Trigger": "on mount / async wait"
680
+ },
681
+ {
682
+ "Category": "Loading / Skeleton",
683
+ "Intensity Tier": "Standard",
684
+ "Trigger": "on mount / async wait"
685
+ }
686
+ ],
687
+ "diagnostics": {
688
+ "abstained": false,
689
+ "calibration_version": "2026-08-12-v1",
690
+ "margin": 0.19985661655781062,
691
+ "normalized_query": "skeletn shimmer loader while async content waits",
692
+ "query_rewrites": [],
693
+ "reason": "matched",
694
+ "runner_up_score": 3.464834479866627,
695
+ "search_query": "skeletn shimmer loader while async content waits",
696
+ "token_coverage": 0.42857142857142855,
697
+ "top_score": 3.6646910964244377
698
+ },
699
+ "expectedRoute": null,
700
+ "grades": [
701
+ 2,
702
+ 1
703
+ ],
704
+ "id": "domain-gsap-skeleton-typo",
705
+ "route": "gsap",
706
+ "scores": {
707
+ "mrr3": 1.0,
708
+ "ndcg3": 1.0,
709
+ "p1": 1.0,
710
+ "p3": 0.6666666666666666
711
+ }
712
+ },
713
+ {
714
+ "actual": [
715
+ {
716
+ "Category": "Async Waterfall",
717
+ "Issue": "Promise.all Parallel"
718
+ },
719
+ {
720
+ "Category": "Async Waterfall",
721
+ "Issue": "Dependency Parallelization"
722
+ },
723
+ {
724
+ "Category": "Server",
725
+ "Issue": "React.cache Dedup"
726
+ }
727
+ ],
728
+ "diagnostics": {
729
+ "abstained": false,
730
+ "calibration_version": "2026-08-12-v1",
731
+ "margin": 9.800420361659564,
732
+ "normalized_query": "React Promise.all parallel concurrent requests instead of waterfall",
733
+ "query_rewrites": [],
734
+ "reason": "matched",
735
+ "runner_up_score": 8.52666055496694,
736
+ "search_query": "React Promise.all parallel concurrent requests instead of waterfall",
737
+ "token_coverage": 1.0,
738
+ "top_score": 18.327080916626503
739
+ },
740
+ "expectedRoute": null,
741
+ "grades": [
742
+ 2,
743
+ 1,
744
+ 0
745
+ ],
746
+ "id": "domain-react-parallel-promises",
747
+ "route": "react",
748
+ "scores": {
749
+ "mrr3": 1.0,
750
+ "ndcg3": 1.0,
751
+ "p1": 1.0,
752
+ "p3": 0.6666666666666666
753
+ }
754
+ },
755
+ {
756
+ "actual": [
757
+ {
758
+ "Category": "Bundle Size",
759
+ "Issue": "Conditional Loading"
760
+ },
761
+ {
762
+ "Category": "Bundle Size",
763
+ "Issue": "Preload Intent"
764
+ },
765
+ {
766
+ "Category": "Bundle Size",
767
+ "Issue": "Dynamic Imports"
768
+ }
769
+ ],
770
+ "diagnostics": {
771
+ "abstained": false,
772
+ "calibration_version": "2026-08-12-v1",
773
+ "margin": 1.0365367412508002,
774
+ "normalized_query": "load a heavy JavaScript chunk only when the component is needed",
775
+ "query_rewrites": [],
776
+ "reason": "matched",
777
+ "runner_up_score": 6.078726135115516,
778
+ "search_query": "load a heavy JavaScript chunk only when the component is needed",
779
+ "token_coverage": 0.75,
780
+ "top_score": 7.115262876366316
781
+ },
782
+ "expectedRoute": null,
783
+ "grades": [
784
+ 1,
785
+ 0,
786
+ 2
787
+ ],
788
+ "id": "domain-react-dynamic-import-paraphrase",
789
+ "route": "react",
790
+ "scores": {
791
+ "mrr3": 1.0,
792
+ "ndcg3": 0.6885288809404666,
793
+ "p1": 1.0,
794
+ "p3": 0.6666666666666666
795
+ }
796
+ },
797
+ {
798
+ "actual": [
799
+ {
800
+ "Category": "Accessibility",
801
+ "Issue": "Icon Button Labels"
802
+ },
803
+ {
804
+ "Category": "Anti-Pattern",
805
+ "Issue": "No Gesture-Only Actions"
806
+ },
807
+ {
808
+ "Category": "Accessibility",
809
+ "Issue": "Decorative Icons"
810
+ }
811
+ ],
812
+ "diagnostics": {
813
+ "abstained": false,
814
+ "calibration_version": "2026-08-12-v1",
815
+ "margin": 11.167539124802396,
816
+ "normalized_query": "accessible name for an icon-only mobile button",
817
+ "query_rewrites": [],
818
+ "reason": "matched",
819
+ "runner_up_score": 3.626190306648762,
820
+ "search_query": "accessible name for an icon-only mobile button",
821
+ "token_coverage": 0.6666666666666666,
822
+ "top_score": 14.793729431451158
823
+ },
824
+ "expectedRoute": null,
825
+ "grades": [
826
+ 2,
827
+ 0,
828
+ 0
829
+ ],
830
+ "id": "domain-web-icon-label",
831
+ "route": "web",
832
+ "scores": {
833
+ "mrr3": 1.0,
834
+ "ndcg3": 1.0,
835
+ "p1": 1.0,
836
+ "p3": 0.3333333333333333
837
+ }
838
+ },
839
+ {
840
+ "actual": [
841
+ {
842
+ "Category": "Typography",
843
+ "Issue": "Dynamic Type Support"
844
+ },
845
+ {
846
+ "Category": "Performance",
847
+ "Issue": "Virtualize Long Lists"
848
+ }
849
+ ],
850
+ "diagnostics": {
851
+ "abstained": false,
852
+ "calibration_version": "2026-08-12-v1",
853
+ "margin": 0.10147240671323177,
854
+ "normalized_query": "keep a very long mobile list smooth without rendering every row",
855
+ "query_rewrites": [],
856
+ "reason": "matched",
857
+ "runner_up_score": 3.2065985190872297,
858
+ "search_query": "keep a very long mobile list smooth without rendering every row",
859
+ "token_coverage": 0.2,
860
+ "top_score": 3.3080709258004615
861
+ },
862
+ "expectedRoute": null,
863
+ "grades": [
864
+ 0,
865
+ 2
866
+ ],
867
+ "id": "domain-web-virtual-list-paraphrase",
868
+ "route": "web",
869
+ "scores": {
870
+ "mrr3": 0.5,
871
+ "ndcg3": 0.6309297535714574,
872
+ "p1": 0.0,
873
+ "p3": 0.3333333333333333
874
+ }
875
+ },
876
+ {
877
+ "actual": [
878
+ {
879
+ "Category": "Sans Serif",
880
+ "Family": "Inter"
881
+ },
882
+ {
883
+ "Category": "Sans Serif",
884
+ "Family": "Noto Emoji"
885
+ },
886
+ {
887
+ "Category": "Sans Serif",
888
+ "Family": "Inter Tight"
889
+ }
890
+ ],
891
+ "diagnostics": {
892
+ "abstained": false,
893
+ "calibration_version": "2026-08-12-v1",
894
+ "margin": 0.37747529757203324,
895
+ "normalized_query": "Inter variable sans serif Google font family",
896
+ "query_rewrites": [],
897
+ "reason": "matched",
898
+ "runner_up_score": 8.721342653469991,
899
+ "search_query": "Inter variable sans serif Google font family",
900
+ "token_coverage": 0.8571428571428571,
901
+ "top_score": 9.098817951042024
902
+ },
903
+ "expectedRoute": null,
904
+ "grades": [
905
+ 2,
906
+ 0,
907
+ 1
908
+ ],
909
+ "id": "domain-google-fonts-inter",
910
+ "route": "google-fonts",
911
+ "scores": {
912
+ "mrr3": 1.0,
913
+ "ndcg3": 0.9639404333166532,
914
+ "p1": 1.0,
915
+ "p3": 0.6666666666666666
916
+ }
917
+ },
918
+ {
919
+ "actual": [
920
+ {
921
+ "Category": "Sans Serif",
922
+ "Family": "Atkinson Hyperlegible"
923
+ },
924
+ {
925
+ "Category": "Sans Serif",
926
+ "Family": "Atkinson Hyperlegible Mono"
927
+ },
928
+ {
929
+ "Category": "Sans Serif",
930
+ "Family": "Atkinson Hyperlegible Next"
931
+ }
932
+ ],
933
+ "diagnostics": {
934
+ "abstained": false,
935
+ "calibration_version": "2026-08-12-v1",
936
+ "margin": 0.5106003172771905,
937
+ "normalized_query": "hyperlegible accessible sans typeface for easier reading",
938
+ "query_rewrites": [],
939
+ "reason": "matched",
940
+ "runner_up_score": 6.32804090990704,
941
+ "search_query": "hyperlegible accessible sans typeface for easier reading",
942
+ "token_coverage": 0.3333333333333333,
943
+ "top_score": 6.8386412271842305
944
+ },
945
+ "expectedRoute": null,
946
+ "grades": [
947
+ 2,
948
+ 0,
949
+ 1
950
+ ],
951
+ "id": "domain-google-fonts-atkinson-paraphrase",
952
+ "route": "google-fonts",
953
+ "scores": {
954
+ "mrr3": 1.0,
955
+ "ndcg3": 0.9639404333166532,
956
+ "p1": 1.0,
957
+ "p3": 0.6666666666666666
958
+ }
959
+ },
960
+ {
961
+ "actual": [
962
+ {
963
+ "Category": "Components",
964
+ "Guideline": "Use standalone components"
965
+ },
966
+ {
967
+ "Category": "Performance",
968
+ "Guideline": "Minimize bundle with standalone APIs"
969
+ },
970
+ {
971
+ "Category": "Testing",
972
+ "Guideline": "Use TestBed for component tests"
973
+ }
974
+ ],
975
+ "diagnostics": {
976
+ "abstained": false,
977
+ "calibration_version": "2026-08-12-v1",
978
+ "margin": 6.566552335592893,
979
+ "normalized_query": "standalone Angular components for a new project",
980
+ "query_rewrites": [],
981
+ "reason": "matched",
982
+ "runner_up_score": 5.449976492762441,
983
+ "search_query": "standalone Angular components for a new project",
984
+ "token_coverage": 0.8,
985
+ "top_score": 12.016528828355334
986
+ },
987
+ "expectedRoute": null,
988
+ "grades": [
989
+ 2,
990
+ 0,
991
+ 0
992
+ ],
993
+ "id": "stack-angular-standalone",
994
+ "route": "stack",
995
+ "scores": {
996
+ "mrr3": 1.0,
997
+ "ndcg3": 1.0,
998
+ "p1": 1.0,
999
+ "p3": 0.3333333333333333
1000
+ }
1001
+ },
1002
+ {
1003
+ "actual": [
1004
+ {
1005
+ "Category": "State",
1006
+ "Guideline": "Use signals for local state"
1007
+ },
1008
+ {
1009
+ "Category": "Components",
1010
+ "Guideline": "Use signals for state"
1011
+ },
1012
+ {
1013
+ "Category": "State",
1014
+ "Guideline": "Use NgRx Signal Store for complex state"
1015
+ }
1016
+ ],
1017
+ "diagnostics": {
1018
+ "abstained": false,
1019
+ "calibration_version": "2026-08-12-v1",
1020
+ "margin": 6.6483199763736955,
1021
+ "normalized_query": "reactive local state with Angular signal primitives",
1022
+ "query_rewrites": [],
1023
+ "reason": "matched",
1024
+ "runner_up_score": 8.487784788196057,
1025
+ "search_query": "reactive local state with Angular signal primitives",
1026
+ "token_coverage": 0.8571428571428571,
1027
+ "top_score": 15.136104764569753
1028
+ },
1029
+ "expectedRoute": null,
1030
+ "grades": [
1031
+ 0,
1032
+ 2,
1033
+ 0
1034
+ ],
1035
+ "id": "stack-angular-signals-paraphrase",
1036
+ "route": "stack",
1037
+ "scores": {
1038
+ "mrr3": 0.5,
1039
+ "ndcg3": 0.6309297535714574,
1040
+ "p1": 0.0,
1041
+ "p3": 0.3333333333333333
1042
+ }
1043
+ },
1044
+ {
1045
+ "actual": [
1046
+ {
1047
+ "Category": "Architecture",
1048
+ "Guideline": "Use Islands Architecture"
1049
+ },
1050
+ {
1051
+ "Category": "Markdown",
1052
+ "Guideline": "Use MDX for components"
1053
+ },
1054
+ {
1055
+ "Category": "Architecture",
1056
+ "Guideline": "Default to zero JS"
1057
+ }
1058
+ ],
1059
+ "diagnostics": {
1060
+ "abstained": false,
1061
+ "calibration_version": "2026-08-12-v1",
1062
+ "margin": 7.6348295879388655,
1063
+ "normalized_query": "Astro islands architecture interactive components",
1064
+ "query_rewrites": [],
1065
+ "reason": "matched",
1066
+ "runner_up_score": 5.447744961773134,
1067
+ "search_query": "Astro islands architecture interactive components",
1068
+ "token_coverage": 1.0,
1069
+ "top_score": 13.082574549712
1070
+ },
1071
+ "expectedRoute": null,
1072
+ "grades": [
1073
+ 2,
1074
+ 0,
1075
+ 0
1076
+ ],
1077
+ "id": "stack-astro-islands",
1078
+ "route": "stack",
1079
+ "scores": {
1080
+ "mrr3": 1.0,
1081
+ "ndcg3": 1.0,
1082
+ "p1": 1.0,
1083
+ "p3": 0.3333333333333333
1084
+ }
1085
+ },
1086
+ {
1087
+ "actual": [],
1088
+ "diagnostics": {
1089
+ "abstained": true,
1090
+ "calibration_version": "2026-08-12-v1",
1091
+ "margin": 4.052169367659749,
1092
+ "normalized_query": "ship no browser JavaScript unless interaction requires it",
1093
+ "query_rewrites": [],
1094
+ "reason": "low-confidence",
1095
+ "runner_up_score": 0.0,
1096
+ "search_query": "ship no browser JavaScript unless interaction requires it",
1097
+ "token_coverage": 0.16666666666666666,
1098
+ "top_score": 4.052169367659749
1099
+ },
1100
+ "expectedRoute": null,
1101
+ "grades": [],
1102
+ "id": "stack-astro-zero-js-paraphrase",
1103
+ "route": "stack",
1104
+ "scores": {
1105
+ "mrr3": 0.0,
1106
+ "ndcg3": 0.0,
1107
+ "p1": 0.0,
1108
+ "p3": 0.0
1109
+ }
1110
+ },
1111
+ {
1112
+ "actual": [
1113
+ {
1114
+ "Category": "XAML",
1115
+ "Guideline": "Use Avalonia XAML namespace"
1116
+ },
1117
+ {
1118
+ "Category": "XAML",
1119
+ "Guideline": "Enable compiled bindings globally"
1120
+ },
1121
+ {
1122
+ "Category": "Animation",
1123
+ "Guideline": "Use CSS-like keyframe animations"
1124
+ }
1125
+ ],
1126
+ "diagnostics": {
1127
+ "abstained": false,
1128
+ "calibration_version": "2026-08-12-v1",
1129
+ "margin": 8.24735172482831,
1130
+ "normalized_query": "Avalonia XAML namespace declaration",
1131
+ "query_rewrites": [],
1132
+ "reason": "matched",
1133
+ "runner_up_score": 3.6580251097976015,
1134
+ "search_query": "Avalonia XAML namespace declaration",
1135
+ "token_coverage": 0.75,
1136
+ "top_score": 11.905376834625912
1137
+ },
1138
+ "expectedRoute": null,
1139
+ "grades": [
1140
+ 2,
1141
+ 0,
1142
+ 0
1143
+ ],
1144
+ "id": "stack-avalonia-namespace",
1145
+ "route": "stack",
1146
+ "scores": {
1147
+ "mrr3": 1.0,
1148
+ "ndcg3": 1.0,
1149
+ "p1": 1.0,
1150
+ "p3": 0.3333333333333333
1151
+ }
1152
+ },
1153
+ {
1154
+ "actual": [
1155
+ {
1156
+ "Category": "XAML",
1157
+ "Guideline": "Use compiled bindings with x:DataType"
1158
+ },
1159
+ {
1160
+ "Category": "XAML",
1161
+ "Guideline": "Enable compiled bindings globally"
1162
+ },
1163
+ {
1164
+ "Category": "Performance",
1165
+ "Guideline": "Use compiled bindings and TrimmerRoots.xml for PublishAot"
1166
+ }
1167
+ ],
1168
+ "diagnostics": {
1169
+ "abstained": false,
1170
+ "calibration_version": "2026-08-12-v1",
1171
+ "margin": 3.6606165467089795,
1172
+ "normalized_query": "type checked compiled binding with x DataType",
1173
+ "query_rewrites": [],
1174
+ "reason": "matched",
1175
+ "runner_up_score": 7.811951298927232,
1176
+ "search_query": "type checked compiled binding with x DataType",
1177
+ "token_coverage": 0.8333333333333334,
1178
+ "top_score": 11.472567845636211
1179
+ },
1180
+ "expectedRoute": null,
1181
+ "grades": [
1182
+ 2,
1183
+ 0,
1184
+ 0
1185
+ ],
1186
+ "id": "stack-avalonia-compiled-binding",
1187
+ "route": "stack",
1188
+ "scores": {
1189
+ "mrr3": 1.0,
1190
+ "ndcg3": 1.0,
1191
+ "p1": 1.0,
1192
+ "p3": 0.3333333333333333
1193
+ }
1194
+ },
1195
+ {
1196
+ "actual": [
1197
+ {
1198
+ "Category": "Widgets",
1199
+ "Guideline": "Use StatelessWidget when possible"
1200
+ },
1201
+ {
1202
+ "Category": "State",
1203
+ "Guideline": "Prefer Riverpod or Provider"
1204
+ },
1205
+ {
1206
+ "Category": "State",
1207
+ "Guideline": "Use setState correctly"
1208
+ }
1209
+ ],
1210
+ "diagnostics": {
1211
+ "abstained": false,
1212
+ "calibration_version": "2026-08-12-v1",
1213
+ "margin": 3.902365771945936,
1214
+ "normalized_query": "prefer StatelessWidget when Flutter UI has no mutable state",
1215
+ "query_rewrites": [],
1216
+ "reason": "matched",
1217
+ "runner_up_score": 6.130414879101661,
1218
+ "search_query": "prefer StatelessWidget when Flutter UI has no mutable state",
1219
+ "token_coverage": 0.75,
1220
+ "top_score": 10.032780651047597
1221
+ },
1222
+ "expectedRoute": null,
1223
+ "grades": [
1224
+ 2,
1225
+ 0,
1226
+ 0
1227
+ ],
1228
+ "id": "stack-flutter-stateless",
1229
+ "route": "stack",
1230
+ "scores": {
1231
+ "mrr3": 1.0,
1232
+ "ndcg3": 1.0,
1233
+ "p1": 1.0,
1234
+ "p3": 0.3333333333333333
1235
+ }
1236
+ },
1237
+ {
1238
+ "actual": [
1239
+ {
1240
+ "Category": "Widgets",
1241
+ "Guideline": "Use const constructors"
1242
+ },
1243
+ {
1244
+ "Category": "Performance",
1245
+ "Guideline": "Use const widgets"
1246
+ },
1247
+ {
1248
+ "Category": "Widgets",
1249
+ "Guideline": "Use StatelessWidget when possible"
1250
+ }
1251
+ ],
1252
+ "diagnostics": {
1253
+ "abstained": false,
1254
+ "calibration_version": "2026-08-12-v1",
1255
+ "margin": 2.859752022203951,
1256
+ "normalized_query": "reduce Flutter rebuild cost with immutable compile-time widgets",
1257
+ "query_rewrites": [],
1258
+ "reason": "matched",
1259
+ "runner_up_score": 6.347284919209351,
1260
+ "search_query": "reduce Flutter rebuild cost with immutable compile-time widgets",
1261
+ "token_coverage": 0.8888888888888888,
1262
+ "top_score": 9.207036941413302
1263
+ },
1264
+ "expectedRoute": null,
1265
+ "grades": [
1266
+ 2,
1267
+ 0,
1268
+ 0
1269
+ ],
1270
+ "id": "stack-flutter-const-paraphrase",
1271
+ "route": "stack",
1272
+ "scores": {
1273
+ "mrr3": 1.0,
1274
+ "ndcg3": 1.0,
1275
+ "p1": 1.0,
1276
+ "p3": 0.3333333333333333
1277
+ }
1278
+ },
1279
+ {
1280
+ "actual": [
1281
+ {
1282
+ "Category": "Z-Index",
1283
+ "Guideline": "Use Tailwind z-* scale"
1284
+ },
1285
+ {
1286
+ "Category": "Spacing",
1287
+ "Guideline": "Consistent spacing scale"
1288
+ },
1289
+ {
1290
+ "Category": "Performance",
1291
+ "Guideline": "Declare non-detected sources"
1292
+ }
1293
+ ],
1294
+ "diagnostics": {
1295
+ "abstained": false,
1296
+ "calibration_version": "2026-08-12-v1",
1297
+ "margin": 3.634601707496982,
1298
+ "normalized_query": "Tailwind z-index utility scale for layered UI",
1299
+ "query_rewrites": [],
1300
+ "reason": "matched",
1301
+ "runner_up_score": 7.208515535060073,
1302
+ "search_query": "Tailwind z-index utility scale for layered UI",
1303
+ "token_coverage": 0.8333333333333334,
1304
+ "top_score": 10.843117242557055
1305
+ },
1306
+ "expectedRoute": null,
1307
+ "grades": [
1308
+ 2,
1309
+ 0,
1310
+ 0
1311
+ ],
1312
+ "id": "stack-html-tailwind-z-index",
1313
+ "route": "stack",
1314
+ "scores": {
1315
+ "mrr3": 1.0,
1316
+ "ndcg3": 1.0,
1317
+ "p1": 1.0,
1318
+ "p3": 0.3333333333333333
1319
+ }
1320
+ },
1321
+ {
1322
+ "actual": [
1323
+ {
1324
+ "Category": "Animation",
1325
+ "Guideline": "Hover transitions"
1326
+ },
1327
+ {
1328
+ "Category": "Layout",
1329
+ "Guideline": "Container queries"
1330
+ },
1331
+ {
1332
+ "Category": "Animation",
1333
+ "Guideline": "Transition duration"
1334
+ }
1335
+ ],
1336
+ "diagnostics": {
1337
+ "abstained": false,
1338
+ "calibration_version": "2026-08-12-v1",
1339
+ "margin": 2.919055718924226,
1340
+ "normalized_query": "smooth transition when a Tailwind element is hovered",
1341
+ "query_rewrites": [],
1342
+ "reason": "matched",
1343
+ "runner_up_score": 4.947978221881804,
1344
+ "search_query": "smooth transition when a Tailwind element is hovered",
1345
+ "token_coverage": 0.6666666666666666,
1346
+ "top_score": 7.86703394080603
1347
+ },
1348
+ "expectedRoute": null,
1349
+ "grades": [
1350
+ 2,
1351
+ 0,
1352
+ 0
1353
+ ],
1354
+ "id": "stack-html-tailwind-hover",
1355
+ "route": "stack",
1356
+ "scores": {
1357
+ "mrr3": 1.0,
1358
+ "ndcg3": 1.0,
1359
+ "p1": 1.0,
1360
+ "p3": 0.3333333333333333
1361
+ }
1362
+ },
1363
+ {
1364
+ "actual": [
1365
+ {
1366
+ "Category": "Application",
1367
+ "Guideline": "Start UI from Application subclass"
1368
+ },
1369
+ {
1370
+ "Category": "Threading",
1371
+ "Guideline": "Update UI only on FX thread"
1372
+ },
1373
+ {
1374
+ "Category": "Theme",
1375
+ "Guideline": "Use AtlantaFX as the enterprise theme baseline"
1376
+ }
1377
+ ],
1378
+ "diagnostics": {
1379
+ "abstained": false,
1380
+ "calibration_version": "2026-08-12-v1",
1381
+ "margin": 6.1251861498568685,
1382
+ "normalized_query": "launch JavaFX UI from an Application subclass",
1383
+ "query_rewrites": [],
1384
+ "reason": "matched",
1385
+ "runner_up_score": 6.8361655485691815,
1386
+ "search_query": "launch JavaFX UI from an Application subclass",
1387
+ "token_coverage": 0.8333333333333334,
1388
+ "top_score": 12.96135169842605
1389
+ },
1390
+ "expectedRoute": null,
1391
+ "grades": [
1392
+ 2,
1393
+ 0,
1394
+ 0
1395
+ ],
1396
+ "id": "stack-javafx-application",
1397
+ "route": "stack",
1398
+ "scores": {
1399
+ "mrr3": 1.0,
1400
+ "ndcg3": 1.0,
1401
+ "p1": 1.0,
1402
+ "p3": 0.3333333333333333
1403
+ }
1404
+ },
1405
+ {
1406
+ "actual": [
1407
+ {
1408
+ "Category": "Threading",
1409
+ "Guideline": "Keep work off the FX Application Thread"
1410
+ },
1411
+ {
1412
+ "Category": "Threading",
1413
+ "Guideline": "Update UI only on FX thread"
1414
+ },
1415
+ {
1416
+ "Category": "CSS",
1417
+ "Guideline": "Use design tokens through looked-up colors"
1418
+ }
1419
+ ],
1420
+ "diagnostics": {
1421
+ "abstained": false,
1422
+ "calibration_version": "2026-08-12-v1",
1423
+ "margin": 2.555947932900576,
1424
+ "normalized_query": "prevent slow background work from freezing the FX application thread",
1425
+ "query_rewrites": [],
1426
+ "reason": "matched",
1427
+ "runner_up_score": 12.976523086530914,
1428
+ "search_query": "prevent slow background work from freezing the FX application thread",
1429
+ "token_coverage": 0.6666666666666666,
1430
+ "top_score": 15.53247101943149
1431
+ },
1432
+ "expectedRoute": null,
1433
+ "grades": [
1434
+ 2,
1435
+ 0,
1436
+ 0
1437
+ ],
1438
+ "id": "stack-javafx-threading-paraphrase",
1439
+ "route": "stack",
1440
+ "scores": {
1441
+ "mrr3": 1.0,
1442
+ "ndcg3": 1.0,
1443
+ "p1": 1.0,
1444
+ "p3": 0.3333333333333333
1445
+ }
1446
+ },
1447
+ {
1448
+ "actual": [
1449
+ {
1450
+ "Category": "Composable",
1451
+ "Guideline": "Pure UI composables"
1452
+ },
1453
+ {
1454
+ "Category": "State",
1455
+ "Guideline": "Snapshot state only"
1456
+ },
1457
+ {
1458
+ "Category": "Composable",
1459
+ "Guideline": "Small composables"
1460
+ }
1461
+ ],
1462
+ "diagnostics": {
1463
+ "abstained": false,
1464
+ "calibration_version": "2026-08-12-v1",
1465
+ "margin": 2.5467806853020214,
1466
+ "normalized_query": "pure Jetpack Compose UI composables",
1467
+ "query_rewrites": [],
1468
+ "reason": "matched",
1469
+ "runner_up_score": 5.311775987059262,
1470
+ "search_query": "pure Jetpack Compose UI composables",
1471
+ "token_coverage": 0.8,
1472
+ "top_score": 7.858556672361283
1473
+ },
1474
+ "expectedRoute": null,
1475
+ "grades": [
1476
+ 2,
1477
+ 0,
1478
+ 0
1479
+ ],
1480
+ "id": "stack-compose-pure-ui",
1481
+ "route": "stack",
1482
+ "scores": {
1483
+ "mrr3": 1.0,
1484
+ "ndcg3": 1.0,
1485
+ "p1": 1.0,
1486
+ "p3": 0.3333333333333333
1487
+ }
1488
+ },
1489
+ {
1490
+ "actual": [
1491
+ {
1492
+ "Category": "State",
1493
+ "Guideline": "Snapshot state only"
1494
+ },
1495
+ {
1496
+ "Category": "Layout",
1497
+ "Guideline": "Avoid nested scroll containers"
1498
+ },
1499
+ {
1500
+ "Category": "State",
1501
+ "Guideline": "Single source of truth"
1502
+ }
1503
+ ],
1504
+ "diagnostics": {
1505
+ "abstained": false,
1506
+ "calibration_version": "2026-08-12-v1",
1507
+ "margin": 1.1660673240932597,
1508
+ "normalized_query": "one authoritative owner for Compose screen state",
1509
+ "query_rewrites": [],
1510
+ "reason": "matched",
1511
+ "runner_up_score": 5.439024678588048,
1512
+ "search_query": "one authoritative owner for Compose screen state",
1513
+ "token_coverage": 0.6666666666666666,
1514
+ "top_score": 6.605092002681308
1515
+ },
1516
+ "expectedRoute": null,
1517
+ "grades": [
1518
+ 0,
1519
+ 0,
1520
+ 2
1521
+ ],
1522
+ "id": "stack-compose-single-source",
1523
+ "route": "stack",
1524
+ "scores": {
1525
+ "mrr3": 0.3333333333333333,
1526
+ "ndcg3": 0.5,
1527
+ "p1": 0.0,
1528
+ "p3": 0.3333333333333333
1529
+ }
1530
+ },
1531
+ {
1532
+ "actual": [
1533
+ {
1534
+ "Category": "Blade Templates",
1535
+ "Guideline": "Use Blade components for reusable UI"
1536
+ },
1537
+ {
1538
+ "Category": "Components",
1539
+ "Guideline": "Use anonymous Blade components for UI primitives"
1540
+ },
1541
+ {
1542
+ "Category": "Styling",
1543
+ "Guideline": "Set up Tailwind CSS via Vite"
1544
+ }
1545
+ ],
1546
+ "diagnostics": {
1547
+ "abstained": false,
1548
+ "calibration_version": "2026-08-12-v1",
1549
+ "margin": 1.8287280502716037,
1550
+ "normalized_query": "reusable Laravel Blade UI components",
1551
+ "query_rewrites": [],
1552
+ "reason": "matched",
1553
+ "runner_up_score": 9.707535053949467,
1554
+ "search_query": "reusable Laravel Blade UI components",
1555
+ "token_coverage": 1.0,
1556
+ "top_score": 11.53626310422107
1557
+ },
1558
+ "expectedRoute": null,
1559
+ "grades": [
1560
+ 2,
1561
+ 0,
1562
+ 0
1563
+ ],
1564
+ "id": "stack-laravel-blade-component",
1565
+ "route": "stack",
1566
+ "scores": {
1567
+ "mrr3": 1.0,
1568
+ "ndcg3": 1.0,
1569
+ "p1": 1.0,
1570
+ "p3": 0.3333333333333333
1571
+ }
1572
+ },
1573
+ {
1574
+ "actual": [
1575
+ {
1576
+ "Category": "Blade Templates",
1577
+ "Guideline": "Use @props for component type-safety"
1578
+ },
1579
+ {
1580
+ "Category": "Livewire",
1581
+ "Guideline": "Bind inputs with wire:model"
1582
+ },
1583
+ {
1584
+ "Category": "Blade Templates",
1585
+ "Guideline": "Use Blade components for reusable UI"
1586
+ }
1587
+ ],
1588
+ "diagnostics": {
1589
+ "abstained": false,
1590
+ "calibration_version": "2026-08-12-v1",
1591
+ "margin": 7.6191267013724495,
1592
+ "normalized_query": "declare typed inputs for a Blade component using props",
1593
+ "query_rewrites": [],
1594
+ "reason": "matched",
1595
+ "runner_up_score": 6.048108478173402,
1596
+ "search_query": "declare typed inputs for a Blade component using props",
1597
+ "token_coverage": 0.7142857142857143,
1598
+ "top_score": 13.667235179545852
1599
+ },
1600
+ "expectedRoute": null,
1601
+ "grades": [
1602
+ 2,
1603
+ 0,
1604
+ 0
1605
+ ],
1606
+ "id": "stack-laravel-props",
1607
+ "route": "stack",
1608
+ "scores": {
1609
+ "mrr3": 1.0,
1610
+ "ndcg3": 1.0,
1611
+ "p1": 1.0,
1612
+ "p3": 0.3333333333333333
1613
+ }
1614
+ },
1615
+ {
1616
+ "actual": [
1617
+ {
1618
+ "Category": "Routing",
1619
+ "Guideline": "Use App Router for new projects"
1620
+ },
1621
+ {
1622
+ "Category": "Routing",
1623
+ "Guideline": "Use file-based routing"
1624
+ },
1625
+ {
1626
+ "Category": "Deployment",
1627
+ "Guideline": "Use Vercel for easiest deploy"
1628
+ }
1629
+ ],
1630
+ "diagnostics": {
1631
+ "abstained": false,
1632
+ "calibration_version": "2026-08-12-v1",
1633
+ "margin": 8.675077924446402,
1634
+ "normalized_query": "Next.js App Router for a new project",
1635
+ "query_rewrites": [],
1636
+ "reason": "matched",
1637
+ "runner_up_score": 5.757326980617933,
1638
+ "search_query": "Next.js App Router for a new project",
1639
+ "token_coverage": 0.8333333333333334,
1640
+ "top_score": 14.432404905064335
1641
+ },
1642
+ "expectedRoute": null,
1643
+ "grades": [
1644
+ 2,
1645
+ 0,
1646
+ 0
1647
+ ],
1648
+ "id": "stack-nextjs-app-router",
1649
+ "route": "stack",
1650
+ "scores": {
1651
+ "mrr3": 1.0,
1652
+ "ndcg3": 1.0,
1653
+ "p1": 1.0,
1654
+ "p3": 0.3333333333333333
1655
+ }
1656
+ },
1657
+ {
1658
+ "actual": [
1659
+ {
1660
+ "Category": "Rendering",
1661
+ "Guideline": "Use Server Components by default"
1662
+ },
1663
+ {
1664
+ "Category": "Rendering",
1665
+ "Guideline": "Use streaming for better UX"
1666
+ },
1667
+ {
1668
+ "Category": "Environment",
1669
+ "Guideline": "Use NEXT_PUBLIC prefix"
1670
+ }
1671
+ ],
1672
+ "diagnostics": {
1673
+ "abstained": false,
1674
+ "calibration_version": "2026-08-12-v1",
1675
+ "margin": 1.3338457057594848,
1676
+ "normalized_query": "render on the server by default and opt into client boundaries",
1677
+ "query_rewrites": [],
1678
+ "reason": "matched",
1679
+ "runner_up_score": 9.1240740008518,
1680
+ "search_query": "render on the server by default and opt into client boundaries",
1681
+ "token_coverage": 0.7142857142857143,
1682
+ "top_score": 10.457919706611285
1683
+ },
1684
+ "expectedRoute": null,
1685
+ "grades": [
1686
+ 2,
1687
+ 0,
1688
+ 0
1689
+ ],
1690
+ "id": "stack-nextjs-server-components",
1691
+ "route": "stack",
1692
+ "scores": {
1693
+ "mrr3": 1.0,
1694
+ "ndcg3": 1.0,
1695
+ "p1": 1.0,
1696
+ "p3": 0.3333333333333333
1697
+ }
1698
+ },
1699
+ {
1700
+ "actual": [
1701
+ {
1702
+ "Category": "Installation",
1703
+ "Guideline": "Add Nuxt UI module"
1704
+ },
1705
+ {
1706
+ "Category": "Installation",
1707
+ "Guideline": "Let Nuxt UI declare module dependencies"
1708
+ },
1709
+ {
1710
+ "Category": "Theming",
1711
+ "Guideline": "Read generated theme file to find slot names"
1712
+ }
1713
+ ],
1714
+ "diagnostics": {
1715
+ "abstained": false,
1716
+ "calibration_version": "2026-08-12-v1",
1717
+ "margin": 3.838208672372261,
1718
+ "normalized_query": "install the Nuxt UI module",
1719
+ "query_rewrites": [],
1720
+ "reason": "matched",
1721
+ "runner_up_score": 9.354004973008944,
1722
+ "search_query": "install the Nuxt UI module",
1723
+ "token_coverage": 1.0,
1724
+ "top_score": 13.192213645381205
1725
+ },
1726
+ "expectedRoute": null,
1727
+ "grades": [
1728
+ 2,
1729
+ 0,
1730
+ 0
1731
+ ],
1732
+ "id": "stack-nuxt-ui-module",
1733
+ "route": "stack",
1734
+ "scores": {
1735
+ "mrr3": 1.0,
1736
+ "ndcg3": 1.0,
1737
+ "p1": 1.0,
1738
+ "p3": 0.3333333333333333
1739
+ }
1740
+ },
1741
+ {
1742
+ "actual": [
1743
+ {
1744
+ "Category": "Components",
1745
+ "Guideline": "Use semantic color props"
1746
+ },
1747
+ {
1748
+ "Category": "Performance",
1749
+ "Guideline": "Enable component detection for Nuxt"
1750
+ },
1751
+ {
1752
+ "Category": "Theming",
1753
+ "Guideline": "Define complete custom palettes with @theme static"
1754
+ }
1755
+ ],
1756
+ "diagnostics": {
1757
+ "abstained": false,
1758
+ "calibration_version": "2026-08-12-v1",
1759
+ "margin": 13.200313041581737,
1760
+ "normalized_query": "style Nuxt UI components through meaning-based color props",
1761
+ "query_rewrites": [],
1762
+ "reason": "matched",
1763
+ "runner_up_score": 9.334552712447977,
1764
+ "search_query": "style Nuxt UI components through meaning-based color props",
1765
+ "token_coverage": 1.0,
1766
+ "top_score": 22.534865754029713
1767
+ },
1768
+ "expectedRoute": null,
1769
+ "grades": [
1770
+ 2,
1771
+ 0,
1772
+ 0
1773
+ ],
1774
+ "id": "stack-nuxt-ui-semantic-color",
1775
+ "route": "stack",
1776
+ "scores": {
1777
+ "mrr3": 1.0,
1778
+ "ndcg3": 1.0,
1779
+ "p1": 1.0,
1780
+ "p3": 0.3333333333333333
1781
+ }
1782
+ },
1783
+ {
1784
+ "actual": [
1785
+ {
1786
+ "Category": "Routing",
1787
+ "Guideline": "Use file-based routing"
1788
+ },
1789
+ {
1790
+ "Category": "Routing",
1791
+ "Guideline": "Define page metadata with definePageMeta"
1792
+ },
1793
+ {
1794
+ "Category": "Lifecycle",
1795
+ "Guideline": "Use onPrehydrate for pre-hydration logic"
1796
+ }
1797
+ ],
1798
+ "diagnostics": {
1799
+ "abstained": false,
1800
+ "calibration_version": "2026-08-12-v1",
1801
+ "margin": 5.567033399578623,
1802
+ "normalized_query": "Nuxt file-based page routing",
1803
+ "query_rewrites": [],
1804
+ "reason": "matched",
1805
+ "runner_up_score": 7.104908839950289,
1806
+ "search_query": "Nuxt file-based page routing",
1807
+ "token_coverage": 1.0,
1808
+ "top_score": 12.671942239528912
1809
+ },
1810
+ "expectedRoute": null,
1811
+ "grades": [
1812
+ 2,
1813
+ 0,
1814
+ 0
1815
+ ],
1816
+ "id": "stack-nuxtjs-file-routing",
1817
+ "route": "stack",
1818
+ "scores": {
1819
+ "mrr3": 1.0,
1820
+ "ndcg3": 1.0,
1821
+ "p1": 1.0,
1822
+ "p3": 0.3333333333333333
1823
+ }
1824
+ },
1825
+ {
1826
+ "actual": [
1827
+ {
1828
+ "Category": "Rendering",
1829
+ "Guideline": "Use .client suffix for client-only components"
1830
+ },
1831
+ {
1832
+ "Category": "Rendering",
1833
+ "Guideline": "Use .server suffix for server-only components"
1834
+ },
1835
+ {
1836
+ "Category": "Plugins",
1837
+ "Guideline": "Use .client or .server suffix"
1838
+ }
1839
+ ],
1840
+ "diagnostics": {
1841
+ "abstained": false,
1842
+ "calibration_version": "2026-08-12-v1",
1843
+ "margin": 1.143178773862184,
1844
+ "normalized_query": "server render Nuxt pages unless a client-only boundary is necessary",
1845
+ "query_rewrites": [],
1846
+ "reason": "matched",
1847
+ "runner_up_score": 9.132761728060801,
1848
+ "search_query": "server render Nuxt pages unless a client-only boundary is necessary",
1849
+ "token_coverage": 0.6666666666666666,
1850
+ "top_score": 10.275940501922985
1851
+ },
1852
+ "expectedRoute": null,
1853
+ "grades": [
1854
+ 0,
1855
+ 0,
1856
+ 0
1857
+ ],
1858
+ "id": "stack-nuxtjs-ssr",
1859
+ "route": "stack",
1860
+ "scores": {
1861
+ "mrr3": 0.0,
1862
+ "ndcg3": 0.0,
1863
+ "p1": 0.0,
1864
+ "p3": 0.0
1865
+ }
1866
+ },
1867
+ {
1868
+ "actual": [
1869
+ {
1870
+ "Category": "Components",
1871
+ "Guideline": "Use functional components"
1872
+ },
1873
+ {
1874
+ "Category": "Animation",
1875
+ "Guideline": "Use gesture handler"
1876
+ },
1877
+ {
1878
+ "Category": "Native",
1879
+ "Guideline": "Use Expo when possible"
1880
+ }
1881
+ ],
1882
+ "diagnostics": {
1883
+ "abstained": false,
1884
+ "calibration_version": "2026-08-12-v1",
1885
+ "margin": 4.989968098406658,
1886
+ "normalized_query": "functional React Native components",
1887
+ "query_rewrites": [],
1888
+ "reason": "matched",
1889
+ "runner_up_score": 4.1125670990542265,
1890
+ "search_query": "functional React Native components",
1891
+ "token_coverage": 1.0,
1892
+ "top_score": 9.102535197460885
1893
+ },
1894
+ "expectedRoute": null,
1895
+ "grades": [
1896
+ 2,
1897
+ 0,
1898
+ 0
1899
+ ],
1900
+ "id": "stack-react-native-functional",
1901
+ "route": "stack",
1902
+ "scores": {
1903
+ "mrr3": 1.0,
1904
+ "ndcg3": 1.0,
1905
+ "p1": 1.0,
1906
+ "p3": 0.3333333333333333
1907
+ }
1908
+ },
1909
+ {
1910
+ "actual": [
1911
+ {
1912
+ "Category": "Styling",
1913
+ "Guideline": "Avoid inline styles"
1914
+ },
1915
+ {
1916
+ "Category": "Styling",
1917
+ "Guideline": "Use StyleSheet.create"
1918
+ },
1919
+ {
1920
+ "Category": "Testing",
1921
+ "Guideline": "Use React Native Testing Library"
1922
+ }
1923
+ ],
1924
+ "diagnostics": {
1925
+ "abstained": false,
1926
+ "calibration_version": "2026-08-12-v1",
1927
+ "margin": 3.145960230049914,
1928
+ "normalized_query": "define reusable native styles outside render instead of inline objects",
1929
+ "query_rewrites": [],
1930
+ "reason": "matched",
1931
+ "runner_up_score": 9.472145189558896,
1932
+ "search_query": "define reusable native styles outside render instead of inline objects",
1933
+ "token_coverage": 0.5555555555555556,
1934
+ "top_score": 12.61810541960881
1935
+ },
1936
+ "expectedRoute": null,
1937
+ "grades": [
1938
+ 0,
1939
+ 2,
1940
+ 0
1941
+ ],
1942
+ "id": "stack-react-native-stylesheet",
1943
+ "route": "stack",
1944
+ "scores": {
1945
+ "mrr3": 0.5,
1946
+ "ndcg3": 0.6309297535714574,
1947
+ "p1": 0.0,
1948
+ "p3": 0.3333333333333333
1949
+ }
1950
+ },
1951
+ {
1952
+ "actual": [
1953
+ {
1954
+ "Category": "State",
1955
+ "Guideline": "Use useState for local state"
1956
+ },
1957
+ {
1958
+ "Category": "Hooks",
1959
+ "Guideline": "Follow rules of hooks"
1960
+ },
1961
+ {
1962
+ "Category": "State",
1963
+ "Guideline": "Initialize state lazily"
1964
+ }
1965
+ ],
1966
+ "diagnostics": {
1967
+ "abstained": false,
1968
+ "calibration_version": "2026-08-12-v1",
1969
+ "margin": 6.620812025571922,
1970
+ "normalized_query": "React useState for component local state",
1971
+ "query_rewrites": [],
1972
+ "reason": "matched",
1973
+ "runner_up_score": 6.214454784565012,
1974
+ "search_query": "React useState for component local state",
1975
+ "token_coverage": 1.0,
1976
+ "top_score": 12.835266810136934
1977
+ },
1978
+ "expectedRoute": null,
1979
+ "grades": [
1980
+ 2,
1981
+ 0,
1982
+ 0
1983
+ ],
1984
+ "id": "stack-react-usestate",
1985
+ "route": "stack",
1986
+ "scores": {
1987
+ "mrr3": 1.0,
1988
+ "ndcg3": 1.0,
1989
+ "p1": 1.0,
1990
+ "p3": 0.3333333333333333
1991
+ }
1992
+ },
1993
+ {
1994
+ "actual": [
1995
+ {
1996
+ "Category": "Effects",
1997
+ "Guideline": "Clean up effects"
1998
+ },
1999
+ {
2000
+ "Category": "Effects",
2001
+ "Guideline": "Specify dependencies correctly"
2002
+ },
2003
+ {
2004
+ "Category": "Hooks",
2005
+ "Guideline": "Use an Effect Event for non-reactive effect logic"
2006
+ }
2007
+ ],
2008
+ "diagnostics": {
2009
+ "abstained": false,
2010
+ "calibration_version": "2026-08-12-v1",
2011
+ "margin": 1.858850894384167,
2012
+ "normalized_query": "remove subscriptions and timers when a React effect unmounts",
2013
+ "query_rewrites": [],
2014
+ "reason": "matched",
2015
+ "runner_up_score": 7.931414442853006,
2016
+ "search_query": "remove subscriptions and timers when a React effect unmounts",
2017
+ "token_coverage": 0.7142857142857143,
2018
+ "top_score": 9.790265337237173
2019
+ },
2020
+ "expectedRoute": null,
2021
+ "grades": [
2022
+ 2,
2023
+ 0,
2024
+ 0
2025
+ ],
2026
+ "id": "stack-react-effect-cleanup",
2027
+ "route": "stack",
2028
+ "scores": {
2029
+ "mrr3": 1.0,
2030
+ "ndcg3": 1.0,
2031
+ "p1": 1.0,
2032
+ "p3": 0.3333333333333333
2033
+ }
2034
+ },
2035
+ {
2036
+ "actual": [
2037
+ {
2038
+ "Category": "Setup",
2039
+ "Guideline": "Use CLI for installation"
2040
+ },
2041
+ {
2042
+ "Category": "Registry",
2043
+ "Guideline": "Inspect CLI changes before writing"
2044
+ },
2045
+ {
2046
+ "Category": "Registry",
2047
+ "Guideline": "Install public GitHub registries directly"
2048
+ }
2049
+ ],
2050
+ "diagnostics": {
2051
+ "abstained": false,
2052
+ "calibration_version": "2026-08-12-v1",
2053
+ "margin": 0.5128477752968479,
2054
+ "normalized_query": "install shadcn components with the CLI",
2055
+ "query_rewrites": [],
2056
+ "reason": "matched",
2057
+ "runner_up_score": 6.736161519655241,
2058
+ "search_query": "install shadcn components with the CLI",
2059
+ "token_coverage": 1.0,
2060
+ "top_score": 7.249009294952089
2061
+ },
2062
+ "expectedRoute": null,
2063
+ "grades": [
2064
+ 2,
2065
+ 0,
2066
+ 0
2067
+ ],
2068
+ "id": "stack-shadcn-cli",
2069
+ "route": "stack",
2070
+ "scores": {
2071
+ "mrr3": 1.0,
2072
+ "ndcg3": 1.0,
2073
+ "p1": 1.0,
2074
+ "p3": 0.3333333333333333
2075
+ }
2076
+ },
2077
+ {
2078
+ "actual": [
2079
+ {
2080
+ "Category": "Theming",
2081
+ "Guideline": "Use CSS variables for colors"
2082
+ },
2083
+ {
2084
+ "Category": "Theming",
2085
+ "Guideline": "Support dark mode"
2086
+ },
2087
+ {
2088
+ "Category": "Customization",
2089
+ "Guideline": "Create custom components"
2090
+ }
2091
+ ],
2092
+ "diagnostics": {
2093
+ "abstained": false,
2094
+ "calibration_version": "2026-08-12-v1",
2095
+ "margin": 3.986634966226747,
2096
+ "normalized_query": "theme shadcn semantic colors through custom properties",
2097
+ "query_rewrites": [],
2098
+ "reason": "matched",
2099
+ "runner_up_score": 6.805101440815466,
2100
+ "search_query": "theme shadcn semantic colors through custom properties",
2101
+ "token_coverage": 0.8571428571428571,
2102
+ "top_score": 10.791736407042213
2103
+ },
2104
+ "expectedRoute": null,
2105
+ "grades": [
2106
+ 2,
2107
+ 0,
2108
+ 0
2109
+ ],
2110
+ "id": "stack-shadcn-css-vars",
2111
+ "route": "stack",
2112
+ "scores": {
2113
+ "mrr3": 1.0,
2114
+ "ndcg3": 1.0,
2115
+ "p1": 1.0,
2116
+ "p3": 0.3333333333333333
2117
+ }
2118
+ },
2119
+ {
2120
+ "actual": [
2121
+ {
2122
+ "Category": "Reactivity",
2123
+ "Guideline": "Use $state in Svelte 5"
2124
+ },
2125
+ {
2126
+ "Category": "Stores",
2127
+ "Guideline": "Use writable for mutable state"
2128
+ },
2129
+ {
2130
+ "Category": "SvelteKit",
2131
+ "Guideline": "Use $app/state for current app state"
2132
+ }
2133
+ ],
2134
+ "diagnostics": {
2135
+ "abstained": false,
2136
+ "calibration_version": "2026-08-12-v1",
2137
+ "margin": 0.7256931731283558,
2138
+ "normalized_query": "Svelte 5 $state rune for reactive state",
2139
+ "query_rewrites": [],
2140
+ "reason": "matched",
2141
+ "runner_up_score": 7.628254489631688,
2142
+ "search_query": "Svelte 5 $state rune for reactive state",
2143
+ "token_coverage": 1.0,
2144
+ "top_score": 8.353947662760044
2145
+ },
2146
+ "expectedRoute": null,
2147
+ "grades": [
2148
+ 2,
2149
+ 0,
2150
+ 0
2151
+ ],
2152
+ "id": "stack-svelte-state",
2153
+ "route": "stack",
2154
+ "scores": {
2155
+ "mrr3": 1.0,
2156
+ "ndcg3": 1.0,
2157
+ "p1": 1.0,
2158
+ "p3": 0.3333333333333333
2159
+ }
2160
+ },
2161
+ {
2162
+ "actual": [
2163
+ {
2164
+ "Category": "Reactivity",
2165
+ "Guideline": "Use $effect for side effects"
2166
+ },
2167
+ {
2168
+ "Category": "Lifecycle",
2169
+ "Guideline": "Avoid beforeUpdate and afterUpdate"
2170
+ },
2171
+ {
2172
+ "Category": "Lifecycle",
2173
+ "Guideline": "Use onMount for initialization"
2174
+ }
2175
+ ],
2176
+ "diagnostics": {
2177
+ "abstained": false,
2178
+ "calibration_version": "2026-08-12-v1",
2179
+ "margin": 3.023618467174618,
2180
+ "normalized_query": "run a Svelte 5 side effect when reactive dependencies change",
2181
+ "query_rewrites": [],
2182
+ "reason": "matched",
2183
+ "runner_up_score": 7.882700190739712,
2184
+ "search_query": "run a Svelte 5 side effect when reactive dependencies change",
2185
+ "token_coverage": 0.875,
2186
+ "top_score": 10.90631865791433
2187
+ },
2188
+ "expectedRoute": null,
2189
+ "grades": [
2190
+ 2,
2191
+ 0,
2192
+ 0
2193
+ ],
2194
+ "id": "stack-svelte-effect",
2195
+ "route": "stack",
2196
+ "scores": {
2197
+ "mrr3": 1.0,
2198
+ "ndcg3": 1.0,
2199
+ "p1": 1.0,
2200
+ "p3": 0.3333333333333333
2201
+ }
2202
+ },
2203
+ {
2204
+ "actual": [
2205
+ {
2206
+ "Category": "State",
2207
+ "Guideline": "Use @State for local state"
2208
+ },
2209
+ {
2210
+ "Category": "Views",
2211
+ "Guideline": "Use struct for views"
2212
+ },
2213
+ {
2214
+ "Category": "State",
2215
+ "Guideline": "Use @EnvironmentObject for shared state"
2216
+ }
2217
+ ],
2218
+ "diagnostics": {
2219
+ "abstained": false,
2220
+ "calibration_version": "2026-08-12-v1",
2221
+ "margin": 7.6971805007386305,
2222
+ "normalized_query": "SwiftUI @State for view-local value state",
2223
+ "query_rewrites": [],
2224
+ "reason": "matched",
2225
+ "runner_up_score": 7.6341573731484615,
2226
+ "search_query": "SwiftUI @State for view-local value state",
2227
+ "token_coverage": 1.0,
2228
+ "top_score": 15.331337873887092
2229
+ },
2230
+ "expectedRoute": null,
2231
+ "grades": [
2232
+ 2,
2233
+ 0,
2234
+ 0
2235
+ ],
2236
+ "id": "stack-swiftui-state",
2237
+ "route": "stack",
2238
+ "scores": {
2239
+ "mrr3": 1.0,
2240
+ "ndcg3": 1.0,
2241
+ "p1": 1.0,
2242
+ "p3": 0.3333333333333333
2243
+ }
2244
+ },
2245
+ {
2246
+ "actual": [
2247
+ {
2248
+ "Category": "Navigation",
2249
+ "Guideline": "Use NavigationStack or NavigationSplitView (iOS 16+)"
2250
+ },
2251
+ {
2252
+ "Category": "Observable",
2253
+ "Guideline": "Use @Observable macro (iOS 17+)"
2254
+ },
2255
+ {
2256
+ "Category": "Navigation",
2257
+ "Guideline": "Use navigationDestination"
2258
+ }
2259
+ ],
2260
+ "diagnostics": {
2261
+ "abstained": false,
2262
+ "calibration_version": "2026-08-12-v1",
2263
+ "margin": 5.209907857758237,
2264
+ "normalized_query": "modern value-driven iOS navigation container replacing NavigationView",
2265
+ "query_rewrites": [],
2266
+ "reason": "matched",
2267
+ "runner_up_score": 5.839858032176647,
2268
+ "search_query": "modern value-driven iOS navigation container replacing NavigationView",
2269
+ "token_coverage": 0.625,
2270
+ "top_score": 11.049765889934884
2271
+ },
2272
+ "expectedRoute": null,
2273
+ "grades": [
2274
+ 2,
2275
+ 0,
2276
+ 0
2277
+ ],
2278
+ "id": "stack-swiftui-navigation",
2279
+ "route": "stack",
2280
+ "scores": {
2281
+ "mrr3": 1.0,
2282
+ "ndcg3": 1.0,
2283
+ "p1": 1.0,
2284
+ "p3": 0.3333333333333333
2285
+ }
2286
+ },
2287
+ {
2288
+ "actual": [
2289
+ {
2290
+ "Category": "Setup",
2291
+ "Guideline": "Import OrbitControls from Three.js Addons"
2292
+ },
2293
+ {
2294
+ "Category": "Camera",
2295
+ "Guideline": "OrbitControls vs GSAP Camera Rig"
2296
+ },
2297
+ {
2298
+ "Category": "Production",
2299
+ "Guideline": "Bundler Stack for Production"
2300
+ }
2301
+ ],
2302
+ "diagnostics": {
2303
+ "abstained": false,
2304
+ "calibration_version": "2026-08-12-v1",
2305
+ "margin": 7.080993541615083,
2306
+ "normalized_query": "Three.js OrbitControls must be imported separately",
2307
+ "query_rewrites": [],
2308
+ "reason": "matched",
2309
+ "runner_up_score": 8.686482541063965,
2310
+ "search_query": "Three.js OrbitControls must be imported separately",
2311
+ "token_coverage": 1.0,
2312
+ "top_score": 15.767476082679048
2313
+ },
2314
+ "expectedRoute": null,
2315
+ "grades": [
2316
+ 2,
2317
+ 0,
2318
+ 0
2319
+ ],
2320
+ "id": "stack-threejs-orbitcontrols",
2321
+ "route": "stack",
2322
+ "scores": {
2323
+ "mrr3": 1.0,
2324
+ "ndcg3": 1.0,
2325
+ "p1": 1.0,
2326
+ "p3": 0.3333333333333333
2327
+ }
2328
+ },
2329
+ {
2330
+ "actual": [
2331
+ {
2332
+ "Category": "Setup",
2333
+ "Guideline": "Pixel Ratio Cap at 2"
2334
+ },
2335
+ {
2336
+ "Category": "Setup",
2337
+ "Guideline": "Single Renderer Per Page"
2338
+ },
2339
+ {
2340
+ "Category": "Raycasting",
2341
+ "Guideline": "NDC Mouse Coordinates"
2342
+ }
2343
+ ],
2344
+ "diagnostics": {
2345
+ "abstained": false,
2346
+ "calibration_version": "2026-08-12-v1",
2347
+ "margin": 3.131031647168797,
2348
+ "normalized_query": "avoid excessive GPU work on retina screens by limiting renderer DPR",
2349
+ "query_rewrites": [],
2350
+ "reason": "matched",
2351
+ "runner_up_score": 4.455624545484412,
2352
+ "search_query": "avoid excessive GPU work on retina screens by limiting renderer DPR",
2353
+ "token_coverage": 0.4444444444444444,
2354
+ "top_score": 7.586656192653209
2355
+ },
2356
+ "expectedRoute": null,
2357
+ "grades": [
2358
+ 2,
2359
+ 0,
2360
+ 0
2361
+ ],
2362
+ "id": "stack-threejs-pixel-ratio",
2363
+ "route": "stack",
2364
+ "scores": {
2365
+ "mrr3": 1.0,
2366
+ "ndcg3": 1.0,
2367
+ "p1": 1.0,
2368
+ "p3": 0.3333333333333333
2369
+ }
2370
+ },
2371
+ {
2372
+ "actual": [
2373
+ {
2374
+ "Category": "XAML",
2375
+ "Guideline": "Use Uno.WinUI not Uno.UI for new projects"
2376
+ },
2377
+ {
2378
+ "Category": "XAML",
2379
+ "Guideline": "Use WinUI XAML API surface"
2380
+ },
2381
+ {
2382
+ "Category": "XAML",
2383
+ "Guideline": "Check API implementation status"
2384
+ }
2385
+ ],
2386
+ "diagnostics": {
2387
+ "abstained": false,
2388
+ "calibration_version": "2026-08-12-v1",
2389
+ "margin": 2.18446684719442,
2390
+ "normalized_query": "Uno Platform WinUI XAML API surface",
2391
+ "query_rewrites": [],
2392
+ "reason": "matched",
2393
+ "runner_up_score": 13.621042404831824,
2394
+ "search_query": "Uno Platform WinUI XAML API surface",
2395
+ "token_coverage": 1.0,
2396
+ "top_score": 15.805509252026244
2397
+ },
2398
+ "expectedRoute": null,
2399
+ "grades": [
2400
+ 0,
2401
+ 2,
2402
+ 0
2403
+ ],
2404
+ "id": "stack-uno-winui-xaml",
2405
+ "route": "stack",
2406
+ "scores": {
2407
+ "mrr3": 0.5,
2408
+ "ndcg3": 0.6309297535714574,
2409
+ "p1": 0.0,
2410
+ "p3": 0.3333333333333333
2411
+ }
2412
+ },
2413
+ {
2414
+ "actual": [
2415
+ {
2416
+ "Category": "XAML",
2417
+ "Guideline": "Use Uno.WinUI not Uno.UI for new projects"
2418
+ },
2419
+ {
2420
+ "Category": "Architecture",
2421
+ "Guideline": "Use Uno.Sdk with UnoFeatures"
2422
+ },
2423
+ {
2424
+ "Category": "XAML",
2425
+ "Guideline": "Use WinUI XAML API surface"
2426
+ }
2427
+ ],
2428
+ "diagnostics": {
2429
+ "abstained": false,
2430
+ "calibration_version": "2026-08-12-v1",
2431
+ "margin": 2.474983201534247,
2432
+ "normalized_query": "choose the modern Uno WinUI package instead of the legacy Uno UI package",
2433
+ "query_rewrites": [],
2434
+ "reason": "matched",
2435
+ "runner_up_score": 11.430679226720533,
2436
+ "search_query": "choose the modern Uno WinUI package instead of the legacy Uno UI package",
2437
+ "token_coverage": 0.75,
2438
+ "top_score": 13.90566242825478
2439
+ },
2440
+ "expectedRoute": null,
2441
+ "grades": [
2442
+ 2,
2443
+ 0,
2444
+ 0
2445
+ ],
2446
+ "id": "stack-uno-package-paraphrase",
2447
+ "route": "stack",
2448
+ "scores": {
2449
+ "mrr3": 1.0,
2450
+ "ndcg3": 1.0,
2451
+ "p1": 1.0,
2452
+ "p3": 0.3333333333333333
2453
+ }
2454
+ },
2455
+ {
2456
+ "actual": [
2457
+ {
2458
+ "Category": "Performance",
2459
+ "Guideline": "Use compiled bindings in DataTemplates"
2460
+ },
2461
+ {
2462
+ "Category": "XAML",
2463
+ "Guideline": "Use x:Bind for compiled bindings"
2464
+ },
2465
+ {
2466
+ "Category": "Data Binding",
2467
+ "Guideline": "Specify Mode on x:Bind"
2468
+ }
2469
+ ],
2470
+ "diagnostics": {
2471
+ "abstained": false,
2472
+ "calibration_version": "2026-08-12-v1",
2473
+ "margin": 0.6373481771241885,
2474
+ "normalized_query": "UWP compiled x:Bind data binding",
2475
+ "query_rewrites": [],
2476
+ "reason": "matched",
2477
+ "runner_up_score": 8.905312026216578,
2478
+ "search_query": "UWP compiled x:Bind data binding",
2479
+ "token_coverage": 1.0,
2480
+ "top_score": 9.542660203340766
2481
+ },
2482
+ "expectedRoute": null,
2483
+ "grades": [
2484
+ 0,
2485
+ 2,
2486
+ 0
2487
+ ],
2488
+ "id": "stack-uwp-xbind",
2489
+ "route": "stack",
2490
+ "scores": {
2491
+ "mrr3": 0.5,
2492
+ "ndcg3": 0.6309297535714574,
2493
+ "p1": 0.0,
2494
+ "p3": 0.3333333333333333
2495
+ }
2496
+ },
2497
+ {
2498
+ "actual": [
2499
+ {
2500
+ "Category": "Architecture",
2501
+ "Guideline": "Prefer WinUI 3 for new projects"
2502
+ }
2503
+ ],
2504
+ "diagnostics": {
2505
+ "abstained": false,
2506
+ "calibration_version": "2026-08-12-v1",
2507
+ "margin": 0.0,
2508
+ "normalized_query": "which Windows UI framework should a brand new app choose instead of legacy UWP",
2509
+ "query_rewrites": [],
2510
+ "reason": "exact-identifier",
2511
+ "runner_up_score": 0.0,
2512
+ "search_query": "which Windows UI framework should a brand new app choose instead of legacy UWP",
2513
+ "token_coverage": 1.0,
2514
+ "top_score": 0.0
2515
+ },
2516
+ "expectedRoute": null,
2517
+ "grades": [
2518
+ 2
2519
+ ],
2520
+ "id": "stack-uwp-migration",
2521
+ "route": "stack",
2522
+ "scores": {
2523
+ "mrr3": 1.0,
2524
+ "ndcg3": 1.0,
2525
+ "p1": 1.0,
2526
+ "p3": 0.3333333333333333
2527
+ }
2528
+ },
2529
+ {
2530
+ "actual": [
2531
+ {
2532
+ "Category": "Composition",
2533
+ "Guideline": "Use Composition API for new projects"
2534
+ },
2535
+ {
2536
+ "Category": "State",
2537
+ "Guideline": "Use Pinia for global state"
2538
+ },
2539
+ {
2540
+ "Category": "Routing",
2541
+ "Guideline": "Use useRouter and useRoute"
2542
+ }
2543
+ ],
2544
+ "diagnostics": {
2545
+ "abstained": false,
2546
+ "calibration_version": "2026-08-12-v1",
2547
+ "margin": 6.4068166691600625,
2548
+ "normalized_query": "Vue Composition API for a new project",
2549
+ "query_rewrites": [],
2550
+ "reason": "matched",
2551
+ "runner_up_score": 5.421650203321847,
2552
+ "search_query": "Vue Composition API for a new project",
2553
+ "token_coverage": 0.8,
2554
+ "top_score": 11.82846687248191
2555
+ },
2556
+ "expectedRoute": null,
2557
+ "grades": [
2558
+ 2,
2559
+ 0,
2560
+ 0
2561
+ ],
2562
+ "id": "stack-vue-composition",
2563
+ "route": "stack",
2564
+ "scores": {
2565
+ "mrr3": 1.0,
2566
+ "ndcg3": 1.0,
2567
+ "p1": 1.0,
2568
+ "p3": 0.3333333333333333
2569
+ }
2570
+ },
2571
+ {
2572
+ "actual": [
2573
+ {
2574
+ "Category": "State",
2575
+ "Guideline": "Use Pinia for global state"
2576
+ },
2577
+ {
2578
+ "Category": "State",
2579
+ "Guideline": "Use storeToRefs for destructuring"
2580
+ },
2581
+ {
2582
+ "Category": "Testing",
2583
+ "Guideline": "Use Vue Test Utils"
2584
+ }
2585
+ ],
2586
+ "diagnostics": {
2587
+ "abstained": false,
2588
+ "calibration_version": "2026-08-12-v1",
2589
+ "margin": 4.676899858440489,
2590
+ "normalized_query": "central shared Vue application state store",
2591
+ "query_rewrites": [],
2592
+ "reason": "matched",
2593
+ "runner_up_score": 7.2049605094668205,
2594
+ "search_query": "central shared Vue application state store",
2595
+ "token_coverage": 0.6666666666666666,
2596
+ "top_score": 11.88186036790731
2597
+ },
2598
+ "expectedRoute": null,
2599
+ "grades": [
2600
+ 2,
2601
+ 0,
2602
+ 0
2603
+ ],
2604
+ "id": "stack-vue-pinia",
2605
+ "route": "stack",
2606
+ "scores": {
2607
+ "mrr3": 1.0,
2608
+ "ndcg3": 1.0,
2609
+ "p1": 1.0,
2610
+ "p3": 0.3333333333333333
2611
+ }
2612
+ },
2613
+ {
2614
+ "actual": [
2615
+ {
2616
+ "Category": "Controls",
2617
+ "Guideline": "Use InfoBar for status messages"
2618
+ },
2619
+ {
2620
+ "Category": "Threading",
2621
+ "Guideline": "Use DispatcherQueue not Dispatcher"
2622
+ },
2623
+ {
2624
+ "Category": "Styling",
2625
+ "Guideline": "Use WinUI theme resources"
2626
+ }
2627
+ ],
2628
+ "diagnostics": {
2629
+ "abstained": false,
2630
+ "calibration_version": "2026-08-12-v1",
2631
+ "margin": 12.161783844325017,
2632
+ "normalized_query": "WinUI InfoBar for status messages",
2633
+ "query_rewrites": [],
2634
+ "reason": "matched",
2635
+ "runner_up_score": 4.9098159337083285,
2636
+ "search_query": "WinUI InfoBar for status messages",
2637
+ "token_coverage": 1.0,
2638
+ "top_score": 17.071599778033345
2639
+ },
2640
+ "expectedRoute": null,
2641
+ "grades": [
2642
+ 2,
2643
+ 0,
2644
+ 0
2645
+ ],
2646
+ "id": "stack-winui-infobar",
2647
+ "route": "stack",
2648
+ "scores": {
2649
+ "mrr3": 1.0,
2650
+ "ndcg3": 1.0,
2651
+ "p1": 1.0,
2652
+ "p3": 0.3333333333333333
2653
+ }
2654
+ },
2655
+ {
2656
+ "actual": [
2657
+ {
2658
+ "Category": "Threading",
2659
+ "Guideline": "Use DispatcherQueue not Dispatcher"
2660
+ },
2661
+ {
2662
+ "Category": "Navigation",
2663
+ "Guideline": "Handle back navigation"
2664
+ },
2665
+ {
2666
+ "Category": "Threading",
2667
+ "Guideline": "Use async/await for IO operations"
2668
+ }
2669
+ ],
2670
+ "diagnostics": {
2671
+ "abstained": false,
2672
+ "calibration_version": "2026-08-12-v1",
2673
+ "margin": 4.012547394878277,
2674
+ "normalized_query": "marshal a WinUI update back onto the UI thread with the modern dispatcher",
2675
+ "query_rewrites": [],
2676
+ "reason": "matched",
2677
+ "runner_up_score": 8.687245749390007,
2678
+ "search_query": "marshal a WinUI update back onto the UI thread with the modern dispatcher",
2679
+ "token_coverage": 0.7,
2680
+ "top_score": 12.699793144268284
2681
+ },
2682
+ "expectedRoute": null,
2683
+ "grades": [
2684
+ 2,
2685
+ 0,
2686
+ 0
2687
+ ],
2688
+ "id": "stack-winui-dispatcherqueue",
2689
+ "route": "stack",
2690
+ "scores": {
2691
+ "mrr3": 1.0,
2692
+ "ndcg3": 1.0,
2693
+ "p1": 1.0,
2694
+ "p3": 0.3333333333333333
2695
+ }
2696
+ },
2697
+ {
2698
+ "actual": [
2699
+ {
2700
+ "Category": "Data Binding",
2701
+ "Guideline": "Implement INotifyPropertyChanged"
2702
+ },
2703
+ {
2704
+ "Category": "Data Binding",
2705
+ "Guideline": "Use UpdateSourceTrigger appropriately"
2706
+ },
2707
+ {
2708
+ "Category": "Architecture",
2709
+ "Guideline": "Use MVVM pattern"
2710
+ }
2711
+ ],
2712
+ "diagnostics": {
2713
+ "abstained": false,
2714
+ "calibration_version": "2026-08-12-v1",
2715
+ "margin": 2.942132689217268,
2716
+ "normalized_query": "WPF INotifyPropertyChanged data binding updates",
2717
+ "query_rewrites": [],
2718
+ "reason": "matched",
2719
+ "runner_up_score": 6.693068956030353,
2720
+ "search_query": "WPF INotifyPropertyChanged data binding updates",
2721
+ "token_coverage": 1.0,
2722
+ "top_score": 9.635201645247621
2723
+ },
2724
+ "expectedRoute": null,
2725
+ "grades": [
2726
+ 2,
2727
+ 0,
2728
+ 0
2729
+ ],
2730
+ "id": "stack-wpf-property-change",
2731
+ "route": "stack",
2732
+ "scores": {
2733
+ "mrr3": 1.0,
2734
+ "ndcg3": 1.0,
2735
+ "p1": 1.0,
2736
+ "p3": 0.3333333333333333
2737
+ }
2738
+ },
2739
+ {
2740
+ "actual": [
2741
+ {
2742
+ "Category": "Data Binding",
2743
+ "Guideline": "Use ObservableCollection for lists"
2744
+ },
2745
+ {
2746
+ "Category": "Performance",
2747
+ "Guideline": "Use async for long operations"
2748
+ },
2749
+ {
2750
+ "Category": "Performance",
2751
+ "Guideline": "Use VirtualizingStackPanel for large lists"
2752
+ }
2753
+ ],
2754
+ "diagnostics": {
2755
+ "abstained": false,
2756
+ "calibration_version": "2026-08-12-v1",
2757
+ "margin": 2.3840109708535895,
2758
+ "normalized_query": "keep a huge WPF list responsive by only creating visible item containers",
2759
+ "query_rewrites": [],
2760
+ "reason": "matched",
2761
+ "runner_up_score": 7.386388596971386,
2762
+ "search_query": "keep a huge WPF list responsive by only creating visible item containers",
2763
+ "token_coverage": 0.7,
2764
+ "top_score": 9.770399567824976
2765
+ },
2766
+ "expectedRoute": null,
2767
+ "grades": [
2768
+ 0,
2769
+ 0,
2770
+ 2
2771
+ ],
2772
+ "id": "stack-wpf-virtualization",
2773
+ "route": "stack",
2774
+ "scores": {
2775
+ "mrr3": 0.3333333333333333,
2776
+ "ndcg3": 0.5,
2777
+ "p1": 0.0,
2778
+ "p3": 0.3333333333333333
2779
+ }
2780
+ },
2781
+ {
2782
+ "actual": [
2783
+ {
2784
+ "Category": "Accessibility",
2785
+ "Issue": "Focus Not Obscured (Enhanced)"
2786
+ },
2787
+ {
2788
+ "Category": "Accessibility",
2789
+ "Issue": "Focus Not Obscured (Minimum)"
2790
+ },
2791
+ {
2792
+ "Category": "Accessibility",
2793
+ "Issue": "Keyboard Navigation"
2794
+ }
2795
+ ],
2796
+ "diagnostics": {
2797
+ "abstained": false,
2798
+ "calibration_version": "2026-08-12-v1",
2799
+ "margin": 0.40507227614749475,
2800
+ "normalized_query": "WCAG keyboard accessibility and visible focus",
2801
+ "query_rewrites": [],
2802
+ "reason": "matched",
2803
+ "runner_up_score": 11.718159532722154,
2804
+ "search_query": "WCAG keyboard accessibility and visible focus",
2805
+ "token_coverage": 1.0,
2806
+ "top_score": 12.12323180886965
2807
+ },
2808
+ "expectedRoute": "ux",
2809
+ "grades": [
2810
+ 0,
2811
+ 0,
2812
+ 2
2813
+ ],
2814
+ "id": "auto-route-accessibility",
2815
+ "route": "ux",
2816
+ "scores": {
2817
+ "mrr3": 0.3333333333333333,
2818
+ "ndcg3": 0.41311732856427996,
2819
+ "p1": 0.0,
2820
+ "p3": 0.3333333333333333
2821
+ }
2822
+ },
2823
+ {
2824
+ "actual": [
2825
+ {
2826
+ "Product Type": "E-commerce Luxury"
2827
+ },
2828
+ {
2829
+ "Product Type": "Creative Agency"
2830
+ },
2831
+ {
2832
+ "Product Type": "Architecture / Interior"
2833
+ }
2834
+ ],
2835
+ "diagnostics": {
2836
+ "abstained": false,
2837
+ "calibration_version": "2026-08-12-v1",
2838
+ "margin": 0.0,
2839
+ "normalized_query": "hex color palette accent foreground destructive tokens",
2840
+ "query_rewrites": [],
2841
+ "reason": "matched",
2842
+ "runner_up_score": 1.3810723013506525,
2843
+ "search_query": "hex color palette accent foreground destructive tokens",
2844
+ "token_coverage": 0.14285714285714285,
2845
+ "top_score": 1.3810723013506525
2846
+ },
2847
+ "expectedRoute": "color",
2848
+ "grades": [
2849
+ 0,
2850
+ 0,
2851
+ 0
2852
+ ],
2853
+ "id": "auto-route-color",
2854
+ "route": "color",
2855
+ "scores": {
2856
+ "mrr3": 0.0,
2857
+ "ndcg3": 0.0,
2858
+ "p1": 0.0,
2859
+ "p3": 0.0
2860
+ }
2861
+ },
2862
+ {
2863
+ "actual": [
2864
+ {
2865
+ "Data Type": "Correlation / Distribution"
2866
+ },
2867
+ {
2868
+ "Data Type": "Distribution / Statistical"
2869
+ },
2870
+ {
2871
+ "Data Type": "Flow / Process Data"
2872
+ }
2873
+ ],
2874
+ "diagnostics": {
2875
+ "abstained": false,
2876
+ "calibration_version": "2026-08-12-v1",
2877
+ "margin": 6.972147018311762,
2878
+ "normalized_query": "scatter chart for correlation distribution",
2879
+ "query_rewrites": [],
2880
+ "reason": "matched",
2881
+ "runner_up_score": 3.0089233768269104,
2882
+ "search_query": "scatter chart for correlation distribution",
2883
+ "token_coverage": 1.0,
2884
+ "top_score": 9.981070395138673
2885
+ },
2886
+ "expectedRoute": "chart",
2887
+ "grades": [
2888
+ 2,
2889
+ 0,
2890
+ 0
2891
+ ],
2892
+ "id": "auto-route-chart",
2893
+ "route": "chart",
2894
+ "scores": {
2895
+ "mrr3": 1.0,
2896
+ "ndcg3": 1.0,
2897
+ "p1": 1.0,
2898
+ "p3": 0.3333333333333333
2899
+ }
2900
+ },
2901
+ {
2902
+ "actual": [
2903
+ {
2904
+ "Pattern Name": "Hero + Testimonials + CTA"
2905
+ },
2906
+ {
2907
+ "Pattern Name": "Pricing Page + CTA"
2908
+ },
2909
+ {
2910
+ "Pattern Name": "AI Personalization Landing"
2911
+ }
2912
+ ],
2913
+ "diagnostics": {
2914
+ "abstained": false,
2915
+ "calibration_version": "2026-08-12-v1",
2916
+ "margin": 1.3351764977325598,
2917
+ "normalized_query": "hero testimonials CTA conversion landing page",
2918
+ "query_rewrites": [],
2919
+ "reason": "matched",
2920
+ "runner_up_score": 5.878339153207031,
2921
+ "search_query": "hero testimonials CTA conversion landing page",
2922
+ "token_coverage": 1.0,
2923
+ "top_score": 7.21351565093959
2924
+ },
2925
+ "expectedRoute": "landing",
2926
+ "grades": [
2927
+ 2,
2928
+ 0,
2929
+ 0
2930
+ ],
2931
+ "id": "auto-route-landing",
2932
+ "route": "landing",
2933
+ "scores": {
2934
+ "mrr3": 1.0,
2935
+ "ndcg3": 0.8262346571285599,
2936
+ "p1": 1.0,
2937
+ "p3": 0.3333333333333333
2938
+ }
2939
+ },
2940
+ {
2941
+ "actual": [
2942
+ {
2943
+ "Category": "Monospace",
2944
+ "Family": "JetBrains Mono"
2945
+ },
2946
+ {
2947
+ "Category": "Sans Serif",
2948
+ "Family": "Noto Sans Mono"
2949
+ },
2950
+ {
2951
+ "Category": "Monospace",
2952
+ "Family": "Kode Mono"
2953
+ }
2954
+ ],
2955
+ "diagnostics": {
2956
+ "abstained": false,
2957
+ "calibration_version": "2026-08-12-v1",
2958
+ "margin": 6.278618538174246,
2959
+ "normalized_query": "JetBrains Mono Google font family variable styles",
2960
+ "query_rewrites": [],
2961
+ "reason": "matched",
2962
+ "runner_up_score": 8.97732007305582,
2963
+ "search_query": "JetBrains Mono Google font family variable styles",
2964
+ "token_coverage": 0.7142857142857143,
2965
+ "top_score": 15.255938611230066
2966
+ },
2967
+ "expectedRoute": "google-fonts",
2968
+ "grades": [
2969
+ 2,
2970
+ 0,
2971
+ 0
2972
+ ],
2973
+ "id": "auto-route-fonts",
2974
+ "route": "google-fonts",
2975
+ "scores": {
2976
+ "mrr3": 1.0,
2977
+ "ndcg3": 1.0,
2978
+ "p1": 1.0,
2979
+ "p3": 0.3333333333333333
2980
+ }
2981
+ },
2982
+ {
2983
+ "actual": [
2984
+ {
2985
+ "Category": "Status",
2986
+ "Icon Name": "warning"
2987
+ },
2988
+ {
2989
+ "Category": "Status",
2990
+ "Icon Name": "warning-circle"
2991
+ },
2992
+ {
2993
+ "Category": "Guideline",
2994
+ "Icon Name": "icon-context-accessibility"
2995
+ }
2996
+ ],
2997
+ "diagnostics": {
2998
+ "abstained": false,
2999
+ "calibration_version": "2026-08-12-v1",
3000
+ "margin": 7.395932347359384,
3001
+ "normalized_query": "Phosphor warning icon glyph for danger status",
3002
+ "query_rewrites": [],
3003
+ "reason": "matched",
3004
+ "runner_up_score": 6.630280470695599,
3005
+ "search_query": "Phosphor warning icon glyph for danger status",
3006
+ "token_coverage": 0.8333333333333334,
3007
+ "top_score": 14.026212818054983
3008
+ },
3009
+ "expectedRoute": "icons",
3010
+ "grades": [
3011
+ 2,
3012
+ 1,
3013
+ 0
3014
+ ],
3015
+ "id": "auto-route-icons",
3016
+ "route": "icons",
3017
+ "scores": {
3018
+ "mrr3": 1.0,
3019
+ "ndcg3": 1.0,
3020
+ "p1": 1.0,
3021
+ "p3": 0.6666666666666666
3022
+ }
3023
+ },
3024
+ {
3025
+ "actual": [
3026
+ {
3027
+ "Category": "Stagger List",
3028
+ "Intensity Tier": "Complex",
3029
+ "Trigger": "load or scroll"
3030
+ },
3031
+ {
3032
+ "Category": "Scroll Reveal",
3033
+ "Intensity Tier": "Subtle",
3034
+ "Trigger": "scroll (viewport enter)"
3035
+ },
3036
+ {
3037
+ "Category": "Stagger List",
3038
+ "Intensity Tier": "Subtle",
3039
+ "Trigger": "load or scroll"
3040
+ }
3041
+ ],
3042
+ "diagnostics": {
3043
+ "abstained": false,
3044
+ "calibration_version": "2026-08-12-v1",
3045
+ "margin": 1.2795521952300577,
3046
+ "normalized_query": "GSAP ScrollTrigger stagger reveal animation",
3047
+ "query_rewrites": [
3048
+ "gsap->animation",
3049
+ "scrolltrigger->scroll"
3050
+ ],
3051
+ "reason": "matched",
3052
+ "runner_up_score": 3.4546110204576452,
3053
+ "search_query": "GSAP ScrollTrigger stagger reveal animation animation scroll",
3054
+ "token_coverage": 0.6666666666666666,
3055
+ "top_score": 4.734163215687703
3056
+ },
3057
+ "expectedRoute": "gsap",
3058
+ "grades": [
3059
+ 0,
3060
+ 0,
3061
+ 0
3062
+ ],
3063
+ "id": "auto-route-gsap",
3064
+ "route": "gsap",
3065
+ "scores": {
3066
+ "mrr3": 0.0,
3067
+ "ndcg3": 0.0,
3068
+ "p1": 0.0,
3069
+ "p3": 0.0
3070
+ }
3071
+ },
3072
+ {
3073
+ "actual": [
3074
+ {
3075
+ "Category": "Async Waterfall",
3076
+ "Issue": "Suspense Boundaries"
3077
+ },
3078
+ {
3079
+ "Category": "Async Waterfall",
3080
+ "Issue": "API Route Optimization"
3081
+ },
3082
+ {
3083
+ "Category": "Server",
3084
+ "Issue": "React.cache Dedup"
3085
+ }
3086
+ ],
3087
+ "diagnostics": {
3088
+ "abstained": false,
3089
+ "calibration_version": "2026-08-12-v1",
3090
+ "margin": 1.8048143700680992,
3091
+ "normalized_query": "React Suspense waterfall bundle rerender optimization",
3092
+ "query_rewrites": [],
3093
+ "reason": "matched",
3094
+ "runner_up_score": 5.931874048973622,
3095
+ "search_query": "React Suspense waterfall bundle rerender optimization",
3096
+ "token_coverage": 1.0,
3097
+ "top_score": 7.736688419041721
3098
+ },
3099
+ "expectedRoute": "react",
3100
+ "grades": [
3101
+ 2,
3102
+ 0,
3103
+ 0
3104
+ ],
3105
+ "id": "auto-route-react",
3106
+ "route": "react",
3107
+ "scores": {
3108
+ "mrr3": 1.0,
3109
+ "ndcg3": 1.0,
3110
+ "p1": 1.0,
3111
+ "p3": 0.3333333333333333
3112
+ }
3113
+ },
3114
+ {
3115
+ "falsePositiveTargets": [],
3116
+ "falsePositives": 0,
3117
+ "id": "negative-gibberish-alpha",
3118
+ "negativeChecks": 34
3119
+ },
3120
+ {
3121
+ "falsePositiveTargets": [],
3122
+ "falsePositives": 0,
3123
+ "id": "negative-gibberish-numeric",
3124
+ "negativeChecks": 34
3125
+ },
3126
+ {
3127
+ "falsePositiveTargets": [],
3128
+ "falsePositives": 0,
3129
+ "id": "negative-geography-fact",
3130
+ "negativeChecks": 34
3131
+ },
3132
+ {
3133
+ "falsePositiveTargets": [
3134
+ "domain:ux",
3135
+ "domain:google-fonts",
3136
+ "stack:threejs",
3137
+ "stack:winui"
3138
+ ],
3139
+ "falsePositives": 4,
3140
+ "id": "negative-math-proof",
3141
+ "negativeChecks": 34
3142
+ },
3143
+ {
3144
+ "falsePositiveTargets": [],
3145
+ "falsePositives": 0,
3146
+ "id": "negative-cooking",
3147
+ "negativeChecks": 34
3148
+ },
3149
+ {
3150
+ "falsePositiveTargets": [],
3151
+ "falsePositives": 0,
3152
+ "id": "negative-biology",
3153
+ "negativeChecks": 34
3154
+ },
3155
+ {
3156
+ "actual": {
3157
+ "category": "Beauty/Spa/Wellness Service",
3158
+ "pattern": "Hero + Testimonials + CTA",
3159
+ "style": "Soft UI Evolution"
3160
+ },
3161
+ "coherence": [
3162
+ true,
3163
+ true,
3164
+ true,
3165
+ true
3166
+ ],
3167
+ "id": "design-system-spa"
3168
+ },
3169
+ {
3170
+ "actual": {
3171
+ "category": "Cybersecurity Platform",
3172
+ "pattern": "Real-Time / Operations Landing",
3173
+ "style": "Cyberpunk UI"
3174
+ },
3175
+ "coherence": [
3176
+ true,
3177
+ true,
3178
+ true,
3179
+ true
3180
+ ],
3181
+ "id": "design-system-cybersecurity-dark"
3182
+ },
3183
+ {
3184
+ "actual": {
3185
+ "category": "SaaS (General)",
3186
+ "pattern": "Hero + Features + CTA",
3187
+ "style": "Glassmorphism"
3188
+ },
3189
+ "coherence": [
3190
+ true,
3191
+ true,
3192
+ true,
3193
+ true
3194
+ ],
3195
+ "id": "design-system-saas"
3196
+ },
3197
+ {
3198
+ "actual": {
3199
+ "category": "Healthcare App",
3200
+ "pattern": "Hero + Testimonials + CTA",
3201
+ "style": "Neumorphism"
3202
+ },
3203
+ "coherence": [
3204
+ true,
3205
+ true,
3206
+ true,
3207
+ true
3208
+ ],
3209
+ "id": "design-system-healthcare"
3210
+ },
3211
+ {
3212
+ "actual": {
3213
+ "category": "Portfolio/Personal",
3214
+ "pattern": "Scroll-Triggered Storytelling",
3215
+ "style": "Brutalism"
3216
+ },
3217
+ "coherence": [
3218
+ true,
3219
+ true,
3220
+ true,
3221
+ true,
3222
+ true
3223
+ ],
3224
+ "id": "design-system-portfolio-dark"
3225
+ },
3226
+ {
3227
+ "actual": {
3228
+ "category": "Fintech/Crypto",
3229
+ "pattern": "Trust & Authority + Conversion",
3230
+ "style": "Minimalism & Swiss Style"
3231
+ },
3232
+ "coherence": [
3233
+ true,
3234
+ true,
3235
+ true,
3236
+ true
3237
+ ],
3238
+ "id": "design-system-fintech-dark"
3239
+ },
3240
+ {
3241
+ "actual": {
3242
+ "category": "Beauty/Spa/Wellness Service",
3243
+ "pattern": "Hero + Testimonials + CTA",
3244
+ "style": "Soft UI Evolution"
3245
+ },
3246
+ "coherence": [
3247
+ true,
3248
+ true,
3249
+ true,
3250
+ true
3251
+ ],
3252
+ "id": "design-system-spa-paraphrase"
3253
+ },
3254
+ {
3255
+ "actual": {
3256
+ "category": "Cybersecurity Platform",
3257
+ "pattern": "Real-Time / Operations Landing",
3258
+ "style": "Cyberpunk UI"
3259
+ },
3260
+ "coherence": [
3261
+ true,
3262
+ true,
3263
+ true,
3264
+ true
3265
+ ],
3266
+ "id": "design-system-cyber-typo"
3267
+ }
3268
+ ],
3269
+ "metrics": {
3270
+ "designSystemCoherence": 1.0,
3271
+ "mrrAt3": 0.868421052631579,
3272
+ "ndcgAt3": 0.861015560539328,
3273
+ "negativeAbstention": 0.9803921568627451,
3274
+ "precisionAt1": 0.8157894736842105,
3275
+ "precisionAt3": 0.3815789473684211,
3276
+ "routingAccuracy": 1.0,
3277
+ "typoRecoveryAt3": 1.0
3278
+ },
3279
+ "oracleFingerprint": "02e7226428c64a995ec24ae104ce4d186f5f91bf0f062556e90ef9b0fcb6d67a",
3280
+ "runtimeFingerprint": "3f902a88e2f9bd5f12965664cd31a60a31117de69f8b19ad1968536ea3c984b7",
3281
+ "samples": {
3282
+ "cases": 90,
3283
+ "designSystem": 8,
3284
+ "domain:chart": 2,
3285
+ "domain:color": 2,
3286
+ "domain:google-fonts": 2,
3287
+ "domain:gsap": 2,
3288
+ "domain:icons": 2,
3289
+ "domain:landing": 2,
3290
+ "domain:product": 2,
3291
+ "domain:react": 2,
3292
+ "domain:style": 2,
3293
+ "domain:typography": 2,
3294
+ "domain:ux": 2,
3295
+ "domain:web": 2,
3296
+ "negativeChecks": 204,
3297
+ "retrieval": 76,
3298
+ "routing": 8,
3299
+ "stack:angular": 2,
3300
+ "stack:astro": 2,
3301
+ "stack:avalonia": 2,
3302
+ "stack:flutter": 2,
3303
+ "stack:html-tailwind": 2,
3304
+ "stack:javafx": 2,
3305
+ "stack:jetpack-compose": 2,
3306
+ "stack:laravel": 2,
3307
+ "stack:nextjs": 2,
3308
+ "stack:nuxt-ui": 2,
3309
+ "stack:nuxtjs": 2,
3310
+ "stack:react": 2,
3311
+ "stack:react-native": 2,
3312
+ "stack:shadcn": 2,
3313
+ "stack:svelte": 2,
3314
+ "stack:swiftui": 2,
3315
+ "stack:threejs": 2,
3316
+ "stack:uno": 2,
3317
+ "stack:uwp": 2,
3318
+ "stack:vue": 2,
3319
+ "stack:winui": 2,
3320
+ "stack:wpf": 2,
3321
+ "typo": 5
3322
+ },
3323
+ "schemaVersion": 1,
3324
+ "splits": {
3325
+ "calibration": {
3326
+ "metrics": {
3327
+ "designSystemCoherence": 1.0,
3328
+ "mrrAt3": 0.9316239316239316,
3329
+ "ndcgAt3": 0.9182517276204706,
3330
+ "negativeAbstention": 1.0,
3331
+ "precisionAt1": 0.8974358974358975,
3332
+ "precisionAt3": 0.40170940170940167,
3333
+ "routingAccuracy": 1.0,
3334
+ "typoRecoveryAt3": 0.0
3335
+ },
3336
+ "samples": {
3337
+ "cases": 46,
3338
+ "designSystem": 4,
3339
+ "negativeChecks": 102,
3340
+ "retrieval": 39,
3341
+ "routing": 5,
3342
+ "typo": 0
3343
+ }
3344
+ },
3345
+ "held_out": {
3346
+ "metrics": {
3347
+ "designSystemCoherence": 1.0,
3348
+ "mrrAt3": 0.8018018018018018,
3349
+ "ndcgAt3": 0.8006855465889345,
3350
+ "negativeAbstention": 0.9607843137254902,
3351
+ "precisionAt1": 0.7297297297297297,
3352
+ "precisionAt3": 0.36036036036036034,
3353
+ "routingAccuracy": 1.0,
3354
+ "typoRecoveryAt3": 1.0
3355
+ },
3356
+ "samples": {
3357
+ "cases": 44,
3358
+ "designSystem": 4,
3359
+ "negativeChecks": 102,
3360
+ "retrieval": 37,
3361
+ "routing": 3,
3362
+ "typo": 5
3363
+ }
3364
+ }
3365
+ }
3366
+ }