|
| 1 | +# Per-library metadata for bokeh implementation of lollipop-basic |
| 2 | +# Auto-generated by impl-generate.yml |
| 3 | + |
1 | 4 | library: bokeh |
2 | 5 | language: python |
3 | 6 | specification_id: lollipop-basic |
4 | 7 | created: '2025-12-23T15:14:01Z' |
5 | | -updated: '2026-04-26T12:54:40Z' |
6 | | -generated_by: claude-opus |
7 | | -workflow_run: 24956899574 |
| 8 | +updated: '2026-07-01T05:59:34Z' |
| 9 | +generated_by: claude-sonnet |
| 10 | +workflow_run: 28496532200 |
8 | 11 | issue: 934 |
9 | | -python_version: 3.14.4 |
10 | | -library_version: 3.9.0 |
| 12 | +language_version: 3.13.14 |
| 13 | +library_version: 3.9.1 |
11 | 14 | preview_url_light: https://storage.googleapis.com/anyplot-images/plots/lollipop-basic/python/bokeh/plot-light.png |
12 | 15 | preview_url_dark: https://storage.googleapis.com/anyplot-images/plots/lollipop-basic/python/bokeh/plot-dark.png |
13 | 16 | preview_html_light: https://storage.googleapis.com/anyplot-images/plots/lollipop-basic/python/bokeh/plot-light.html |
14 | 17 | preview_html_dark: https://storage.googleapis.com/anyplot-images/plots/lollipop-basic/python/bokeh/plot-dark.html |
15 | | -quality_score: 85 |
| 18 | +quality_score: null |
16 | 19 | review: |
17 | | - strengths: |
18 | | - - 'Perfect spec compliance: stems + markers + sorted data + correct title format' |
19 | | - - 'Excellent theme adaptation: all chrome tokens applied correctly, both renders |
20 | | - pass legibility check' |
21 | | - - Clean minimal code with proper KISS structure |
22 | | - - White-ring detail on markers (PAGE_BG as line_color) adds visual separation |
23 | | - - NumeralTickFormatter adds professional dollar formatting |
24 | | - weaknesses: |
25 | | - - 'No data storytelling: sorted data is good but no emphasis on top performer, no |
26 | | - focal points, no value labels, no visual hierarchy to guide the viewer' |
27 | | - - 'Title not bold: style guide specifies bold/medium-weight for titles, text_font_style=normal |
28 | | - weakens typographic hierarchy' |
29 | | - - 'Design sophistication stays at well-configured default level: white ring on markers |
30 | | - is the only distinctive aesthetic choice' |
31 | | - image_description: |- |
32 | | - Light render (plot-light.png): |
33 | | - Background: Warm off-white #FAF8F1 — correct, not pure white |
34 | | - Chrome: Title "lollipop-basic · bokeh · anyplot.ai" top-left in dark INK color, readable; axis labels "Sales (USD)" and "Product Category" in dark INK, readable; y-axis tick labels in INK_SOFT ($0, $20,000, $40,000, etc.), readable; x-axis category labels rotated and readable |
35 | | - Data: 10 lollipops in brand green #009E73 — thin stems (line_width=4) rising from y=0 baseline to large circular markers (size=42) with white PAGE_BG ring; values sorted descending Electronics ($85K) to Office ($15K) |
36 | | - Legibility verdict: PASS — all text readable, no light-on-light failures |
37 | | -
|
38 | | - Dark render (plot-dark.png): |
39 | | - Background: Near-black #1A1A17 — correct, not pure black |
40 | | - Chrome: Title in light F0EFE8 text, readable; axis labels in INK color (light), readable; tick labels in INK_SOFT (B8B7B0), readable; no dark-on-dark failures detected |
41 | | - Data: Brand green #009E73 lollipops identical to light render — stems, markers, and white ring all unchanged; only background and text colors flip |
42 | | - Legibility verdict: PASS — all text readable against dark background, data colors identical to light render |
43 | | - criteria_checklist: |
44 | | - visual_quality: |
45 | | - score: 28 |
46 | | - max: 30 |
47 | | - items: |
48 | | - - id: VQ-01 |
49 | | - name: Text Legibility |
50 | | - score: 7 |
51 | | - max: 8 |
52 | | - passed: true |
53 | | - comment: Sizes explicitly set (28pt/22pt/18pt), readable in both themes; title |
54 | | - not bold |
55 | | - - id: VQ-02 |
56 | | - name: No Overlap |
57 | | - score: 6 |
58 | | - max: 6 |
59 | | - passed: true |
60 | | - comment: Rotated x-axis labels well-spaced, no collisions |
61 | | - - id: VQ-03 |
62 | | - name: Element Visibility |
63 | | - score: 6 |
64 | | - max: 6 |
65 | | - passed: true |
66 | | - comment: Stems line_width=4 and markers size=42 clearly visible |
67 | | - - id: VQ-04 |
68 | | - name: Color Accessibility |
69 | | - score: 2 |
70 | | - max: 2 |
71 | | - passed: true |
72 | | - comment: Single brand green series, good contrast, CVD-safe |
73 | | - - id: VQ-05 |
74 | | - name: Layout & Canvas |
75 | | - score: 3 |
76 | | - max: 4 |
77 | | - passed: true |
78 | | - comment: Decent canvas utilization, minor empty space in upper plot area |
79 | | - - id: VQ-06 |
80 | | - name: Axis Labels & Title |
81 | | - score: 2 |
82 | | - max: 2 |
83 | | - passed: true |
84 | | - comment: Sales (USD) and Product Category with units |
85 | | - - id: VQ-07 |
86 | | - name: Palette Compliance |
87 | | - score: 2 |
88 | | - max: 2 |
89 | | - passed: true |
90 | | - comment: 'First series #009E73, light #FAF8F1, dark #1A1A17, chrome correct' |
91 | | - design_excellence: |
92 | | - score: 10 |
93 | | - max: 20 |
94 | | - items: |
95 | | - - id: DE-01 |
96 | | - name: Aesthetic Sophistication |
97 | | - score: 4 |
98 | | - max: 8 |
99 | | - passed: false |
100 | | - comment: Well-configured default with white ring on markers; not exceptional |
101 | | - design |
102 | | - - id: DE-02 |
103 | | - name: Visual Refinement |
104 | | - score: 4 |
105 | | - max: 6 |
106 | | - passed: true |
107 | | - comment: No x-grid, subtle y-grid, no outline, minor ticks removed, no toolbar |
108 | | - - id: DE-03 |
109 | | - name: Data Storytelling |
110 | | - score: 2 |
111 | | - max: 6 |
112 | | - passed: false |
113 | | - comment: Sorted data but no visual hierarchy, focal points, or emphasis |
114 | | - spec_compliance: |
115 | | - score: 15 |
116 | | - max: 15 |
117 | | - items: |
118 | | - - id: SC-01 |
119 | | - name: Plot Type |
120 | | - score: 5 |
121 | | - max: 5 |
122 | | - passed: true |
123 | | - comment: 'Correct lollipop: segment stems + scatter markers, vertical orientation' |
124 | | - - id: SC-02 |
125 | | - name: Required Features |
126 | | - score: 4 |
127 | | - max: 4 |
128 | | - passed: true |
129 | | - comment: Stems, markers, vertical, 10 categories, sorted descending |
130 | | - - id: SC-03 |
131 | | - name: Data Mapping |
132 | | - score: 3 |
133 | | - max: 3 |
134 | | - passed: true |
135 | | - comment: Categories on x with x_range, values on y, all data visible |
136 | | - - id: SC-04 |
137 | | - name: Title & Legend |
138 | | - score: 3 |
139 | | - max: 3 |
140 | | - passed: true |
141 | | - comment: Title lollipop-basic · bokeh · anyplot.ai correct; no legend for |
142 | | - single series |
143 | | - data_quality: |
144 | | - score: 15 |
145 | | - max: 15 |
146 | | - items: |
147 | | - - id: DQ-01 |
148 | | - name: Feature Coverage |
149 | | - score: 6 |
150 | | - max: 6 |
151 | | - passed: true |
152 | | - comment: 'All lollipop aspects shown: varying heights, sorted order, 10 categories' |
153 | | - - id: DQ-02 |
154 | | - name: Realistic Context |
155 | | - score: 5 |
156 | | - max: 5 |
157 | | - passed: true |
158 | | - comment: Product sales by category - natural neutral business scenario |
159 | | - - id: DQ-03 |
160 | | - name: Appropriate Scale |
161 | | - score: 4 |
162 | | - max: 4 |
163 | | - passed: true |
164 | | - comment: $15K-$85K realistic for product category sales, good spread |
165 | | - code_quality: |
166 | | - score: 10 |
167 | | - max: 10 |
168 | | - items: |
169 | | - - id: CQ-01 |
170 | | - name: KISS Structure |
171 | | - score: 3 |
172 | | - max: 3 |
173 | | - passed: true |
174 | | - comment: 'Linear: imports -> tokens -> data -> figure -> styling -> save' |
175 | | - - id: CQ-02 |
176 | | - name: Reproducibility |
177 | | - score: 2 |
178 | | - max: 2 |
179 | | - passed: true |
180 | | - comment: Deterministic hardcoded data |
181 | | - - id: CQ-03 |
182 | | - name: Clean Imports |
183 | | - score: 2 |
184 | | - max: 2 |
185 | | - passed: true |
186 | | - comment: All 4 imports used |
187 | | - - id: CQ-04 |
188 | | - name: Code Elegance |
189 | | - score: 2 |
190 | | - max: 2 |
191 | | - passed: true |
192 | | - comment: Clean Pythonic code, no fake UI |
193 | | - - id: CQ-05 |
194 | | - name: Output & API |
195 | | - score: 1 |
196 | | - max: 1 |
197 | | - passed: true |
198 | | - comment: plot-{THEME}.png and plot-{THEME}.html both generated |
199 | | - library_mastery: |
200 | | - score: 7 |
201 | | - max: 10 |
202 | | - items: |
203 | | - - id: LM-01 |
204 | | - name: Idiomatic Usage |
205 | | - score: 4 |
206 | | - max: 5 |
207 | | - passed: true |
208 | | - comment: ColumnDataSource, x_range for categorical, segment+scatter pattern |
209 | | - - id: LM-02 |
210 | | - name: Distinctive Features |
211 | | - score: 3 |
212 | | - max: 5 |
213 | | - passed: true |
214 | | - comment: NumeralTickFormatter and HTML export via output_file/save |
215 | | - verdict: REJECTED |
216 | | -impl_tags: |
217 | | - dependencies: [] |
218 | | - techniques: |
219 | | - - html-export |
220 | | - patterns: |
221 | | - - columndatasource |
222 | | - dataprep: [] |
223 | | - styling: [] |
| 20 | + strengths: [] |
| 21 | + weaknesses: [] |
0 commit comments