@amityco/social-plus-vise 1.4.6 → 1.5.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.
@@ -98,41 +98,263 @@
98
98
  .capcard .chipline{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;}
99
99
  .capcard .chipline span{font-family:var(--mono);font-size:10.5px;color:var(--brand-dark);background:var(--brand-soft);border:1px solid #B9DBCF;border-radius:999px;padding:5px 8px;}
100
100
 
101
- .bench-shell{display:grid;gap:14px;}
102
- .bench-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:14px;align-items:stretch;}
103
- .bench-scoreboard{border:1px solid var(--line);border-radius:16px;background:#FFFFFF;padding:18px;box-shadow:0 16px 42px rgba(32,47,75,.08);}
104
- .bench-scoreboard h3,.bench-method h3{font-size:18px;margin:0 0 12px;}
105
- .bench-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
106
- .bench-metric{border:1px solid #E2E8F0;border-radius:12px;background:#F8FAFC;padding:14px;}
107
- .bench-metric b{display:block;font-family:var(--mono);font-size:30px;line-height:1;color:var(--ink);letter-spacing:0;}
108
- .bench-metric span{display:block;font-size:12px;color:var(--ink-soft);margin-top:7px;}
109
- .bench-metric.lift{background:var(--good-soft);border-color:var(--good-line);}
110
- .bench-metric.lift b{color:var(--good);}
111
- .bench-bars{display:grid;gap:10px;margin-top:16px;}
112
- .bench-bar{display:grid;grid-template-columns:92px minmax(0,1fr) 48px;gap:10px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--ink-soft);}
113
- .bench-track{height:10px;border-radius:999px;background:#E7ECF3;overflow:hidden;}
114
- .bench-fill{height:100%;border-radius:999px;background:var(--brand);}
115
- .bench-fill.control{background:#AAB4C3;}
116
- .bench-callout{border:1px solid #CDE8DC;border-radius:16px;background:linear-gradient(180deg,#F7FCF9,#E6F4EC);padding:18px;}
117
- .bench-callout b{display:block;font-size:15px;color:var(--good);margin-bottom:8px;}
118
- .bench-callout p{margin:0;color:var(--ink-soft);font-size:13.5px;}
119
- .platform-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;}
120
- .platform-card{border:1px solid var(--line);border-radius:12px;background:#FFFFFF;padding:13px;min-width:0;}
121
- .platform-card h3{font-size:13px;margin:0 0 4px;color:var(--ink);}
122
- .platform-card p{font-size:11.5px;color:var(--ink-soft);margin:0 0 12px;line-height:1.35;min-height:48px;}
123
- .score-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);margin:7px 0;}
124
- .score-row b{font-size:13px;color:var(--ink);}
125
- .mini-track{grid-column:1 / -1;height:6px;border-radius:999px;background:#E7ECF3;overflow:hidden;}
126
- .mini-fill{display:block;height:100%;border-radius:999px;background:var(--brand);}
127
- .mini-fill.control{background:#AAB4C3;}
128
- .delta-pill{display:inline-flex;align-items:center;justify-content:center;margin-top:8px;border-radius:999px;background:var(--good-soft);border:1px solid var(--good-line);color:var(--good);font-family:var(--mono);font-size:11px;font-weight:900;padding:5px 8px;}
129
- .bench-method{border:1px solid var(--line);border-radius:16px;background:#FFFFFF;padding:18px;box-shadow:0 10px 30px rgba(32,47,75,.06);}
130
- .weight-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:12px 0 14px;}
131
- .weight-card{border:1px solid #E2E8F0;border-radius:10px;background:#F8FAFC;padding:10px;}
132
- .weight-card b{display:block;font-family:var(--mono);font-size:18px;color:var(--brand-dark);}
133
- .weight-card span{display:block;font-size:11px;color:var(--ink-soft);line-height:1.25;margin-top:4px;}
134
- .bench-method p,.bench-footnote{font-size:13px;color:var(--ink-soft);margin:0;max-width:86ch;}
135
- .bench-footnote{border:1px solid #FED7AA;border-radius:12px;background:#FFF7ED;padding:12px 14px;color:#7C3A11;}
101
+ /* ============ ONE-GLANCE RECONCILIATION ============ */
102
+ .bx-recon{border:1px solid var(--line);border-radius:16px;background:var(--paper-raised);padding:16px 18px 18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 16px 42px rgba(32,47,75,.08);}
103
+ .bx-recon-tag{font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);}
104
+ .bx-recon-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
105
+ .bx-recon-cell{display:flex;flex-direction:column;gap:5px;border:1px solid var(--line);border-radius:12px;background:var(--paper-elevated);padding:13px 15px;min-width:0;}
106
+ .bx-recon-cell-key{border:2px solid var(--brand);background:var(--brand-soft);box-shadow:0 10px 30px rgba(23,107,87,.12);}
107
+ .bx-recon-num{font-family:var(--mono);font-size:30px;line-height:1;color:var(--ink-soft);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
108
+ .bx-recon-num-key{color:var(--brand-dark);}
109
+ .bx-recon-lab{font-size:12.5px;font-weight:700;color:var(--ink);letter-spacing:-.005em;}
110
+ .bx-recon-cell-key .bx-recon-lab{color:var(--brand-dark);}
111
+ .bx-recon-note{font-size:12px;line-height:1.45;color:var(--ink-soft);}
112
+ .bx-recon-note b{color:var(--ink);}
113
+ .bx-recon-note em{color:var(--verified);font-style:normal;}
114
+
115
+ /* ============ CROSS-MODEL BAND ============ */
116
+ .bx-xm{display:flex;flex-direction:column;gap:16px;border:1px solid var(--line);border-radius:18px;background:var(--paper-elevated);padding:18px 18px 20px;}
117
+ .bx-xm-head{display:flex;flex-direction:column;gap:7px;}
118
+ .bx-xm-copy{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);max-width:92ch;}
119
+ .bx-xm-copy b{color:var(--ink);}
120
+ .bx-xm-copy em{color:var(--brand-dark);font-style:normal;}
121
+
122
+ .bx-xm-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:stretch;}
123
+ .bx-xm-card{border:1px solid var(--line);border-radius:16px;background:var(--paper-raised);padding:18px 20px;display:flex;flex-direction:column;gap:14px;min-width:0;box-shadow:0 16px 42px rgba(32,47,75,.08);}
124
+ .bx-xm-anchor{border:2px solid var(--brand);box-shadow:0 20px 50px rgba(23,107,87,.14);}
125
+ .bx-xm-caveated{border-color:var(--line);background:linear-gradient(180deg,var(--paper-elevated),var(--paper-raised));}
126
+ .bx-xm-card-head{display:flex;flex-direction:column;gap:6px;}
127
+ .bx-xm-model{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
128
+ .bx-xm-name{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
129
+ .bx-xm-badge{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;}
130
+ .bx-xm-badge-anchor{color:var(--brand-dark);background:var(--brand-soft);border:1px solid var(--good-line);font-weight:600;}
131
+ .bx-xm-badge-dot{width:7px;height:7px;border-radius:50%;background:var(--brand);flex:0 0 auto;}
132
+ .bx-xm-badge-earlier{color:var(--ink-soft);background:var(--paper-elevated);border:1px solid var(--line);}
133
+ .bx-xm-proto{margin:0;font-size:11.5px;line-height:1.4;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.01em;}
134
+ .bx-xm-nums{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;}
135
+ .bx-xm-stat{display:flex;flex-direction:column;gap:5px;}
136
+ .bx-xm-stat b{font-family:var(--mono);font-size:32px;line-height:1;color:var(--ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
137
+ .bx-xm-stat span{font-size:11px;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.03em;}
138
+ .bx-xm-lift b{color:var(--good);}
139
+ .bx-xm-lift-soft b{color:var(--ink-soft);display:inline-flex;align-items:baseline;gap:3px;}
140
+ .bx-xm-lift-soft .bx-strike{color:var(--ink-soft);}
141
+ .bx-xm-lift-soft .bx-capmark{font-size:11px;}
142
+ .bx-xm-foot{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-soft);display:flex;gap:8px;align-items:flex-start;}
143
+ .bx-xm-foot b{color:var(--ink);}
144
+ .bx-xm-foot-clean{color:var(--brand-dark);}
145
+ .bx-xm-foot-mark{color:var(--good);font-weight:700;flex:0 0 auto;}
146
+ .bx-xm-chip{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-left:3px solid var(--verified);border-radius:10px;background:var(--paper-elevated);padding:11px 13px;margin-top:auto;}
147
+ .bx-xm-chip-mark{color:var(--verified);font-size:9px;flex:0 0 auto;margin-top:3px;}
148
+ .bx-xm-chip-text{font-size:12px;line-height:1.5;color:var(--ink-soft);}
149
+ .bx-xm-chip-text b{color:var(--ink);}
150
+ .bx-xm-chip-text code{font-family:var(--mono);font-size:11px;background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;padding:0 4px;color:var(--verified);}
151
+
152
+ /* CONVERGENCE STRIP */
153
+ .bx-conv{border:1px solid var(--good-line);border-radius:14px;background:linear-gradient(180deg,var(--good-soft),var(--paper-raised));padding:16px 18px;display:flex;flex-direction:column;gap:14px;}
154
+ .bx-conv-head{display:flex;flex-direction:column;gap:6px;}
155
+ .bx-conv-tag{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--good);font-weight:600;}
156
+ .bx-conv-lead{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);max-width:92ch;}
157
+ .bx-conv-lead b{color:var(--brand-dark);}
158
+ .bx-conv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
159
+ .bx-conv-plat{border:1px solid var(--good-line);border-radius:12px;background:var(--paper-raised);padding:13px 16px;display:flex;flex-direction:column;gap:10px;min-width:0;}
160
+ .bx-conv-plat-name{font-size:14px;font-weight:700;color:var(--ink);}
161
+ .bx-conv-pair{display:flex;align-items:stretch;gap:12px;}
162
+ .bx-conv-cell{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:4px;}
163
+ .bx-conv-agent{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;color:var(--ink-soft);white-space:nowrap;}
164
+ .bx-conv-num{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--good);font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1;}
165
+ .bx-conv-vs{align-self:center;font-family:var(--mono);font-size:18px;color:var(--ink-faint);flex:0 0 auto;}
166
+ .bx-conv-spread{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;color:var(--good);align-self:flex-start;padding:2px 8px;border-radius:999px;background:var(--good-soft);border:1px solid var(--good-line);}
167
+ .bx-conv-note{margin:0;font-size:12px;line-height:1.5;color:var(--ink-soft);}
168
+ .bx-conv-note b{color:var(--ink);}
169
+ .bx-conv-note em{color:var(--verified);font-style:normal;}
170
+
171
+ /* deep-dive header divider */
172
+ .bx-deep{display:flex;flex-direction:column;gap:0;border-top:1px dashed var(--line);padding-top:20px;margin-top:4px;}
173
+ .bx-deep-head{display:flex;flex-direction:column;gap:7px;}
174
+
175
+ /* ============ existing rules below (reused) ============ */
176
+ .bx-shell{display:flex;flex-direction:column;gap:20px;margin-top:6px;}
177
+ .bx-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
178
+
179
+ /* legend */
180
+ .bx-legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;font-family:var(--mono);font-size:11px;letter-spacing:.02em;color:var(--ink-soft);}
181
+ .bx-key{display:inline-flex;align-items:center;gap:7px;}
182
+ .bx-swatch{width:12px;height:12px;border-radius:3px;flex:0 0 auto;}
183
+ .bx-swatch-vise{background:var(--brand);}
184
+ .bx-swatch-ctrl{background:#AAB4C3;}
185
+ .bx-key-note{color:var(--ink-soft);letter-spacing:.05em;}
186
+
187
+ /* ============ HEADLINE: two composites ============ */
188
+ .bx-headline{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
189
+ .bx-head-primary,.bx-head-secondary{border:1px solid var(--line);border-radius:16px;padding:18px 20px;box-shadow:0 16px 42px rgba(32,47,75,.08);display:flex;flex-direction:column;gap:12px;min-width:0;}
190
+ .bx-head-primary{background:var(--paper-raised);}
191
+ .bx-head-secondary{background:linear-gradient(180deg,var(--good-soft),var(--paper-raised));border-color:var(--good-line);}
192
+ .bx-head-tag{font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);}
193
+ .bx-head-tag-alt{color:var(--good);font-weight:600;}
194
+ .bx-head-nums{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;}
195
+ .bx-head-stat{display:flex;flex-direction:column;gap:5px;}
196
+ .bx-head-stat b{font-family:var(--mono);font-size:30px;line-height:1;color:var(--ink);letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
197
+ .bx-ctrl-num{color:var(--ink-soft)!important;}
198
+ .bx-head-stat span{font-size:11px;color:var(--ink-soft);font-family:var(--mono);letter-spacing:.03em;}
199
+ .bx-head-lift b{color:var(--good);}
200
+ .bx-head-copy{margin:0;font-size:12.5px;line-height:1.5;color:var(--ink-soft);}
201
+ .bx-head-copy b{color:var(--ink);}
202
+ .bx-head-secondary .bx-head-copy b{color:var(--brand-dark);}
203
+ .bx-head-round{display:block;margin-top:6px;font-family:var(--mono);font-size:10.5px;line-height:1.5;letter-spacing:.01em;color:var(--ink-soft);}
204
+ .bx-head-secondary .bx-head-copy .bx-head-round b{color:var(--ink-soft);}
205
+
206
+ /* ============ DIMENSION LEDGER ============ */
207
+ .bx-dims{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
208
+ .bx-dims-lead{grid-column:1 / -1;margin:2px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-soft);}
209
+ .bx-dims-lead b{color:var(--ink);}
210
+ .bx-dim{border:1px solid var(--line);border-radius:14px;background:var(--paper-raised);padding:16px 18px;box-shadow:0 16px 42px rgba(32,47,75,.08);display:flex;flex-direction:column;min-width:0;}
211
+ .bx-dim-win{border-left:3px solid var(--good);}
212
+ .bx-dim-tie{border-left:3px solid var(--ink-faint);}
213
+ .bx-dim-struct{grid-column:1 / -1;background:var(--paper-elevated);border-style:dashed;border-color:var(--line);border-left:3px dashed var(--line);box-shadow:none;}
214
+ .bx-dim-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;}
215
+ .bx-dim-name{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.01em;}
216
+ .bx-dim-kind{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:999px;white-space:nowrap;}
217
+ .bx-kind-win{color:var(--good);background:var(--good-soft);border:1px solid var(--good-line);}
218
+ .bx-kind-tie{color:var(--ink-soft);background:var(--paper-elevated);border:1px solid var(--line);}
219
+ .bx-kind-budget{color:var(--verified);background:var(--paper-elevated);border:1px solid var(--line);text-transform:none;letter-spacing:.02em;}
220
+ .bx-kind-struct{color:var(--ink-soft);background:repeating-linear-gradient(-45deg,var(--paper-elevated),var(--paper-elevated) 4px,var(--paper-raised) 4px,var(--paper-raised) 8px);border:1px solid var(--line);}
221
+ .bx-dim-sub{margin:7px 0 14px;font-size:12.5px;line-height:1.45;color:var(--ink-soft);}
222
+ .bx-dim-sub b{color:var(--ink);}
223
+ .bx-dim-weight{display:inline-block;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);letter-spacing:.03em;white-space:nowrap;}
224
+ .bx-body{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;}
225
+ .bx-plot{display:flex;flex-direction:column;gap:8px;min-width:0;}
226
+ .bx-row{display:grid;grid-template-columns:52px minmax(0,1fr) 46px;align-items:center;gap:10px;}
227
+ .bx-arm{font-family:var(--mono);font-size:11px;color:var(--ink-soft);letter-spacing:.02em;}
228
+ .bx-track{position:relative;height:9px;border-radius:999px;background:#E7ECF3;overflow:hidden;}
229
+ .bx-fill{height:100%;border-radius:999px;}
230
+ .bx-fill-vise{background:var(--brand);}
231
+ .bx-fill-ctrl{background:#AAB4C3;}
232
+ .bx-fill-struct{background:repeating-linear-gradient(-45deg,var(--ink-faint),var(--ink-faint) 5px,#AAB4C3 5px,#AAB4C3 10px);}
233
+ .bx-track-zero{overflow:visible;background:#E7ECF3;}
234
+ .bx-zero-label{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10px;color:var(--ink-soft);letter-spacing:.02em;white-space:nowrap;}
235
+ .bx-val{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums;}
236
+ .bx-val-ctrl{color:var(--ink-soft);font-weight:500;}
237
+ .bx-val-struct{color:var(--ink-soft);}
238
+ .bx-delta{display:flex;flex-direction:column;align-items:flex-end;line-height:1;padding-left:14px;border-left:1px solid var(--line);min-width:82px;}
239
+ .bx-delta-lead{font-family:var(--mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;}
240
+ .bx-delta-num{font-family:var(--mono);font-size:26px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;}
241
+ .bx-delta-cap{font-family:var(--mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;margin-top:5px;color:var(--ink-soft);}
242
+ .bx-delta-win .bx-delta-num{color:var(--good);}
243
+ .bx-delta-tie .bx-delta-num{color:var(--ink-soft);}
244
+ .bx-delta-struct .bx-delta-num{color:var(--ink-soft);font-weight:600;font-size:22px;}
245
+
246
+ /* tie note */
247
+ .bx-tie-note{border:1px solid var(--line);border-left:3px solid var(--verified);border-radius:12px;background:var(--paper-raised);padding:13px 16px;font-size:13.5px;line-height:1.5;color:var(--ink-soft);}
248
+ .bx-tie-note b{color:var(--ink);}
249
+ .bx-tie-note em{color:var(--verified);font-style:normal;}
250
+
251
+ /* ============ PER-PLATFORM DUMBBELL LADDER ============ */
252
+ .bx-platforms{display:flex;flex-direction:column;gap:14px;}
253
+ .bx-plat-head{display:flex;flex-direction:column;gap:7px;}
254
+ /* rust reserved for genuine caveats; neutral section kickers use ink-soft */
255
+ .bx-tag,.bx-note-tag{align-self:flex-start;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--verified);}
256
+ .bx-tag-neutral{color:var(--ink-soft);}
257
+ .bx-plat-copy{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);max-width:92ch;}
258
+ .bx-plat-copy b{color:var(--ink);}
259
+ .bx-plat-copy em{color:var(--brand-dark);font-style:normal;}
260
+ .bx-plat-list{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line);border-radius:14px;background:var(--paper-raised);box-shadow:0 10px 30px rgba(32,47,75,.06);padding:6px;}
261
+ .bx-plat{padding:13px 16px 15px;border-radius:10px;}
262
+ .bx-plat + .bx-plat{border-top:1px solid var(--line);border-top-left-radius:0;border-top-right-radius:0;}
263
+ .bx-plat-avg{background:var(--brand-soft);border:1px solid var(--good-line);margin-bottom:4px;}
264
+ .bx-plat-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap;}
265
+ .bx-plat-name{font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap;}
266
+ .bx-plat-fix{display:inline;font-weight:400;font-size:12px;color:var(--ink-soft);white-space:normal;margin-left:8px;}
267
+ .bx-plat-meta{display:inline-flex;align-items:center;gap:10px;flex-shrink:0;}
268
+ .bx-plat-delta{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--good);font-variant-numeric:tabular-nums;}
269
+ .bx-plat-avg .bx-plat-delta{font-size:18px;}
270
+ .bx-sig{display:inline-block;padding:1px 8px;border-radius:999px;font-family:var(--mono);font-size:10.5px;background:var(--good-soft);color:var(--good);border:1px solid var(--good-line);white-space:nowrap;}
271
+ .bx-sig-full{background:var(--good-soft);color:var(--good);border:1px solid var(--good-line);}
272
+ .bx-sig-low{background:var(--paper-elevated);color:var(--verified);border-color:var(--line);}
273
+
274
+ /* the axis / dumbbell */
275
+ .bx-axis{position:relative;height:22px;}
276
+ .bx-gridlines{position:absolute;inset:0;}
277
+ .bx-gridlines i{position:absolute;top:-2px;bottom:-2px;width:1px;background:var(--line);}
278
+ .bx-gridlines i:first-child,.bx-gridlines i:last-child{background:var(--ink-faint);opacity:.5;}
279
+ .bx-connector{position:absolute;top:50%;height:4px;transform:translateY(-50%);border-radius:999px;background:linear-gradient(90deg,#AAB4C3,var(--brand));}
280
+ .bx-plat-avg .bx-connector{height:5px;}
281
+ .bx-dot{position:absolute;top:50%;width:14px;height:14px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 3px var(--paper-raised);}
282
+ .bx-plat-avg .bx-dot{box-shadow:0 0 0 3px var(--brand-soft);width:16px;height:16px;}
283
+ .bx-dot-ctrl{background:#AAB4C3;z-index:1;}
284
+ .bx-dot-vise{background:var(--brand);z-index:2;}
285
+ .bx-dot-capped{background:var(--brand);}
286
+ .bx-dot-lab{position:absolute;left:50%;top:-2px;transform:translate(-50%,-100%);font-family:var(--mono);font-size:11px;font-weight:600;color:var(--brand-dark);white-space:nowrap;font-variant-numeric:tabular-nums;}
287
+ .bx-dot-ctrl .bx-dot-lab{color:var(--ink-soft);font-weight:500;}
288
+ .bx-dot-lab-below{top:auto;bottom:-2px;transform:translate(-50%,100%);}
289
+ /* edge-aware labels: a dot sitting near the axis right edge (Web 88.3, RN 89.7)
290
+ right-aligns its nowrap label to the dot center so it never overhangs the
291
+ axis padding-box, independent of the host page's outer padding. */
292
+ .bx-dot-edge .bx-dot-lab{left:auto;right:50%;transform:translate(50%,-100%);}
293
+ .bx-capmark{color:var(--verified);font-size:8px;vertical-align:super;margin-left:1px;}
294
+ .bx-axis-scale{position:relative;height:16px;margin:0 6px;font-family:var(--mono);font-size:10.5px;color:var(--ink-soft);font-variant-numeric:tabular-nums;}
295
+ .bx-axis-scale span{position:absolute;transform:translateX(-50%);}
296
+ .bx-axis-scale span:first-child{transform:translateX(0);}
297
+ .bx-axis-scale span:last-child{transform:translateX(-100%);}
298
+
299
+ /* notes */
300
+ .bx-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
301
+ .bx-note{border:1px solid var(--line);border-radius:12px;padding:14px 16px;background:var(--paper-raised);}
302
+ .bx-note-cost{border-left:3px solid var(--verified);}
303
+ .bx-note-super{border-left:3px solid var(--ink-faint);}
304
+ .bx-note-tag{display:block;margin-bottom:6px;}
305
+ .bx-note-cost .bx-note-tag{color:var(--verified);}
306
+ .bx-note-super .bx-note-tag{color:var(--ink-soft);}
307
+ .bx-note p{margin:0;font-size:13px;line-height:1.5;color:var(--ink-soft);}
308
+ .bx-note b{color:var(--ink);}
309
+ .bx-note em{font-style:italic;}
310
+ .bx-strike{text-decoration:line-through;color:var(--ink-soft);text-decoration-color:var(--verified);}
311
+ .bx-footnote{margin:0;font-size:12px;line-height:1.55;color:var(--ink-soft);max-width:100%;border-top:1px dashed var(--line);padding-top:14px;}
312
+ .bx-footnote b{color:var(--ink);}
313
+
314
+ @media (max-width:860px){
315
+ .bx-recon-grid{grid-template-columns:1fr;}
316
+ .bx-xm-cards{grid-template-columns:1fr;}
317
+ .bx-conv-grid{grid-template-columns:1fr;}
318
+ .bx-headline{grid-template-columns:1fr;}
319
+ .bx-dims{grid-template-columns:1fr;}
320
+ .bx-dim-struct{grid-column:auto;}
321
+ .bx-notes{grid-template-columns:1fr;}
322
+ }
323
+ @media (max-width:520px){
324
+ .bx-xm{padding:14px;}
325
+ .bx-xm-card{padding:15px 16px;}
326
+ .bx-xm-stat b{font-size:26px;}
327
+ .bx-xm-nums{gap:16px;}
328
+ .bx-recon{padding:14px;}
329
+ .bx-conv-num{font-size:20px;}
330
+ .bx-dim{padding:14px;}
331
+ .bx-body{grid-template-columns:1fr;gap:12px;}
332
+ .bx-delta{flex-direction:row;align-items:baseline;gap:8px;padding-left:0;border-left:0;border-top:1px solid var(--line);padding-top:10px;width:100%;justify-content:space-between;}
333
+ .bx-delta-lead{margin-bottom:0;order:1;}
334
+ .bx-delta-num{order:2;font-size:22px;}
335
+ .bx-delta-cap{order:3;margin-top:0;}
336
+ .bx-head-nums{gap:16px;}
337
+ .bx-head-stat b{font-size:24px;}
338
+ .bx-row{grid-template-columns:46px minmax(0,1fr) 42px;gap:8px;}
339
+ .bx-plat-name{white-space:normal;}
340
+ .bx-plat-fix{display:block;margin-left:0;margin-top:3px;}
341
+ .bx-plat-top{margin-bottom:22px;}
342
+ }
343
+ /* tightest stop: force the triple mono stats to a stable 3-col grid instead of ad-hoc wrap */
344
+ @media (max-width:390px){
345
+ .bx-xm-nums,.bx-head-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end;}
346
+ .bx-xm-stat b,.bx-head-stat b{font-size:21px;}
347
+ .bx-xm-stat span,.bx-head-stat span{font-size:10px;}
348
+ .bx-recon-num{font-size:26px;}
349
+ .bx-conv-pair{gap:8px;}
350
+ .bx-conv-num{font-size:18px;}
351
+ .bx-conv-vs{font-size:14px;}
352
+ /* inset the dumbbell axis at the narrowest width so no dot label leans on
353
+ the host page's outer padding to stay inside; the edge-aligned rightmost
354
+ labels then sit comfortably within the padded axis parent. */
355
+ .bx-axis{margin:0 8px;}
356
+ .bx-axis-scale{margin:0 14px;}
357
+ }
136
358
 
137
359
  .catgroup{padding-top:22px;}
138
360
  .cathead{display:grid;grid-template-columns:72px minmax(0,1fr);gap:20px;align-items:flex-start;padding:62px 0 18px;scroll-margin-top:16px;}
@@ -503,9 +725,6 @@
503
725
  .hero h1{max-width:14ch;}
504
726
  .panel-stat{grid-template-columns:1fr 1fr;}
505
727
  .capgrid{grid-template-columns:1fr;}
506
- .bench-hero{grid-template-columns:1fr;}
507
- .platform-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
508
- .weight-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
509
728
  .cathead{grid-template-columns:52px 1fr;}
510
729
  .cathead .catletter{font-size:42px;}
511
730
  .diffrow{grid-template-columns:1fr;}
@@ -522,9 +741,6 @@
522
741
  section.problem{padding:18px;border-radius:12px;}
523
742
  .phone .pbody{min-height:128px;}
524
743
  .panel-stat{grid-template-columns:1fr 1fr;}
525
- .bench-metrics,.platform-grid,.weight-grid{grid-template-columns:1fr;}
526
- .platform-card p{min-height:0;}
527
- .bench-bar{grid-template-columns:78px minmax(0,1fr) 44px;}
528
744
  .uth{grid-template-columns:1fr;}
529
745
  .phone-hero h4{font-size:24px;}
530
746
  .phone-metrics{grid-template-columns:1fr;}
@@ -645,81 +861,334 @@
645
861
  </section>
646
862
 
647
863
  <section class="benchmark reveal" id="benchmark">
648
- <p class="section-kicker">Real E2E benchmark evidence</p>
649
- <h2>The current scorecard shows the workflow lift.</h2>
650
- <p class="intro">Vise was measured on complete brownfield social.plus integrations across five platform families. Agents had to preserve an existing product app, add social surfaces in-context, and produce runnable evidence. The July 2026 scorecard is directional product evidence from representative fixtures, not a third-party audit.</p>
651
-
652
- <div class="bench-shell">
653
- <div class="bench-hero">
654
- <div class="bench-scoreboard">
655
- <h3>Head-to-head average</h3>
656
- <div class="bench-metrics">
657
- <div class="bench-metric"><b>91.8</b><span>average with Vise</span></div>
658
- <div class="bench-metric"><b>48.0</b><span>average without Vise</span></div>
659
- <div class="bench-metric lift"><b>+43.8</b><span>average point lift</span></div>
864
+ <p class="section-kicker">Real E2E benchmark evidence &middot; two coding agents</p>
865
+ <h2>Two popular agents. Same brownfield integration. Vise won on every platform &mdash; and where both baselines actually ran, the lift agrees.</h2>
866
+ <p class="intro">We ran the governed Vise workflow against a Vise-off checklist baseline on the same brownfield social.plus integration &mdash; first with <b>OpenAI&nbsp;Codex&nbsp;GPT-5.4</b>, then with <b>Claude&nbsp;Sonnet&nbsp;5</b> on a hardened protocol. Vise led on all five platform families with both. But the two headline gaps are <b>not</b> equally solid, and neither raw average is the number to stand behind. Read the direction, not the decimals &mdash; <b>n&nbsp;=&nbsp;1 per arm</b>.</p>
867
+
868
+ <div class="bx-shell">
869
+
870
+ <div class="bx-legend" role="note">
871
+ <span class="bx-key"><span class="bx-swatch bx-swatch-vise"></span>Vise&nbsp;(governed)</span>
872
+ <span class="bx-key"><span class="bx-swatch bx-swatch-ctrl"></span>No&nbsp;Vise&nbsp;(checklist baseline)</span>
873
+ <span class="bx-key bx-key-note">Shared 0&ndash;100 composite &middot; both arms always shown &middot; averaged across 5 platforms &middot; deltas computed on unrounded scores</span>
874
+ </div>
875
+
876
+ <!-- ============ ONE-GLANCE RECONCILIATION ============ -->
877
+ <div class="bx-recon" role="note">
878
+ <span class="bx-recon-tag">Three honest numbers on this page &mdash; they measure different things</span>
879
+ <div class="bx-recon-grid">
880
+ <div class="bx-recon-cell">
881
+ <b class="bx-recon-num">+29.1</b>
882
+ <span class="bx-recon-lab">Sonnet&nbsp;5 clean anchor</span>
883
+ <span class="bx-recon-note">Full weighted composite. <b>Includes</b> the +90 definitional capability axis, so it is <em>not</em> the earned real-world number.</span>
660
884
  </div>
661
- <div class="bench-bars" aria-label="Average score comparison">
662
- <div class="bench-bar"><span>With Vise</span><div class="bench-track"><div class="bench-fill" style="width:91.8%;"></div></div><b>91.8</b></div>
663
- <div class="bench-bar"><span>No Vise</span><div class="bench-track"><div class="bench-fill control" style="width:48%;"></div></div><b>48.0</b></div>
885
+ <div class="bx-recon-cell bx-recon-cell-key">
886
+ <b class="bx-recon-num bx-recon-num-key">+12.1</b>
887
+ <span class="bx-recon-lab">The number we stand behind</span>
888
+ <span class="bx-recon-note">Sonnet&nbsp;5 <b>credible-only</b>: definitional axis removed, four fair dimensions re-weighted to 100%. The honest apples-to-apples lift.</span>
889
+ </div>
890
+ <div class="bx-recon-cell">
891
+ <b class="bx-recon-num">+23&ndash;31</b>
892
+ <span class="bx-recon-lab">Cross-model convergence</span>
893
+ <span class="bx-recon-note"><b>Raw composites</b> (still capability-inflated) on the two platforms where both baselines launched. Proves the lift&rsquo;s <b>direction</b> holds across agents &mdash; not its magnitude.</span>
894
+ </div>
895
+ </div>
896
+ </div>
897
+
898
+ <!-- ============ CROSS-MODEL BAND ============ -->
899
+ <div class="bx-xm">
900
+ <div class="bx-xm-head">
901
+ <span class="bx-tag bx-tag-neutral">Cross-model band &middot; average composite per agent</span>
902
+ <p class="bx-xm-copy">Same benchmark, two agents. The <b>anchor is Claude&nbsp;Sonnet&nbsp;5</b> &mdash; the hardened protocol where every no-Vise control built and launched, so its gap is earned. Codex&rsquo;s larger gap is shown <em>only</em> with its control-failure caveat attached. Both averages below are full composites; the honest apples-to-apples lift is the <b>+12.1</b> credible-only figure above.</p>
903
+ </div>
904
+
905
+ <div class="bx-xm-cards">
906
+
907
+ <div class="bx-xm-card bx-xm-anchor">
908
+ <div class="bx-xm-card-head">
909
+ <div class="bx-xm-model">
910
+ <span class="bx-xm-name">Claude&nbsp;Sonnet&nbsp;5</span>
911
+ <span class="bx-xm-badge bx-xm-badge-anchor"><span class="bx-xm-badge-dot" aria-hidden="true"></span>Anchor result</span>
912
+ </div>
913
+ <p class="bx-xm-proto">Hardened protocol &middot; all 5 controls built &amp; launched</p>
914
+ </div>
915
+ <div class="bx-xm-nums">
916
+ <div class="bx-xm-stat"><b>82.2</b><span>Vise</span></div>
917
+ <div class="bx-xm-stat"><b class="bx-ctrl-num">53.1</b><span>no&nbsp;Vise</span></div>
918
+ <div class="bx-xm-stat bx-xm-lift"><b>+29.1</b><span>full composite</span></div>
919
+ </div>
920
+ <p class="bx-xm-foot bx-xm-foot-clean"><span class="bx-xm-foot-mark" aria-hidden="true">&#10003;</span>Clean, conservative: all 5 controls launched. This +29.1 still carries the +90 definitional axis &mdash; the earned lift is +12.1 credible-only.</p>
921
+ </div>
922
+
923
+ <div class="bx-xm-card bx-xm-caveated">
924
+ <div class="bx-xm-card-head">
925
+ <div class="bx-xm-model">
926
+ <span class="bx-xm-name">OpenAI&nbsp;Codex&nbsp;GPT-5.4</span>
927
+ <span class="bx-xm-badge bx-xm-badge-earlier">Earlier protocol</span>
928
+ </div>
929
+ <p class="bx-xm-proto">First benchmark &middot; less-hardened harness</p>
930
+ </div>
931
+ <div class="bx-xm-nums">
932
+ <div class="bx-xm-stat"><b>91.8</b><span>Vise</span></div>
933
+ <div class="bx-xm-stat"><b class="bx-ctrl-num">48.0</b><span>no&nbsp;Vise</span></div>
934
+ <div class="bx-xm-stat bx-xm-lift bx-xm-lift-soft"><b><span class="bx-strike">+43.8</span><span class="bx-capmark" aria-hidden="true">&#9650;</span></b><span>inflated gap</span></div>
935
+ </div>
936
+ <div class="bx-xm-chip" role="note">
937
+ <span class="bx-xm-chip-mark" aria-hidden="true">&#9650;</span>
938
+ <span class="bx-xm-chip-text"><b>Earlier protocol inflates this.</b> 2 of 5 no-Vise controls failed before launch &mdash; Flutter deleted <code>lib/main.dart</code> (watchdog-killed &rarr; 33.0) and Android was depressed by an instrument failure (31.2). A third, iOS (43.0), ran low. All three <b>deflated the control and inflated this gap.</b></span>
939
+ </div>
664
940
  </div>
941
+
665
942
  </div>
666
- <div class="bench-callout">
667
- <b>What improved in the Vise arm</b>
668
- <p>The agent started from a grounded plan, selected an experience direction, used SDK facts instead of guessing APIs, discovered social targets naturally, validated requested surfaces, and treated runtime proof as separate from a successful build.</p>
943
+
944
+ <!-- CONVERGENCE STRIP -->
945
+ <div class="bx-conv" role="note">
946
+ <div class="bx-conv-head">
947
+ <span class="bx-conv-tag">Where both controls actually launched, the agents agree</span>
948
+ <p class="bx-conv-lead">Isolate the two platforms where the Codex control <b>built and launched</b> &mdash; Web and React&nbsp;Native &mdash; and the two agents&rsquo; deltas <b>agree within ~5 points</b>, both clearly positive. The inflation is confined to the failed-control platforms.</p>
949
+ </div>
950
+ <div class="bx-conv-grid">
951
+ <div class="bx-conv-plat">
952
+ <span class="bx-conv-plat-name">Web</span>
953
+ <div class="bx-conv-pair">
954
+ <div class="bx-conv-cell"><span class="bx-conv-agent">Codex</span><b class="bx-conv-num">+25.8</b></div>
955
+ <span class="bx-conv-vs" aria-hidden="true">&#8776;</span>
956
+ <div class="bx-conv-cell"><span class="bx-conv-agent">Sonnet&nbsp;5</span><b class="bx-conv-num">+31.5</b></div>
957
+ </div>
958
+ <span class="bx-conv-spread">agree within 5.7 pts</span>
959
+ </div>
960
+ <div class="bx-conv-plat">
961
+ <span class="bx-conv-plat-name">React&nbsp;Native</span>
962
+ <div class="bx-conv-pair">
963
+ <div class="bx-conv-cell"><span class="bx-conv-agent">Codex</span><b class="bx-conv-num">+23.0</b></div>
964
+ <span class="bx-conv-vs" aria-hidden="true">&#8776;</span>
965
+ <div class="bx-conv-cell"><span class="bx-conv-agent">Sonnet&nbsp;5</span><b class="bx-conv-num">+27.6</b></div>
966
+ </div>
967
+ <span class="bx-conv-spread">agree within 4.6 pts</span>
968
+ </div>
969
+ </div>
970
+ <p class="bx-conv-note"><b>Read these as raw composites, not the real-world lift.</b> Each Vise delta here still embeds the +90 definitional axis &mdash; the same inflation this section quarantines everywhere else &mdash; so these figures prove the lift points the <b>same direction</b> across two agents, not that the earned magnitude is +23&ndash;31. For the earned magnitude, use the <b>+12.1</b> credible-only number. iOS is left out of this window because the Codex iOS control launched but <em>ran low</em> (43.0) &mdash; the same reason its +43.8 average is caveated.</p>
669
971
  </div>
670
972
  </div>
671
973
 
672
- <div class="platform-grid" aria-label="Current platform benchmark rows">
673
- <article class="platform-card">
674
- <h3>Android</h3>
675
- <p>Investor watchlist app with social circles.</p>
676
- <div class="score-row"><span>Vise</span><b>94.3</b><span class="mini-track"><span class="mini-fill" style="width:94.3%;"></span></span></div>
677
- <div class="score-row"><span>No Vise</span><b>31.2</b><span class="mini-track"><span class="mini-fill control" style="width:31.2%;"></span></span></div>
678
- <span class="delta-pill">+63.1</span>
679
- </article>
680
- <article class="platform-card">
681
- <h3>iOS</h3>
682
- <p>Editorial audio app with curator clubs.</p>
683
- <div class="score-row"><span>Vise</span><b>90.1</b><span class="mini-track"><span class="mini-fill" style="width:90.1%;"></span></span></div>
684
- <div class="score-row"><span>No Vise</span><b>43.0</b><span class="mini-track"><span class="mini-fill control" style="width:43%;"></span></span></div>
685
- <span class="delta-pill">+47.1</span>
686
- </article>
687
- <article class="platform-card">
688
- <h3>Web</h3>
689
- <p>Fitness media app with program communities.</p>
690
- <div class="score-row"><span>Vise</span><b>91.4</b><span class="mini-track"><span class="mini-fill" style="width:91.4%;"></span></span></div>
691
- <div class="score-row"><span>No Vise</span><b>65.6</b><span class="mini-track"><span class="mini-fill control" style="width:65.6%;"></span></span></div>
692
- <span class="delta-pill">+25.8</span>
693
- </article>
694
- <article class="platform-card">
695
- <h3>Flutter</h3>
696
- <p>Training clubhouse with squad discussions.</p>
697
- <div class="score-row"><span>Vise</span><b>92.8</b><span class="mini-track"><span class="mini-fill" style="width:92.8%;"></span></span></div>
698
- <div class="score-row"><span>No Vise</span><b>33.0</b><span class="mini-track"><span class="mini-fill control" style="width:33%;"></span></span></div>
699
- <span class="delta-pill">+59.8</span>
700
- </article>
701
- <article class="platform-card">
702
- <h3>React Native</h3>
703
- <p>Athlete training app with clubhouse feed.</p>
704
- <div class="score-row"><span>Vise</span><b>90.3</b><span class="mini-track"><span class="mini-fill" style="width:90.3%;"></span></span></div>
705
- <div class="score-row"><span>No Vise</span><b>67.3</b><span class="mini-track"><span class="mini-fill control" style="width:67.3%;"></span></span></div>
706
- <span class="delta-pill">+23.0</span>
707
- </article>
974
+ <!-- ============ SONNET-5 CLEAN-RUN DEEP DIVE ============ -->
975
+ <div class="bx-deep">
976
+ <div class="bx-deep-head">
977
+ <span class="bx-tag bx-tag-neutral">The clean run, read honestly &middot; Claude Sonnet 5</span>
978
+ <p class="bx-plat-copy">The rest of this section is the Sonnet-5 run in full &mdash; the one where every control launched. The two composites below are the <em>same</em> anchor and credible-only numbers from the top, now broken down: the story isn&rsquo;t the definitional axis, it&rsquo;s that the credible, product-facing dimensions move while correctness stays a near-tie.</p>
979
+ </div>
708
980
  </div>
709
981
 
710
- <div class="bench-method">
711
- <h3>How the score is calculated</h3>
712
- <div class="weight-grid" aria-label="Benchmark scoring weights">
713
- <div class="weight-card"><b>25%</b><span>capability activation</span></div>
714
- <div class="weight-card"><b>25%</b><span>product outcome</span></div>
715
- <div class="weight-card"><b>20%</b><span>design integration</span></div>
716
- <div class="weight-card"><b>20%</b><span>correctness</span></div>
717
- <div class="weight-card"><b>10%</b><span>efficiency</span></div>
982
+ <div class="bx-headline">
983
+ <div class="bx-head-primary">
984
+ <span class="bx-head-tag">Full weighted composite &middot; all five dimensions</span>
985
+ <div class="bx-head-nums">
986
+ <div class="bx-head-stat"><b>82.2</b><span>Vise</span></div>
987
+ <div class="bx-head-stat"><b class="bx-ctrl-num">53.1</b><span>no&nbsp;Vise</span></div>
988
+ <div class="bx-head-stat bx-head-lift"><b>+29.1</b><span>full composite</span></div>
989
+ </div>
990
+ <p class="bx-head-copy">The same <b>+29.1</b> as the anchor card above &mdash; averaged across the five platforms, shown here for context, not as the headline. It <b>includes</b> the capability-activation axis (25% of the score), where the control is <b>0 by construction</b>, so most of this gap is definitional.</p>
991
+ </div>
992
+ <div class="bx-head-secondary">
993
+ <span class="bx-head-tag bx-head-tag-alt">Credible-only composite &middot; capability axis removed</span>
994
+ <div class="bx-head-nums">
995
+ <div class="bx-head-stat"><b>83.0</b><span>Vise</span></div>
996
+ <div class="bx-head-stat"><b class="bx-ctrl-num">70.8</b><span>no&nbsp;Vise</span></div>
997
+ <div class="bx-head-stat bx-head-lift"><b>+12.1</b><span>earned lift</span></div>
998
+ </div>
999
+ <p class="bx-head-copy"><b>This is the real-world lift &mdash; the same +12.1 flagged at the top.</b> Drop the definitional axis, re-weight the remaining four dimensions to 100%, and the honest head-to-head gap is <b>+12.1</b>. Directional: <b>n&nbsp;=&nbsp;1 per arm</b>. <span class="bx-head-round">Scores are rounded for display; the delta is computed on the unrounded composites (83.0&nbsp;&minus;&nbsp;70.8 reads as ~12.2 by hand, 12.1 exact).</span></p>
718
1000
  </div>
719
- <p>Each run is scored from 0-100. Product outcome and design integration are judged from runtime-visible social surfaces and screenshots. Correctness covers build/runtime hygiene, SDK-backed source, no leaked secrets, no hardcoded social object IDs, and completed handoff. Efficiency rewards validated SDK-backed outcomes within the run budget.</p>
720
1001
  </div>
721
1002
 
722
- <p class="bench-footnote">Benchmark context: produced with the Codex GPT-5.4 Medium harness and designed for equivalent-tier coding models such as Claude Sonnet 4.6 or Gemini Flash 3.5. Each Vise/no-Vise pair should stay on the same model and reasoning setting when used for a formal comparison.</p>
1003
+ <div class="bx-dims">
1004
+ <p class="bx-dims-lead">That <b>+12.1</b> credible lift breaks down across four fair dimensions. The fifth &mdash; capability activation &mdash; is quarantined at the bottom because it is a definition, not a contest.</p>
1005
+
1006
+ <div class="bx-dim bx-dim-win">
1007
+ <div class="bx-dim-head">
1008
+ <span class="bx-dim-name">Product outcome</span>
1009
+ <span class="bx-dim-kind bx-kind-win">Credible win</span>
1010
+ </div>
1011
+ <p class="bx-dim-sub">Governed arm ships more of the requested surfaces. <span class="bx-dim-weight">25% weight</span></p>
1012
+ <div class="bx-body">
1013
+ <div class="bx-plot">
1014
+ <div class="bx-row"><span class="bx-arm">Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:77.1%"></div></div><b class="bx-val">77.1</b></div>
1015
+ <div class="bx-row"><span class="bx-arm">No&nbsp;Vise</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:59.5%"></div></div><b class="bx-val bx-val-ctrl">59.5</b></div>
1016
+ </div>
1017
+ <div class="bx-delta bx-delta-win"><span class="bx-delta-lead">delta</span><span class="bx-delta-num">+17.6</span></div>
1018
+ </div>
1019
+ </div>
1020
+
1021
+ <div class="bx-dim bx-dim-win">
1022
+ <div class="bx-dim-head">
1023
+ <span class="bx-dim-name">Design integration</span>
1024
+ <span class="bx-dim-kind bx-kind-win">Credible win</span>
1025
+ </div>
1026
+ <p class="bx-dim-sub">Surfaces fit the host product better. <span class="bx-dim-weight">20% weight</span></p>
1027
+ <div class="bx-body">
1028
+ <div class="bx-plot">
1029
+ <div class="bx-row"><span class="bx-arm">Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:87.1%"></div></div><b class="bx-val">87.1</b></div>
1030
+ <div class="bx-row"><span class="bx-arm">No&nbsp;Vise</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:71.3%"></div></div><b class="bx-val bx-val-ctrl">71.3</b></div>
1031
+ </div>
1032
+ <div class="bx-delta bx-delta-win"><span class="bx-delta-lead">delta</span><span class="bx-delta-num">+15.8</span></div>
1033
+ </div>
1034
+ </div>
1035
+
1036
+ <div class="bx-dim bx-dim-tie">
1037
+ <div class="bx-dim-head">
1038
+ <span class="bx-dim-name">Correctness</span>
1039
+ <span class="bx-dim-kind bx-kind-tie">Near-parity</span>
1040
+ </div>
1041
+ <p class="bx-dim-sub">Build / runtime hygiene, SDK-backed source &mdash; on Android the checklist control built cleaner. <span class="bx-dim-weight">20% weight</span></p>
1042
+ <div class="bx-body">
1043
+ <div class="bx-plot">
1044
+ <div class="bx-row"><span class="bx-arm">Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:96.2%"></div></div><b class="bx-val">96.2</b></div>
1045
+ <div class="bx-row"><span class="bx-arm">No&nbsp;Vise</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:94.3%"></div></div><b class="bx-val bx-val-ctrl">94.3</b></div>
1046
+ </div>
1047
+ <div class="bx-delta bx-delta-tie"><span class="bx-delta-lead">delta</span><span class="bx-delta-num">+1.9</span></div>
1048
+ </div>
1049
+ </div>
1050
+
1051
+ <div class="bx-dim bx-dim-tie">
1052
+ <div class="bx-dim-head">
1053
+ <span class="bx-dim-name">Efficiency</span>
1054
+ <span class="bx-dim-kind bx-kind-budget">Budget metric &middot; slower in wall-clock</span>
1055
+ </div>
1056
+ <p class="bx-dim-sub">Scorer token / step budget only. Real elapsed time is <b>worse</b> &mdash; web ran ~2.7&times; the control. <span class="bx-dim-weight">10% weight</span></p>
1057
+ <div class="bx-body">
1058
+ <div class="bx-plot">
1059
+ <div class="bx-row"><span class="bx-arm">Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:63%"></div></div><b class="bx-val">63.0</b></div>
1060
+ <div class="bx-row"><span class="bx-arm">No&nbsp;Vise</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:51.3%"></div></div><b class="bx-val bx-val-ctrl">51.3</b></div>
1061
+ </div>
1062
+ <div class="bx-delta bx-delta-tie"><span class="bx-delta-lead">budget &Delta;</span><span class="bx-delta-num">+11.7</span></div>
1063
+ </div>
1064
+ </div>
1065
+
1066
+ <div class="bx-dim bx-dim-struct">
1067
+ <div class="bx-dim-head">
1068
+ <span class="bx-dim-name">Capability activation</span>
1069
+ <span class="bx-dim-kind bx-kind-struct">Structural &middot; Vise-definitional</span>
1070
+ </div>
1071
+ <p class="bx-dim-sub">The control scores <b>0 by construction</b> &mdash; it must not run the governed workflow. Context, not proof of value. <span class="bx-dim-weight">25% weight</span></p>
1072
+ <div class="bx-body">
1073
+ <div class="bx-plot">
1074
+ <div class="bx-row"><span class="bx-arm">Vise</span><div class="bx-track"><div class="bx-fill bx-fill-struct" style="width:90%"></div></div><b class="bx-val bx-val-struct">90</b></div>
1075
+ <div class="bx-row"><span class="bx-arm">No&nbsp;Vise</span><div class="bx-track bx-track-zero"><span class="bx-zero-label">0 &mdash; by construction</span></div><b class="bx-val bx-val-ctrl">0</b></div>
1076
+ </div>
1077
+ <div class="bx-delta bx-delta-struct"><span class="bx-delta-lead">delta</span><span class="bx-delta-num">+90</span><span class="bx-delta-cap">definitional</span></div>
1078
+ </div>
1079
+ </div>
1080
+ </div>
1081
+
1082
+ <div class="bx-tie-note">
1083
+ <b>Read it straight:</b> correctness is essentially a tie &mdash; on Android the checklist control was actually the cleaner build. Vise doesn&rsquo;t make code dramatically more crash-free than a disciplined checklist; it ships more of the right product, better integrated. The <b>+90</b> capability axis is a definition, not a result, and efficiency is a scorer <em>budget</em> figure &mdash; the governed arm is slower in real time. Keep both out of the headline.
1084
+ </div>
1085
+
1086
+ <div class="bx-platforms">
1087
+ <div class="bx-plat-head">
1088
+ <span class="bx-tag">Every platform, head-to-head &middot; Sonnet 5</span>
1089
+ <p class="bx-plat-copy">The same direction held on all five platform families; every control built and launched. Bars share one 0&ndash;100 axis, so each connector length <em>is</em> that platform&rsquo;s full-composite lift (still capability-inclusive). Scores marked <span class="bx-capmark" aria-hidden="true">&#9650;</span> were held <b>below</b> their raw weighted score by runtime-signal coverage (the <b>signals</b> chip), <b>not</b> by any correctness failure.</p>
1090
+ </div>
1091
+
1092
+ <div class="bx-plat-list">
1093
+
1094
+ <div class="bx-plat bx-plat-avg">
1095
+ <div class="bx-plat-top">
1096
+ <span class="bx-plat-name">Average <span class="bx-plat-fix">5 brownfield fixtures &middot; live tenant &middot; no mocking</span></span>
1097
+ <span class="bx-plat-meta"><span class="bx-plat-delta">+29.1</span></span>
1098
+ </div>
1099
+ <div class="bx-axis" role="img" aria-label="Average: Vise 82.2, no Vise 53.1, on a 0 to 100 scale.">
1100
+ <div class="bx-gridlines"><i style="left:0"></i><i style="left:25%"></i><i style="left:50%"></i><i style="left:75%"></i><i style="left:100%"></i></div>
1101
+ <div class="bx-connector" style="left:53.1%;width:29.1%"></div>
1102
+ <span class="bx-dot bx-dot-ctrl" style="left:53.1%"><span class="bx-dot-lab bx-dot-lab-below">53.1</span></span>
1103
+ <span class="bx-dot bx-dot-vise" style="left:82.2%"><span class="bx-dot-lab">82.2</span></span>
1104
+ </div>
1105
+ </div>
1106
+
1107
+ <div class="bx-plat">
1108
+ <div class="bx-plat-top">
1109
+ <span class="bx-plat-name">React&nbsp;Native <span class="bx-plat-fix">Arena Fit &mdash; athlete training app with clubhouse feed</span></span>
1110
+ <span class="bx-plat-meta"><span class="bx-sig bx-sig-full">8/9 signals</span><span class="bx-plat-delta">+27.6</span></span>
1111
+ </div>
1112
+ <div class="bx-axis" role="img" aria-label="React Native: Vise 89.7, no Vise 62.1, on a 0 to 100 scale.">
1113
+ <div class="bx-gridlines"><i style="left:0"></i><i style="left:25%"></i><i style="left:50%"></i><i style="left:75%"></i><i style="left:100%"></i></div>
1114
+ <div class="bx-connector" style="left:62.1%;width:27.6%"></div>
1115
+ <span class="bx-dot bx-dot-ctrl" style="left:62.1%"><span class="bx-dot-lab bx-dot-lab-below">62.1</span></span>
1116
+ <span class="bx-dot bx-dot-vise bx-dot-edge" style="left:89.7%"><span class="bx-dot-lab">89.7</span></span>
1117
+ </div>
1118
+ </div>
1119
+
1120
+ <div class="bx-plat">
1121
+ <div class="bx-plat-top">
1122
+ <span class="bx-plat-name">Web <span class="bx-plat-fix">PULSE &mdash; fitness media app with program communities</span></span>
1123
+ <span class="bx-plat-meta"><span class="bx-sig">6/9 signals</span><span class="bx-plat-delta">+31.5</span></span>
1124
+ </div>
1125
+ <div class="bx-axis" role="img" aria-label="Web: Vise 88.3, no Vise 56.8, on a 0 to 100 scale.">
1126
+ <div class="bx-gridlines"><i style="left:0"></i><i style="left:25%"></i><i style="left:50%"></i><i style="left:75%"></i><i style="left:100%"></i></div>
1127
+ <div class="bx-connector" style="left:56.8%;width:31.5%"></div>
1128
+ <span class="bx-dot bx-dot-ctrl" style="left:56.8%"><span class="bx-dot-lab bx-dot-lab-below">56.8</span></span>
1129
+ <span class="bx-dot bx-dot-vise bx-dot-edge" style="left:88.3%"><span class="bx-dot-lab">88.3</span></span>
1130
+ </div>
1131
+ </div>
1132
+
1133
+ <div class="bx-plat">
1134
+ <div class="bx-plat-top">
1135
+ <span class="bx-plat-name">Flutter <span class="bx-plat-fix">Fieldhouse &mdash; training clubhouse with squad discussions</span></span>
1136
+ <span class="bx-plat-meta"><span class="bx-sig bx-sig-low">4/9 signals</span><span class="bx-plat-delta">+29.5</span></span>
1137
+ </div>
1138
+ <div class="bx-axis" role="img" aria-label="Flutter: Vise 78.0, held below its raw score by 4 of 9 runtime signals; no Vise 48.5, on a 0 to 100 scale.">
1139
+ <div class="bx-gridlines"><i style="left:0"></i><i style="left:25%"></i><i style="left:50%"></i><i style="left:75%"></i><i style="left:100%"></i></div>
1140
+ <div class="bx-connector" style="left:48.5%;width:29.5%"></div>
1141
+ <span class="bx-dot bx-dot-ctrl" style="left:48.5%"><span class="bx-dot-lab bx-dot-lab-below">48.5</span></span>
1142
+ <span class="bx-dot bx-dot-vise bx-dot-capped" style="left:78%"><span class="bx-dot-lab">78.0<span class="bx-capmark" aria-hidden="true">&#9650;</span><span class="bx-sr">held below raw weighted score by 4 of 9 runtime-signal coverage, not a correctness failure</span></span></span>
1143
+ </div>
1144
+ </div>
1145
+
1146
+ <div class="bx-plat">
1147
+ <div class="bx-plat-top">
1148
+ <span class="bx-plat-name">iOS <span class="bx-plat-fix">Luminary Club &mdash; editorial audio / reading-club app</span></span>
1149
+ <span class="bx-plat-meta"><span class="bx-sig bx-sig-low">5/9 signals</span><span class="bx-plat-delta">+29.5</span></span>
1150
+ </div>
1151
+ <div class="bx-axis" role="img" aria-label="iOS: Vise 77.5, held below its raw score by 5 of 9 runtime signals; no Vise 48.0, on a 0 to 100 scale.">
1152
+ <div class="bx-gridlines"><i style="left:0"></i><i style="left:25%"></i><i style="left:50%"></i><i style="left:75%"></i><i style="left:100%"></i></div>
1153
+ <div class="bx-connector" style="left:48%;width:29.5%"></div>
1154
+ <span class="bx-dot bx-dot-ctrl" style="left:48%"><span class="bx-dot-lab bx-dot-lab-below">48.0</span></span>
1155
+ <span class="bx-dot bx-dot-vise bx-dot-capped" style="left:77.5%"><span class="bx-dot-lab">77.5<span class="bx-capmark" aria-hidden="true">&#9650;</span><span class="bx-sr">held below raw weighted score by 5 of 9 runtime-signal coverage, not a correctness failure</span></span></span>
1156
+ </div>
1157
+ </div>
1158
+
1159
+ <div class="bx-plat">
1160
+ <div class="bx-plat-top">
1161
+ <span class="bx-plat-name">Android <span class="bx-plat-fix">MarketPulse &mdash; investor watchlist app with social circles</span></span>
1162
+ <span class="bx-plat-meta"><span class="bx-sig bx-sig-low">5/9 signals</span><span class="bx-plat-delta">+27.4</span></span>
1163
+ </div>
1164
+ <div class="bx-axis" role="img" aria-label="Android: Vise 77.5, held below its raw score by 5 of 9 runtime signals; no Vise 50.1, on a 0 to 100 scale. On this platform the control built cleaner on correctness.">
1165
+ <div class="bx-gridlines"><i style="left:0"></i><i style="left:25%"></i><i style="left:50%"></i><i style="left:75%"></i><i style="left:100%"></i></div>
1166
+ <div class="bx-connector" style="left:50.1%;width:27.4%"></div>
1167
+ <span class="bx-dot bx-dot-ctrl" style="left:50.1%"><span class="bx-dot-lab bx-dot-lab-below">50.1</span></span>
1168
+ <span class="bx-dot bx-dot-vise bx-dot-capped" style="left:77.5%"><span class="bx-dot-lab">77.5<span class="bx-capmark" aria-hidden="true">&#9650;</span><span class="bx-sr">held below raw weighted score by 5 of 9 runtime-signal coverage, not a correctness failure</span></span></span>
1169
+ </div>
1170
+ </div>
1171
+
1172
+ </div>
1173
+
1174
+ <div class="bx-axis-scale" aria-hidden="true">
1175
+ <span style="left:0">0</span><span style="left:25%">25</span><span style="left:50%">50</span><span style="left:75%">75</span><span style="left:100%">100</span>
1176
+ </div>
1177
+ </div>
1178
+
1179
+ <div class="bx-notes">
1180
+ <div class="bx-note bx-note-cost">
1181
+ <span class="bx-note-tag">Tradeoff</span>
1182
+ <p><b>Governance is more thorough but slower.</b> The Vise arm delivers more surfaces at a higher wall-clock cost &mdash; on web it ran roughly <b>2.7&times;</b> the control&rsquo;s elapsed time. The efficiency dimension above is a scorer <em>budget</em> metric, not real time.</p>
1183
+ </div>
1184
+ <div class="bx-note bx-note-super">
1185
+ <span class="bx-note-tag">Why Sonnet 5 is the anchor, not Codex</span>
1186
+ <p>The earlier Codex GPT-5.4 average (91.8 / 48.0 / <span class="bx-strike">+43.8</span>) is inflated: two no-Vise controls were watchdog-killed <em>before launch</em> and iOS ran low, deflating the control. The Sonnet-5 controls all built and launched (React&nbsp;Native no-Vise reached 62.1), so <b>+29.1</b> &mdash; and the earned <b>+12.1</b> credible-only lift &mdash; are the honest numbers to headline.</p>
1187
+ </div>
1188
+ </div>
1189
+
1190
+ <p class="bx-footnote">Both agents run each arm on the same brownfield fixture with a live tenant and no mocking; <b>Vise is the deterministic CLI under test, not an AI model.</b> Scoring weights: capability activation 25% (definitional), product outcome 25%, design integration 20%, correctness 20%, efficiency 10%. The credible-only composite drops the capability axis and re-weights the remaining four to 100%. All deltas are computed on unrounded composites, so a hand-subtraction of the rounded scores can differ by 0.1. Codex GPT-5.4 (Medium) ran late&nbsp;June&nbsp;2026 on the first, less-hardened harness; Claude&nbsp;Sonnet&nbsp;5 ran early&nbsp;July&nbsp;2026 on the current hardened protocol &mdash; the protocol was hardened between the two runs, which is why their controls are not directly comparable and the convergence view is limited to the two platforms where both launched. July&nbsp;2026 directional product-evidence runs on representative fixtures, <b>n&nbsp;=&nbsp;1 per arm</b> &mdash; not a third-party audit. For a formal comparison, keep each Vise / no-Vise pair on the same model and reasoning setting.</p>
1191
+
723
1192
  </div>
724
1193
  </section>
725
1194