@amityco/social-plus-vise 1.4.6 → 1.6.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.
- package/CHANGELOG.md +35 -10
- package/README.md +35 -31
- package/dist/capabilities.js +1 -1
- package/dist/flow.js +2 -2
- package/dist/humanFormat.js +2 -0
- package/dist/outcomes.js +34 -10
- package/dist/server.js +421 -62
- package/dist/tools/compliance.js +321 -12
- package/dist/tools/debug.js +16 -1
- package/dist/tools/design.js +47 -16
- package/dist/tools/integration.js +40 -7
- package/dist/tools/project.js +257 -10
- package/dist/tools/smoke.js +169 -1
- package/docs/vise-how-it-helps.html +318 -105
- package/package.json +1 -1
- package/rules/channel-archive.yaml +136 -0
- package/rules/feed.yaml +37 -15
- package/rules/for-you-feed.yaml +110 -0
- package/rules/live-data.yaml +10 -5
- package/rules/message-search.yaml +136 -0
- package/rules/sdk-lifecycle.yaml +23 -0
- package/sdk-surface/android.json +1305 -23
- package/sdk-surface/flutter.json +2542 -2582
- package/sdk-surface/ios.json +1182 -166
- package/sdk-surface/manifest.json +32 -32
- package/sdk-surface/models.android.json +14 -4
- package/sdk-surface/models.flutter.json +2 -2
- package/sdk-surface/models.ios.json +2 -2
- package/sdk-surface/models.typescript.json +145 -145
- package/sdk-surface/typescript.json +8337 -2443
- package/skills/social-plus-vise/SKILL.md +33 -13
|
@@ -98,41 +98,273 @@
|
|
|
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
|
-
|
|
102
|
-
.
|
|
103
|
-
.
|
|
104
|
-
.
|
|
105
|
-
.
|
|
106
|
-
.
|
|
107
|
-
.
|
|
108
|
-
.
|
|
109
|
-
.
|
|
110
|
-
.
|
|
111
|
-
.
|
|
112
|
-
.
|
|
113
|
-
.
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
.
|
|
117
|
-
.
|
|
118
|
-
.
|
|
119
|
-
.
|
|
120
|
-
.
|
|
121
|
-
|
|
122
|
-
.
|
|
123
|
-
.
|
|
124
|
-
.
|
|
125
|
-
.
|
|
126
|
-
.
|
|
127
|
-
.
|
|
128
|
-
.
|
|
129
|
-
.
|
|
130
|
-
.
|
|
131
|
-
.
|
|
132
|
-
.
|
|
133
|
-
.
|
|
134
|
-
.
|
|
135
|
-
.
|
|
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:68px 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
|
+
.bx-pt-head{font-size:13px;color:var(--ink);margin:0 0 8px;}
|
|
314
|
+
.bx-pt-head b{color:var(--ink);}
|
|
315
|
+
.bx-pt-scroll{overflow-x:auto;}
|
|
316
|
+
.bx-pt{width:100%;min-width:360px;border-collapse:collapse;font-size:13px;}
|
|
317
|
+
.bx-pt th,.bx-pt td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap;}
|
|
318
|
+
.bx-pt th{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);font-weight:700;}
|
|
319
|
+
.bx-pt td:first-child,.bx-pt th:first-child{text-align:left;font-family:var(--sans);color:var(--ink);}
|
|
320
|
+
.bx-pt td.v{color:var(--ink);font-weight:600;}
|
|
321
|
+
.bx-pt td.lift{color:var(--good);font-weight:700;}
|
|
322
|
+
.bx-pt tr:last-child td{border-bottom:none;border-top:2px solid var(--line);color:var(--ink);font-weight:700;}
|
|
323
|
+
|
|
324
|
+
@media (max-width:860px){
|
|
325
|
+
.bx-recon-grid{grid-template-columns:1fr;}
|
|
326
|
+
.bx-xm-cards{grid-template-columns:1fr;}
|
|
327
|
+
.bx-conv-grid{grid-template-columns:1fr;}
|
|
328
|
+
.bx-headline{grid-template-columns:1fr;}
|
|
329
|
+
.bx-dims{grid-template-columns:1fr;}
|
|
330
|
+
.bx-dim-struct{grid-column:auto;}
|
|
331
|
+
.bx-notes{grid-template-columns:1fr;}
|
|
332
|
+
}
|
|
333
|
+
@media (max-width:520px){
|
|
334
|
+
.bx-xm{padding:14px;}
|
|
335
|
+
.bx-xm-card{padding:15px 16px;}
|
|
336
|
+
.bx-xm-stat b{font-size:26px;}
|
|
337
|
+
.bx-xm-nums{gap:16px;}
|
|
338
|
+
.bx-recon{padding:14px;}
|
|
339
|
+
.bx-conv-num{font-size:20px;}
|
|
340
|
+
.bx-dim{padding:14px;}
|
|
341
|
+
.bx-body{grid-template-columns:1fr;gap:12px;}
|
|
342
|
+
.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;}
|
|
343
|
+
.bx-delta-lead{margin-bottom:0;order:1;}
|
|
344
|
+
.bx-delta-num{order:2;font-size:22px;}
|
|
345
|
+
.bx-delta-cap{order:3;margin-top:0;}
|
|
346
|
+
.bx-head-nums{gap:16px;}
|
|
347
|
+
.bx-head-stat b{font-size:24px;}
|
|
348
|
+
.bx-row{grid-template-columns:64px minmax(0,1fr) 42px;gap:8px;}
|
|
349
|
+
.bx-plat-name{white-space:normal;}
|
|
350
|
+
.bx-plat-fix{display:block;margin-left:0;margin-top:3px;}
|
|
351
|
+
.bx-plat-top{margin-bottom:22px;}
|
|
352
|
+
}
|
|
353
|
+
/* tightest stop: force the triple mono stats to a stable 3-col grid instead of ad-hoc wrap */
|
|
354
|
+
@media (max-width:390px){
|
|
355
|
+
.bx-xm-nums,.bx-head-nums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end;}
|
|
356
|
+
.bx-xm-stat b,.bx-head-stat b{font-size:21px;}
|
|
357
|
+
.bx-xm-stat span,.bx-head-stat span{font-size:10px;}
|
|
358
|
+
.bx-recon-num{font-size:26px;}
|
|
359
|
+
.bx-conv-pair{gap:8px;}
|
|
360
|
+
.bx-conv-num{font-size:18px;}
|
|
361
|
+
.bx-conv-vs{font-size:14px;}
|
|
362
|
+
/* inset the dumbbell axis at the narrowest width so no dot label leans on
|
|
363
|
+
the host page's outer padding to stay inside; the edge-aligned rightmost
|
|
364
|
+
labels then sit comfortably within the padded axis parent. */
|
|
365
|
+
.bx-axis{margin:0 8px;}
|
|
366
|
+
.bx-axis-scale{margin:0 14px;}
|
|
367
|
+
}
|
|
136
368
|
|
|
137
369
|
.catgroup{padding-top:22px;}
|
|
138
370
|
.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 +735,6 @@
|
|
|
503
735
|
.hero h1{max-width:14ch;}
|
|
504
736
|
.panel-stat{grid-template-columns:1fr 1fr;}
|
|
505
737
|
.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
738
|
.cathead{grid-template-columns:52px 1fr;}
|
|
510
739
|
.cathead .catletter{font-size:42px;}
|
|
511
740
|
.diffrow{grid-template-columns:1fr;}
|
|
@@ -522,9 +751,6 @@
|
|
|
522
751
|
section.problem{padding:18px;border-radius:12px;}
|
|
523
752
|
.phone .pbody{min-height:128px;}
|
|
524
753
|
.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
754
|
.uth{grid-template-columns:1fr;}
|
|
529
755
|
.phone-hero h4{font-size:24px;}
|
|
530
756
|
.phone-metrics{grid-template-columns:1fr;}
|
|
@@ -646,80 +872,67 @@
|
|
|
646
872
|
|
|
647
873
|
<section class="benchmark reveal" id="benchmark">
|
|
648
874
|
<p class="section-kicker">Real E2E benchmark evidence</p>
|
|
649
|
-
<h2>
|
|
650
|
-
<p class="intro">
|
|
651
|
-
|
|
652
|
-
<div class="
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
875
|
+
<h2>Vise vs no-Vise, on two coding agents — Vise scored higher every time.</h2>
|
|
876
|
+
<p class="intro">We built the same brownfield social.plus integration twice on each of five platforms — once through Vise’s governed workflow, once from a plain checklist with Vise switched off — using two coding agents. With both agents, the Vise arm scored higher on every platform.</p>
|
|
877
|
+
|
|
878
|
+
<div class="bx-shell">
|
|
879
|
+
|
|
880
|
+
<div class="bx-legend" role="note">
|
|
881
|
+
<span class="bx-key"><span class="bx-swatch bx-swatch-vise"></span>With Vise (governed)</span>
|
|
882
|
+
<span class="bx-key"><span class="bx-swatch bx-swatch-ctrl"></span>Without Vise (checklist)</span>
|
|
883
|
+
<span class="bx-key bx-key-note">0–100 composite · averaged across 5 platforms</span>
|
|
884
|
+
</div>
|
|
885
|
+
|
|
886
|
+
<div class="bx-xm-cards">
|
|
887
|
+
|
|
888
|
+
<div class="bx-xm-card bx-xm-anchor">
|
|
889
|
+
<div class="bx-xm-card-head">
|
|
890
|
+
<div class="bx-xm-model"><span class="bx-xm-name">Claude Sonnet 5</span></div>
|
|
891
|
+
<p class="bx-xm-proto">Clean run · current hardened protocol</p>
|
|
660
892
|
</div>
|
|
661
|
-
<div class="
|
|
662
|
-
<div class="
|
|
663
|
-
<div class="
|
|
893
|
+
<div class="bx-plot" style="margin-top:16px;">
|
|
894
|
+
<div class="bx-row"><span class="bx-arm">With Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:82.2%"></div></div><b class="bx-val">82.2</b></div>
|
|
895
|
+
<div class="bx-row"><span class="bx-arm">Without</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:53.1%"></div></div><b class="bx-val bx-val-ctrl">53.1</b></div>
|
|
664
896
|
</div>
|
|
897
|
+
<p class="bx-xm-foot bx-xm-foot-clean"><span class="bx-xm-foot-mark" aria-hidden="true">✓</span>Vise ahead on all 5 platforms.</p>
|
|
665
898
|
</div>
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
<
|
|
899
|
+
|
|
900
|
+
<div class="bx-xm-card">
|
|
901
|
+
<div class="bx-xm-card-head">
|
|
902
|
+
<div class="bx-xm-model"><span class="bx-xm-name">OpenAI Codex GPT-5.4</span><span class="bx-xm-badge bx-xm-badge-earlier">directional</span></div>
|
|
903
|
+
<p class="bx-xm-proto">Second agent · earlier, higher-variance harness</p>
|
|
904
|
+
</div>
|
|
905
|
+
<div class="bx-plot" style="margin-top:16px;">
|
|
906
|
+
<div class="bx-row"><span class="bx-arm">With Vise</span><div class="bx-track"><div class="bx-fill bx-fill-vise" style="width:92%"></div></div><b class="bx-val">~92</b></div>
|
|
907
|
+
<div class="bx-row"><span class="bx-arm">Without</span><div class="bx-track"><div class="bx-fill bx-fill-ctrl" style="width:66%"></div></div><b class="bx-val bx-val-ctrl">~66</b></div>
|
|
908
|
+
</div>
|
|
909
|
+
<p class="bx-xm-foot"><span class="bx-xm-foot-mark" aria-hidden="true">✓</span>Vise ahead on all 5 platforms.</p>
|
|
669
910
|
</div>
|
|
911
|
+
|
|
670
912
|
</div>
|
|
671
913
|
|
|
672
|
-
<div class="
|
|
673
|
-
<
|
|
674
|
-
|
|
675
|
-
<
|
|
676
|
-
<
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
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>
|
|
914
|
+
<div class="bx-pt-scroll">
|
|
915
|
+
<p class="bx-pt-head"><b>Per platform</b> — Claude Sonnet 5, the clean uniform run. (Codex GPT-5.4 led on all five too, but its no-Vise controls are high-variance, so it stays a directional aggregate above rather than precise per-platform numbers.)</p>
|
|
916
|
+
<table class="bx-pt">
|
|
917
|
+
<thead><tr><th>Platform</th><th>With Vise</th><th>Without</th><th>Lift</th></tr></thead>
|
|
918
|
+
<tbody>
|
|
919
|
+
<tr><td>Web</td><td class="v">88.3</td><td>56.8</td><td class="lift">+31.5</td></tr>
|
|
920
|
+
<tr><td>React Native</td><td class="v">89.7</td><td>62.1</td><td class="lift">+27.6</td></tr>
|
|
921
|
+
<tr><td>iOS</td><td class="v">77.5</td><td>48.0</td><td class="lift">+29.5</td></tr>
|
|
922
|
+
<tr><td>Android</td><td class="v">77.5</td><td>50.1</td><td class="lift">+27.4</td></tr>
|
|
923
|
+
<tr><td>Flutter</td><td class="v">78.0</td><td>48.5</td><td class="lift">+29.5</td></tr>
|
|
924
|
+
<tr><td>Average</td><td class="v">82.2</td><td>53.1</td><td class="lift">+29.1</td></tr>
|
|
925
|
+
</tbody>
|
|
926
|
+
</table>
|
|
708
927
|
</div>
|
|
709
928
|
|
|
710
|
-
<div class="
|
|
711
|
-
<
|
|
712
|
-
<
|
|
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>
|
|
718
|
-
</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>
|
|
929
|
+
<div class="bx-note" role="note">
|
|
930
|
+
<span class="bx-note-tag">How it’s scored</span>
|
|
931
|
+
<p>Same brownfield app, same agent, built twice per platform — once through Vise’s governed workflow, once from a plain checklist with Vise off. Each run is launched on a real emulator / simulator / browser and scored <b>0–100</b> as a weighted composite: capability activation 25% (used the governed workflow), product outcome 25% (social surfaces that actually load), design integration 20%, runtime hygiene 20% (builds & launches clean), efficiency 10%. The table and card scores are that composite; each card number is the average across all five platforms.</p>
|
|
720
932
|
</div>
|
|
721
933
|
|
|
722
|
-
<p class="
|
|
934
|
+
<p class="bx-footnote"><b>Vise is the deterministic CLI under test, not an AI model.</b> About a quarter of each score is capability activation — adopting Vise’s governed workflow, which the no-Vise control can’t earn by construction — so part of every gap is definitional; set that axis aside and Vise still comes out ahead, driven mainly by product and design quality (runtime hygiene is roughly a tie). Codex ran on an earlier, higher-variance harness, so its figures are directional (rounded). July 2026 directional product evidence, n = 1 per arm — not a third-party audit.</p>
|
|
935
|
+
|
|
723
936
|
</div>
|
|
724
937
|
</section>
|
|
725
938
|
|