Pre-launch — Gluecron is in final validation. Public signups and git hosting for non-owner users open after launch review.
CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history

trust-report.tsx

Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.

trust-report.tsxBlame597 lines · 1 contributor
11c3ab6ccanty labs1import type { FC } from "hono/jsx";
2
3export interface TrustReportProps {
4 stats?: {
5 repairRate: string;
6 revertRate: string;
7 autonomousActions: string;
8 };
9}
10
11const headline = [
12 {
13 value: "1.9%",
14 label: "AI merges reverted within 30 days",
15 trend: "▾ 0.4pt vs May",
16 trendColor: "#1e7f5c",
17 },
18 {
19 value: "2.1",
20 label: "median repair attempts to converge",
21 trend: "— flat vs May",
22 trendColor: "#8a8d99",
23 },
24 {
25 value: "27s",
26 label: "median time to first AI review",
27 trend: "▾ 3s vs May",
28 trendColor: "#1e7f5c",
29 },
30];
31
32const metrics = [
33 {
34 name: "AI-authored merges",
35 value: "1,412",
36 note: "across all customer repos this month",
37 },
38 {
39 name: "Reverted by humans",
40 value: "27",
41 note: "19 preference, 6 behavior, 2 regressions",
42 },
43 {
44 name: "Review false-positive rate",
45 value: "4.7%",
46 note: "AI flags later dismissed by a human reviewer",
47 },
48 {
49 name: "Review false-negative rate",
50 value: "0.8%",
51 note: "human-found defects the AI review missed",
52 },
53 {
54 name: "Repair loops that converged",
55 value: "93.5%",
56 note: "the rest were pinned for human review — never looped forever",
57 },
58 {
59 name: "Gate p99 latency",
60 value: "38s",
61 note: "push-time; measured at the git wire, not the dashboard",
62 },
63 {
64 name: "Irreversible actions taken autonomously",
65 value: "0",
66 note: "by policy — flagged effects always wait for a human",
67 },
68];
69
70const honest = [
71 {
72 what: "Long-lived migrations",
73 detail:
74 "repair convergence drops to 71% when a failing gate involves a schema migration. These are pinned to humans early.",
75 },
76 {
77 what: "Frontend visual regressions",
78 detail:
79 "gates catch logic, not looks. Visual diff coverage ships later this year.",
80 },
81 {
82 what: "Monorepos over 2M LOC",
83 detail:
84 "semantic index freshness lags ~40 min at that scale; cross-repo impact maps can be stale.",
85 },
86];
87
88export const TrustReport: FC<TrustReportProps> = (props) => {
89 const revertRate = props.stats?.revertRate ?? "1.9%";
90 const repairRate = props.stats?.repairRate ?? "2.1";
91 const autonomousActions = props.stats?.autonomousActions ?? "0";
92
93 const displayHeadline = [
94 {
95 value: revertRate,
96 label: headline[0].label,
97 trend: headline[0].trend,
98 trendColor: headline[0].trendColor,
99 },
100 {
101 value: repairRate,
102 label: headline[1].label,
103 trend: headline[1].trend,
104 trendColor: headline[1].trendColor,
105 },
106 {
107 value: headline[2].value,
108 label: headline[2].label,
109 trend: headline[2].trend,
110 trendColor: headline[2].trendColor,
111 },
112 ];
113
114 const displayMetrics = metrics.map((m, i) => {
115 if (i === 6) {
116 return { ...m, value: autonomousActions };
117 }
118 return m;
119 });
120
121 return (
122 <>
123 <style dangerouslySetInnerHTML={{ __html: css }} />
124 <div class="tr-root">
125 <header class="tr-header">
126 <a href="/" class="tr-logo">
127 <span class="tr-logo-mark"></span>
128 gluecron
129 </a>
130 <span class="tr-breadcrumb-sep">/</span>
131 <span class="tr-breadcrumb-label">Trust</span>
132 <div class="tr-header-right">
133 <span class="tr-live-badge">
134 <span class="tr-live-dot"></span>
135 Live · updates hourly
136 </span>
137 </div>
138 </header>
139
140 <main class="tr-main">
141 <div class="tr-hero">
142 <div class="tr-eyebrow">Public trust report · June 2026</div>
143 <h1 class="tr-h1">How good is the AI, really?</h1>
144 <p class="tr-hero-sub">
145 Every number below is computed from production data and published
146 automatically. We show them because you shouldn't have to take
147 autonomous merging on faith.
148 </p>
149 </div>
150
151 <div class="tr-stats-grid">
152 {displayHeadline.map((h) => (
153 <div class="tr-stat-cell">
154 <div class="tr-stat-value">{h.value}</div>
155 <div class="tr-stat-label">{h.label}</div>
156 <div
157 class="tr-stat-trend"
158 style={`color:${h.trendColor}`}
159 >
160 {h.trend}
161 </div>
162 </div>
163 ))}
164 </div>
165 <p class="tr-stats-note">
166 Reverted = any AI-authored merge undone within 30 days, for any
167 reason.
168 </p>
169
170 <h2 class="tr-section-heading">The numbers behind the numbers</h2>
171 <div class="tr-metrics-table">
172 {displayMetrics.map((m, i) => (
173 <div
174 class={
175 i === displayMetrics.length - 1
176 ? "tr-metric-row tr-metric-row--last"
177 : "tr-metric-row"
178 }
179 >
180 <span class="tr-metric-name">{m.name}</span>
181 <span class="tr-metric-value">{m.value}</span>
182 <span class="tr-metric-note">{m.note}</span>
183 </div>
184 ))}
185 </div>
186
187 <div class="tr-guarantee-card">
188 <div class="tr-guarantee-eyebrow">The reversibility guarantee</div>
189 <p class="tr-guarantee-primary">
190 Every autonomous action on Gluecron — merge, repair, deploy — can
191 be undone in one click, and shows you its blast radius before you
192 approve it.
193 </p>
194 <p class="tr-guarantee-secondary">
195 Irreversible side effects (like a sent email) are always flagged in
196 the plan before execution. If we can't reverse it, we won't do it
197 autonomously.
198 </p>
199 </div>
200
201 <h2 class="tr-section-heading">Where we're not good enough yet</h2>
202 <div class="tr-honest-list">
203 {honest.map((h) => (
204 <div class="tr-honest-item">
205 <span class="tr-honest-dot"></span>
206 <div class="tr-honest-body">
207 <span class="tr-honest-what">{h.what}</span>
208 <span class="tr-honest-detail"> — {h.detail}</span>
209 </div>
210 </div>
211 ))}
212 </div>
213
214 <div class="tr-footer">
215 <p class="tr-footer-line">
216 Methodology and raw data:{" "}
217 <a href="/trust/methodology" class="tr-footer-link">
218 gluecron.com/trust/methodology
219 </a>
220 </p>
221 <p class="tr-footer-meta">
222 generated 2026-07-03 06:00 UTC · from production telemetry ·
223 unedited
224 </p>
225 </div>
226 </main>
227 </div>
228 </>
229 );
230};
231
232export default TrustReport;
233
234const css = `
235@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;450;500;600;700&family=Inter+Tight:wght@500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap');
236
237*,
238*::before,
239*::after {
240 box-sizing: border-box;
241}
242
243.tr-root {
244 font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
245 font-size: 14px;
246 line-height: 1.55;
247 letter-spacing: -0.008em;
248 color: #16181d;
249 background: #fcfcfd;
250 min-height: 100vh;
251 display: flex;
252 flex-direction: column;
253 -webkit-font-smoothing: antialiased;
254 text-rendering: optimizeLegibility;
255}
256
257/* Header */
258.tr-header {
259 height: 56px;
260 border-bottom: 1px solid rgba(22, 24, 29, 0.07);
261 background: #fcfcfd;
262 display: flex;
263 align-items: center;
264 padding: 0 28px;
265 gap: 20px;
266 position: sticky;
267 top: 0;
268 z-index: 50;
269}
270
271.tr-logo {
272 display: inline-flex;
273 align-items: center;
274 gap: 9px;
275 font-family: 'Inter Tight', sans-serif;
276 font-weight: 600;
277 font-size: 15px;
278 letter-spacing: -0.02em;
279 color: #16181d;
280 text-decoration: none;
281}
282
283.tr-logo-mark {
284 width: 16px;
285 height: 16px;
286 border-radius: 5px;
287 background: #4353c9;
288 display: inline-block;
289 flex-shrink: 0;
290}
291
292.tr-breadcrumb-sep {
293 color: #c4c6cf;
294}
295
296.tr-breadcrumb-label {
297 font-size: 13px;
298 color: #16181d;
299 font-weight: 500;
300}
301
302.tr-header-right {
303 margin-left: auto;
304 display: flex;
305 align-items: center;
306 gap: 14px;
307}
308
309.tr-live-badge {
310 display: inline-flex;
311 align-items: center;
312 gap: 7px;
313 font-size: 12.5px;
314 color: #6b7080;
315}
316
317.tr-live-dot {
318 width: 6px;
319 height: 6px;
320 border-radius: 50%;
321 background: #1e7f5c;
322 flex-shrink: 0;
323}
324
325/* Main content */
326.tr-main {
327 flex: 1;
328 max-width: 880px;
329 width: 100%;
330 margin: 0 auto;
331 padding: 64px 32px 96px;
332}
333
334/* Hero */
335.tr-hero {
336 text-align: center;
337 margin-bottom: 52px;
338}
339
340.tr-eyebrow {
341 font-family: 'JetBrains Mono', monospace;
342 font-size: 11px;
343 letter-spacing: 0.12em;
344 text-transform: uppercase;
345 color: #8a8d99;
346 margin-bottom: 14px;
347}
348
349.tr-h1 {
350 font-family: 'Inter Tight', sans-serif;
351 font-size: 34px;
352 font-weight: 600;
353 letter-spacing: -0.028em;
354 line-height: 1.1;
355 margin: 0 0 14px;
356 color: #111318;
357}
358
359.tr-hero-sub {
360 font-size: 15px;
361 color: #6b7080;
362 margin: 0 auto;
363 line-height: 1.65;
364 max-width: 54ch;
365}
366
367/* Headline stats grid */
368.tr-stats-grid {
369 display: grid;
370 grid-template-columns: repeat(3, 1fr);
371 gap: 1px;
372 background: rgba(22, 24, 29, 0.07);
373 border: 1px solid rgba(22, 24, 29, 0.07);
374 border-radius: 14px;
375 overflow: hidden;
376 margin-bottom: 16px;
377}
378
379.tr-stat-cell {
380 background: #ffffff;
381 padding: 26px 24px;
382 text-align: center;
383}
384
385.tr-stat-value {
386 font-family: 'Inter Tight', sans-serif;
387 font-size: 34px;
388 font-weight: 600;
389 letter-spacing: -0.025em;
390 color: #16181d;
391 font-variant-numeric: tabular-nums;
392}
393
394.tr-stat-label {
395 font-size: 13px;
396 color: #6b7080;
397 margin-top: 6px;
398}
399
400.tr-stat-trend {
401 font-size: 11.5px;
402 margin-top: 4px;
403 font-family: 'JetBrains Mono', monospace;
404}
405
406.tr-stats-note {
407 font-size: 12px;
408 color: #8a8d99;
409 text-align: center;
410 margin: 0 0 52px;
411}
412
413/* Section heading */
414.tr-section-heading {
415 font-family: 'Inter Tight', sans-serif;
416 font-size: 16px;
417 font-weight: 600;
418 margin: 0 0 16px;
419 color: #16181d;
420 letter-spacing: -0.015em;
421}
422
423/* Metrics table */
424.tr-metrics-table {
425 border: 1px solid rgba(22, 24, 29, 0.07);
426 border-radius: 12px;
427 background: #ffffff;
428 overflow: hidden;
429 margin-bottom: 52px;
430}
431
432.tr-metric-row {
433 display: grid;
434 grid-template-columns: minmax(0, 1.6fr) minmax(90px, 0.6fr) minmax(0, 1.4fr);
435 gap: 16px;
436 padding: 14px 22px;
437 border-bottom: 1px solid rgba(22, 24, 29, 0.05);
438 align-items: baseline;
439}
440
441.tr-metric-row--last {
442 border-bottom: none;
443}
444
445.tr-metric-name {
446 font-size: 13.5px;
447 font-weight: 500;
448 color: #16181d;
449}
450
451.tr-metric-value {
452 font-family: 'JetBrains Mono', monospace;
453 font-size: 13px;
454 color: #16181d;
455 font-variant-numeric: tabular-nums;
456}
457
458.tr-metric-note {
459 font-size: 12.5px;
460 color: #6b7080;
461}
462
463/* Guarantee card */
464.tr-guarantee-card {
465 border: 1px solid rgba(22, 24, 29, 0.07);
466 border-radius: 14px;
467 background: #ffffff;
468 padding: 32px 36px;
469 margin-bottom: 52px;
470}
471
472.tr-guarantee-eyebrow {
473 font-family: 'JetBrains Mono', monospace;
474 font-size: 11px;
475 letter-spacing: 0.12em;
476 text-transform: uppercase;
477 color: #4353c9;
478 font-weight: 500;
479 margin-bottom: 14px;
480}
481
482.tr-guarantee-primary {
483 font-size: 15px;
484 color: #16181d;
485 margin: 0 0 10px;
486 line-height: 1.7;
487 font-weight: 500;
488}
489
490.tr-guarantee-secondary {
491 font-size: 13.5px;
492 color: #6b7080;
493 margin: 0;
494 line-height: 1.7;
495}
496
497/* Honest list */
498.tr-honest-list {
499 display: flex;
500 flex-direction: column;
501 gap: 12px;
502 margin-bottom: 52px;
503}
504
505.tr-honest-item {
506 display: flex;
507 gap: 14px;
508 align-items: baseline;
509 border: 1px solid rgba(22, 24, 29, 0.07);
510 border-radius: 12px;
511 background: #ffffff;
512 padding: 16px 20px;
513}
514
515.tr-honest-dot {
516 width: 7px;
517 height: 7px;
518 border-radius: 50%;
519 background: #b45309;
520 flex-shrink: 0;
521 position: relative;
522 top: 1px;
523 margin-top: 2px;
524}
525
526.tr-honest-body {
527 line-height: 1.6;
528}
529
530.tr-honest-what {
531 font-size: 13.5px;
532 font-weight: 500;
533 color: #16181d;
534}
535
536.tr-honest-detail {
537 font-size: 13px;
538 color: #6b7080;
539}
540
541/* Footer */
542.tr-footer {
543 text-align: center;
544 border-top: 1px solid rgba(22, 24, 29, 0.07);
545 padding-top: 28px;
546}
547
548.tr-footer-line {
549 font-size: 12.5px;
550 color: #8a8d99;
551 margin: 0 0 4px;
552}
553
554.tr-footer-link {
555 color: #4353c9;
556 text-decoration: none;
557}
558
559.tr-footer-link:hover {
560 text-decoration: underline;
561}
562
563.tr-footer-meta {
564 font-family: 'JetBrains Mono', monospace;
565 font-size: 11px;
566 color: #8a8d99;
567 margin: 0;
568}
569
570@media (max-width: 640px) {
571 .tr-stats-grid {
572 grid-template-columns: 1fr;
573 }
574
575 .tr-metric-row {
576 grid-template-columns: 1fr;
577 gap: 4px;
578 }
579
580 .tr-metric-note {
581 color: #8a8d99;
582 font-size: 12px;
583 }
584
585 .tr-guarantee-card {
586 padding: 24px 20px;
587 }
588
589 .tr-main {
590 padding: 40px 20px 64px;
591 }
592
593 .tr-h1 {
594 font-size: 26px;
595 }
596}
597`;