kondratevakate commited on
Commit
77c14aa
·
verified ·
1 Parent(s): 774cca0

Publish independent scRatio release audit

Browse files
README.md CHANGED
@@ -1,10 +1,21 @@
1
  ---
2
- title: Repro Scratio Release Audit
3
- emoji: 📉
4
- colorFrom: gray
5
- colorTo: green
6
  sdk: static
7
  pinned: false
 
 
 
 
 
 
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
1
  ---
2
+ title: "Reproduction: scRatio release and genomics audit"
3
+ emoji: "🧬"
4
+ colorFrom: green
5
+ colorTo: blue
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - trackio
10
+ - trackio-logbook
11
+ - open-experiment
12
+ - icml2026-repro
13
+ - paper-5zbPdMNcl9
14
+ - single-cell-genomics
15
+ - arxiv:2602.24201
16
  ---
17
 
18
+ # Reproduction: scRatio release and genomics audit
19
+
20
+ An open experiment logbook, published with
21
+ [Trackio](https://github.com/gradio-app/trackio).
bucket-icon.svg ADDED
index.html CHANGED
@@ -1,19 +1,84 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Reproduction: scRatio release and genomics audit</title>
7
+ <link rel="stylesheet" href="./logbook.css" />
8
+ </head>
9
+ <body>
10
+ <div id="app">
11
+ <aside id="sidebar">
12
+ <div id="book-head">
13
+ <img id="book-wordmark" src="./trackio-wordmark-dark.png" alt="" />
14
+ <div id="book-title" class="sr-only">Logbook</div>
15
+ </div>
16
+ <nav id="tree"></nav>
17
+ <div id="sidebar-foot" hidden>
18
+ <button id="connect-btn" type="button">
19
+ <span class="ico">ⓘ</span> Collaborate with your agent
20
+ </button>
21
+ </div>
22
+ </aside>
23
+ <main id="content">
24
+ <nav id="view-tabs" aria-label="Logbook views">
25
+ <a data-view="code" href="#/view/code/index">
26
+ <svg viewBox="0 0 24 24" aria-hidden="true">
27
+ <path d="m18 16 4-4-4-4" />
28
+ <path d="m6 8-4 4 4 4" />
29
+ <path d="m14.5 4-5 16" />
30
+ </svg>
31
+ <span>Logbook</span>
32
+ </a>
33
+ <a data-view="trace" href="#/view/trace">
34
+ <svg viewBox="0 0 24 24" aria-hidden="true">
35
+ <path d="M8 5h13" />
36
+ <path d="M13 12h8" />
37
+ <path d="M13 19h8" />
38
+ <path d="M3 10a2 2 0 0 0 2 2h3" />
39
+ <path d="M3 5v12a2 2 0 0 0 2 2h3" />
40
+ </svg>
41
+ <span>Traces</span>
42
+ </a>
43
+ <a data-view="workspace" href="#/view/workspace">
44
+ <svg viewBox="0 0 24 24" aria-hidden="true">
45
+ <path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" />
46
+ </svg>
47
+ <span>Workspace</span>
48
+ </a>
49
+ </nav>
50
+ <header id="logbook-header">
51
+ <h1 id="logbook-title"></h1>
52
+ <div id="logbook-cli"></div>
53
+ </header>
54
+ <div id="page"></div>
55
+ </main>
56
+ </div>
57
+
58
+ <div id="modal" hidden>
59
+ <div class="modal-backdrop"></div>
60
+ <div class="modal-card" role="dialog" aria-modal="true">
61
+ <div class="modal-head">
62
+ <div class="modal-title">
63
+ <img class="modal-logo" src="./trackio-logo.png" alt="" />
64
+ Collaborate with your agent
65
+ </div>
66
+ <div class="modal-actions">
67
+ <button id="copy-agent" class="btn">Copy for agent</button>
68
+ <button id="modal-close" class="btn icon" aria-label="Close">×</button>
69
+ </div>
70
+ </div>
71
+ <div class="modal-body">
72
+ <p class="modal-intro">
73
+ Point your coding agent at this logbook. It reads a compact,
74
+ token-efficient version — and if you've given it write access to this
75
+ Space, it can add findings that sync back automatically.
76
+ </p>
77
+ <ol id="connect-steps"></ol>
78
+ </div>
79
+ </div>
80
+ </div>
81
+
82
+ <script src="./logbook.js"></script>
83
+ </body>
84
+ </html>
logbook.css ADDED
@@ -0,0 +1,2134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --bg: #ffffff;
3
+ --paper: #ffffff;
4
+ --panel: #ffffff;
5
+ --ink: #1f2937;
6
+ --muted: #6b7280;
7
+ --line: #e5e7eb;
8
+ --accent: #f97316;
9
+ --accent-strong: #ea580c;
10
+ --accent-soft: #fff7ed;
11
+ --accent-line: rgba(249, 115, 22, 0.16);
12
+ --grid-line: rgba(31, 41, 55, 0.02);
13
+ --code-bg: #f3f4f6;
14
+ --radius: 12px;
15
+ --serif: ui-serif, "Iowan Old Style", "Palatino Linotype", Georgia, serif;
16
+ --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
17
+ sans-serif;
18
+ --mono: "SFMono-Regular", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas,
19
+ ui-monospace, monospace;
20
+ }
21
+
22
+ * {
23
+ box-sizing: border-box;
24
+ }
25
+
26
+ html,
27
+ body {
28
+ margin: 0;
29
+ padding: 0;
30
+ }
31
+
32
+ html {
33
+ scroll-behavior: smooth;
34
+ scrollbar-gutter: stable;
35
+ }
36
+
37
+ body {
38
+ background: var(--bg);
39
+ color: var(--ink);
40
+ font-family: var(--sans);
41
+ font-size: 13px;
42
+ line-height: 1.65;
43
+ -webkit-font-smoothing: antialiased;
44
+ }
45
+
46
+ #app {
47
+ display: flex;
48
+ min-height: 100vh;
49
+ }
50
+
51
+ body[data-view="trace"] #sidebar-foot,
52
+ body[data-view="workspace"] #sidebar-foot {
53
+ display: none;
54
+ }
55
+
56
+ /* ---- sidebar (composition-book cover) ---- */
57
+ #sidebar {
58
+ width: 280px;
59
+ flex: 0 0 280px;
60
+ background: #17181c;
61
+ color: #e7e7ea;
62
+ position: sticky;
63
+ top: 0;
64
+ height: 100vh;
65
+ overflow-y: auto;
66
+ padding: 22px 16px;
67
+ display: flex;
68
+ flex-direction: column;
69
+ }
70
+
71
+ #book-head {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 10px;
75
+ padding: 8px;
76
+ margin-bottom: 12px;
77
+ border-radius: 10px;
78
+ cursor: pointer;
79
+ transition: background 0.12s;
80
+ }
81
+ #book-head:hover {
82
+ background: rgba(255, 255, 255, 0.05);
83
+ }
84
+ #book-wordmark {
85
+ width: 154px;
86
+ height: auto;
87
+ object-fit: contain;
88
+ }
89
+ .sr-only {
90
+ position: absolute;
91
+ width: 1px;
92
+ height: 1px;
93
+ padding: 0;
94
+ margin: -1px;
95
+ overflow: hidden;
96
+ clip: rect(0, 0, 0, 0);
97
+ white-space: nowrap;
98
+ border: 0;
99
+ }
100
+
101
+ #tree {
102
+ flex: 1;
103
+ padding-top: 8px;
104
+ }
105
+
106
+ #tree .tree-label {
107
+ padding: 6px 10px 8px;
108
+ color: #777a83;
109
+ font-size: 10px;
110
+ font-weight: 700;
111
+ letter-spacing: 0.12em;
112
+ text-transform: uppercase;
113
+ }
114
+
115
+ #tree a {
116
+ display: block;
117
+ padding: 6px 10px;
118
+ border-radius: 8px;
119
+ color: #c3c4cb;
120
+ text-decoration: none;
121
+ font-size: 14px;
122
+ transition: background 0.12s, color 0.12s;
123
+ overflow: hidden;
124
+ text-overflow: ellipsis;
125
+ white-space: nowrap;
126
+ }
127
+
128
+ #tree a:hover {
129
+ background: rgba(255, 255, 255, 0.06);
130
+ color: #ffffff;
131
+ }
132
+
133
+ #tree a.active {
134
+ background: rgba(249, 115, 22, 0.16);
135
+ color: #fdba74;
136
+ font-weight: 600;
137
+ }
138
+
139
+ #tree a .tree-mark {
140
+ color: #6b6d76;
141
+ }
142
+
143
+ #tree a:hover .tree-mark,
144
+ #tree a.active .tree-mark {
145
+ color: inherit;
146
+ opacity: 0.6;
147
+ }
148
+
149
+ #tree .depth-1 {
150
+ padding-left: 22px;
151
+ }
152
+ #tree .depth-2 {
153
+ padding-left: 34px;
154
+ }
155
+ #tree .depth-3 {
156
+ padding-left: 46px;
157
+ }
158
+
159
+
160
+ /* ---- content ---- */
161
+ #content {
162
+ flex: 1;
163
+ min-width: 0;
164
+ padding: 24px 40px 120px;
165
+ background-color: var(--paper);
166
+ background-image:
167
+ linear-gradient(var(--grid-line) 1px, transparent 1px),
168
+ linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
169
+ background-size: 26px 26px;
170
+ background-position: center top;
171
+ }
172
+
173
+ #logbook-header {
174
+ width: 100%;
175
+ max-width: 1080px;
176
+ margin: 0 auto 20px;
177
+ }
178
+ #logbook-title {
179
+ font-family: var(--serif);
180
+ font-size: 34px;
181
+ line-height: 1.15;
182
+ letter-spacing: -0.02em;
183
+ margin: 0 0 10px;
184
+ overflow-wrap: anywhere;
185
+ }
186
+ #logbook-cli {
187
+ display: grid;
188
+ gap: 7px;
189
+ }
190
+
191
+ #page {
192
+ width: 100%;
193
+ min-width: 0;
194
+ max-width: 1080px;
195
+ margin: 0 auto;
196
+ }
197
+
198
+ .page-section {
199
+ scroll-margin-top: 40px;
200
+ padding: 0 0 35px;
201
+ margin: 0 0 32px;
202
+ }
203
+
204
+ .page-section:last-child {
205
+ margin-bottom: 0;
206
+ }
207
+
208
+ .page-layout {
209
+ display: block;
210
+ }
211
+
212
+ .page-body {
213
+ min-width: 0;
214
+ }
215
+
216
+ .resource-anchor {
217
+ display: block;
218
+ height: 0;
219
+ overflow: hidden;
220
+ }
221
+
222
+ /* ---- pinned notes ---- */
223
+ .pinned-notes {
224
+ margin: 30px 0 32px;
225
+ }
226
+ .pinned-notes-list .cell {
227
+ margin: 0;
228
+ }
229
+ .pinned-notes-list .cell-title {
230
+ display: flex;
231
+ align-items: center;
232
+ gap: 7px;
233
+ }
234
+ .pin-ico {
235
+ flex: 0 0 auto;
236
+ width: 14px;
237
+ height: 14px;
238
+ fill: var(--accent);
239
+ stroke: none;
240
+ }
241
+ .pinned-notes-list .cell + .cell {
242
+ margin-top: 12px;
243
+ }
244
+ .book-intro.has-pinned-notes {
245
+ border-bottom: none;
246
+ padding-bottom: 22px;
247
+ margin-bottom: 30px;
248
+ }
249
+ .book-intro.book-intro-tight {
250
+ border-bottom: none;
251
+ padding-bottom: 4px;
252
+ margin-bottom: 20px;
253
+ }
254
+
255
+ #page h1 {
256
+ font-family: var(--serif);
257
+ font-size: 34px;
258
+ line-height: 1.15;
259
+ letter-spacing: -0.02em;
260
+ margin: 0 0 8px;
261
+ overflow-wrap: anywhere;
262
+ }
263
+
264
+ #page .page-section:not(.book-intro) h1 {
265
+ font-size: 26px;
266
+ }
267
+
268
+ #page h2 {
269
+ font-family: var(--serif);
270
+ font-size: 24px;
271
+ margin: 36px 0 10px;
272
+ }
273
+
274
+ #page h3 {
275
+ font-size: 17px;
276
+ font-weight: 700;
277
+ margin: 26px 0 2px;
278
+ letter-spacing: -0.01em;
279
+ }
280
+
281
+ #page h3::before {
282
+ content: "";
283
+ display: inline-block;
284
+ width: 7px;
285
+ height: 7px;
286
+ border-radius: 2px;
287
+ background: var(--accent);
288
+ margin-right: 10px;
289
+ vertical-align: middle;
290
+ transform: translateY(-1px);
291
+ }
292
+
293
+ #page p {
294
+ margin: 10px 0;
295
+ }
296
+
297
+ #page blockquote {
298
+ margin: 14px 0;
299
+ padding: 2px 16px;
300
+ border-left: 3px solid #fdba74;
301
+ color: var(--muted);
302
+ }
303
+
304
+ #page hr {
305
+ display: none;
306
+ }
307
+
308
+ #page code {
309
+ font-family: var(--mono);
310
+ font-size: 0.86em;
311
+ background: var(--code-bg);
312
+ padding: 2px 6px;
313
+ border-radius: 6px;
314
+ }
315
+
316
+ #page pre {
317
+ max-width: 100%;
318
+ background: var(--code-bg);
319
+ border: 1px solid var(--line);
320
+ border-radius: var(--radius);
321
+ padding: 14px 16px;
322
+ overflow-x: auto;
323
+ }
324
+ #page pre code {
325
+ background: none;
326
+ padding: 0;
327
+ font-size: 11.5px;
328
+ }
329
+
330
+ /* ---- code blocks + collapsible accordion ---- */
331
+ #page pre.hl {
332
+ background: #17181c;
333
+ border: none;
334
+ color: #e7e7ea;
335
+ font-size: 13px;
336
+ line-height: 1.58;
337
+ }
338
+ #page pre.hl code {
339
+ color: inherit;
340
+ font-family: var(--mono);
341
+ }
342
+ .code-accordion {
343
+ border: 1px solid rgba(249, 115, 22, 0.2);
344
+ border-radius: 8px;
345
+ overflow: hidden;
346
+ margin: 12px 0;
347
+ background: #17181c;
348
+ }
349
+ .code-accordion summary {
350
+ list-style: none;
351
+ cursor: pointer;
352
+ display: flex;
353
+ align-items: center;
354
+ gap: 9px;
355
+ padding: 9px 12px;
356
+ font-family: var(--mono);
357
+ font-size: 11.5px;
358
+ font-weight: 700;
359
+ color: #e7e7ea;
360
+ background: #1e2027;
361
+ user-select: none;
362
+ overflow-wrap: anywhere;
363
+ }
364
+ .code-accordion summary::-webkit-details-marker {
365
+ display: none;
366
+ }
367
+ .code-accordion summary::after {
368
+ content: "▸";
369
+ margin-left: auto;
370
+ color: var(--accent);
371
+ transition: transform 0.12s;
372
+ transform: rotate(180deg);
373
+ }
374
+ .code-accordion[open] summary::after {
375
+ transform: rotate(90deg);
376
+ }
377
+ .code-accordion .code-ico {
378
+ color: var(--accent);
379
+ font-weight: 700;
380
+ }
381
+ .code-accordion pre.hl {
382
+ margin: 0;
383
+ border-radius: 0;
384
+ border: none;
385
+ border-top: 1px solid rgba(249, 115, 22, 0.16);
386
+ }
387
+ .tok-comment {
388
+ color: #7a7d87;
389
+ font-style: italic;
390
+ }
391
+ .tok-string {
392
+ color: #a5d6a7;
393
+ }
394
+ .tok-keyword {
395
+ color: #fdba74;
396
+ }
397
+ .tok-number {
398
+ color: #7fd0e0;
399
+ }
400
+
401
+ #page a {
402
+ color: var(--accent);
403
+ }
404
+
405
+ #page ul {
406
+ padding-left: 20px;
407
+ }
408
+
409
+ .ts {
410
+ font-family: var(--mono);
411
+ font-size: 12px;
412
+ color: var(--muted);
413
+ background: none;
414
+ padding: 0;
415
+ }
416
+
417
+ /* ---- notebook-style cells ---- */
418
+ .cell {
419
+ max-width: 100%;
420
+ margin: 0 0 32px;
421
+ background: none;
422
+ border: none;
423
+ border-radius: 0;
424
+ box-shadow: none;
425
+ overflow: visible;
426
+ }
427
+ .cell-head {
428
+ display: flex;
429
+ justify-content: space-between;
430
+ gap: 16px;
431
+ align-items: baseline;
432
+ padding: 0 0 5px;
433
+ background: none;
434
+ border-bottom: none;
435
+ }
436
+ .cell-head.no-title {
437
+ justify-content: flex-end;
438
+ padding: 0 0 3px;
439
+ }
440
+ .cell-title {
441
+ flex: 1;
442
+ min-width: 0;
443
+ font-size: 13px;
444
+ font-weight: 650;
445
+ color: var(--ink);
446
+ line-height: 1.35;
447
+ overflow-wrap: anywhere;
448
+ }
449
+ .cell-meta {
450
+ flex: 0 0 auto;
451
+ display: flex;
452
+ align-items: center;
453
+ gap: 10px;
454
+ font-family: var(--sans);
455
+ font-size: 13px;
456
+ color: var(--muted);
457
+ }
458
+ .cell-open {
459
+ flex: 0 0 auto;
460
+ font-family: var(--mono);
461
+ font-size: 12px;
462
+ color: var(--accent);
463
+ text-decoration: none;
464
+ }
465
+ .cell-open:hover {
466
+ color: var(--accent-strong);
467
+ }
468
+ .cell-body {
469
+ min-width: 0;
470
+ padding: 0;
471
+ }
472
+ .cell.dashboard .cell-body {
473
+ padding: 0;
474
+ }
475
+ #page .cell-body h1,
476
+ #page .cell-body h2 {
477
+ font-family: var(--sans);
478
+ font-size: 17px;
479
+ font-weight: 700;
480
+ letter-spacing: -0.01em;
481
+ line-height: 1.35;
482
+ margin: 22px 0 6px;
483
+ }
484
+ #page .cell-body > :first-child {
485
+ margin-top: 0;
486
+ }
487
+ #page .cell-body > :last-child {
488
+ margin-bottom: 0;
489
+ }
490
+ .figure-fit {
491
+ position: relative;
492
+ overflow: hidden;
493
+ min-height: 160px;
494
+ border: 1px solid var(--line);
495
+ border-radius: 8px;
496
+ background: #fff;
497
+ }
498
+ .figure-fit[hidden] {
499
+ display: none;
500
+ }
501
+ .figure-fit:fullscreen,
502
+ .figure-fit:-webkit-full-screen {
503
+ width: 100%;
504
+ height: 100%;
505
+ border: none;
506
+ border-radius: 0;
507
+ }
508
+ .figure-frame {
509
+ display: block;
510
+ width: 100%;
511
+ min-height: 160px;
512
+ border: none;
513
+ background: #fff;
514
+ }
515
+ .figure-frame[hidden],
516
+ .figure-raw[hidden] {
517
+ display: none;
518
+ }
519
+ .fig-switch {
520
+ position: relative;
521
+ display: inline-flex;
522
+ flex: 0 0 auto;
523
+ border: 1px solid var(--line);
524
+ border-radius: 999px;
525
+ background: var(--code-bg);
526
+ padding: 2px;
527
+ }
528
+ .fig-switch button {
529
+ position: relative;
530
+ z-index: 1;
531
+ flex: 1;
532
+ min-width: 62px;
533
+ border: none;
534
+ background: none;
535
+ font-family: var(--sans);
536
+ font-size: 12px;
537
+ font-weight: 600;
538
+ color: var(--muted);
539
+ padding: 3px 12px;
540
+ border-radius: 999px;
541
+ cursor: pointer;
542
+ transition: color 0.15s;
543
+ }
544
+ .fig-switch button.active {
545
+ color: var(--accent-strong);
546
+ }
547
+ .fig-switch-thumb {
548
+ position: absolute;
549
+ top: 2px;
550
+ bottom: 2px;
551
+ left: 2px;
552
+ width: calc(50% - 2px);
553
+ border-radius: 999px;
554
+ background: var(--panel);
555
+ border: 1px solid rgba(249, 115, 22, 0.35);
556
+ box-shadow: 0 1px 4px rgba(31, 41, 55, 0.08);
557
+ transition: transform 0.18s ease;
558
+ }
559
+ .fig-switch.raw .fig-switch-thumb {
560
+ transform: translateX(100%);
561
+ }
562
+ #page .figure-raw pre {
563
+ margin: 0;
564
+ max-height: 420px;
565
+ overflow: auto;
566
+ font-family: var(--mono);
567
+ font-size: 13px;
568
+ line-height: 1.55;
569
+ background: var(--code-bg);
570
+ border: 1px solid var(--line);
571
+ border-radius: 8px;
572
+ padding: 12px 14px;
573
+ }
574
+ /* ---- figure fullscreen ---- */
575
+ .cell-fullscreen {
576
+ position: relative;
577
+ display: inline-flex;
578
+ flex: 0 0 auto;
579
+ }
580
+ .cell-fullscreen-btn {
581
+ display: inline-flex;
582
+ align-items: center;
583
+ justify-content: center;
584
+ width: 26px;
585
+ height: 26px;
586
+ padding: 0;
587
+ border: 1px solid var(--line);
588
+ border-radius: 999px;
589
+ background: var(--code-bg);
590
+ color: var(--muted);
591
+ cursor: pointer;
592
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
593
+ }
594
+ .cell-fullscreen-btn:hover {
595
+ color: var(--accent-strong);
596
+ border-color: rgba(249, 115, 22, 0.35);
597
+ background: var(--accent-soft);
598
+ }
599
+ .cell-fullscreen-btn svg {
600
+ width: 14px;
601
+ height: 14px;
602
+ }
603
+ /* ---- copyable snippets ---- */
604
+ .snippet {
605
+ position: relative;
606
+ }
607
+ .copy-snippet {
608
+ position: absolute;
609
+ top: 7px;
610
+ right: 8px;
611
+ width: 24px;
612
+ height: 24px;
613
+ border: none;
614
+ border-radius: 6px;
615
+ background: rgba(255, 255, 255, 0.08);
616
+ color: #9a9da8;
617
+ font-size: 12px;
618
+ line-height: 1;
619
+ cursor: pointer;
620
+ opacity: 0;
621
+ transition: opacity 0.12s, color 0.12s, background 0.12s;
622
+ }
623
+ .snippet:hover .copy-snippet,
624
+ .jp-out:hover .copy-snippet,
625
+ .figure-raw:hover .copy-snippet,
626
+ .code-accordion summary:hover .copy-snippet {
627
+ opacity: 1;
628
+ }
629
+ .copy-snippet:hover {
630
+ color: #ffffff;
631
+ background: rgba(255, 255, 255, 0.16);
632
+ }
633
+ .copy-snippet.copied {
634
+ color: #52d08a;
635
+ opacity: 1;
636
+ }
637
+ .code-accordion .code-name {
638
+ user-select: text;
639
+ cursor: text;
640
+ }
641
+ .jp-out,
642
+ .figure-raw {
643
+ position: relative;
644
+ }
645
+ .jp-out .copy-snippet,
646
+ .figure-raw .copy-snippet {
647
+ background: var(--code-bg);
648
+ color: var(--muted);
649
+ border: 1px solid var(--line);
650
+ }
651
+ .jp-out .copy-snippet:hover,
652
+ .figure-raw .copy-snippet:hover {
653
+ color: var(--accent-strong);
654
+ background: var(--panel);
655
+ }
656
+
657
+ /* ---- jupyter-style code cells ---- */
658
+ .jp {
659
+ border: 1px solid var(--line);
660
+ border-radius: 10px;
661
+ overflow: hidden;
662
+ margin: 0;
663
+ background: var(--panel);
664
+ }
665
+ .jp-cmd {
666
+ display: flex;
667
+ align-items: baseline;
668
+ gap: 9px;
669
+ position: relative;
670
+ padding: 10px 16px 10px 0;
671
+ font-family: var(--mono);
672
+ font-size: 12px;
673
+ color: #8b8e98;
674
+ }
675
+ .jp-cmd-prompt {
676
+ color: var(--accent);
677
+ font-weight: 700;
678
+ }
679
+ #page .jp-cmd code {
680
+ min-width: 0;
681
+ color: #b6b9c2;
682
+ font-family: var(--mono);
683
+ font-size: 12px;
684
+ background: none;
685
+ padding: 0;
686
+ border-radius: 0;
687
+ overflow-wrap: anywhere;
688
+ }
689
+ .jp-cmd:hover .copy-snippet {
690
+ opacity: 1;
691
+ }
692
+ .jp-in-body .jp-cmd + .code-accordion,
693
+ .jp-in-body .jp-cmd + .snippet {
694
+ border-top: 1px solid rgba(255, 255, 255, 0.09);
695
+ }
696
+ .jp-gutter {
697
+ flex: 0 0 46px;
698
+ padding: 13px 0 0 13px;
699
+ font-family: var(--mono);
700
+ font-size: 10.5px;
701
+ letter-spacing: 0.07em;
702
+ text-transform: uppercase;
703
+ font-weight: 600;
704
+ user-select: none;
705
+ }
706
+ .jp-in {
707
+ display: flex;
708
+ background: #17181c;
709
+ }
710
+ .jp-in .jp-gutter {
711
+ color: #6f727d;
712
+ }
713
+ .jp-in-body {
714
+ flex: 1;
715
+ min-width: 0;
716
+ }
717
+ #page .jp-in-body pre.hl {
718
+ margin: 0;
719
+ border: none;
720
+ border-radius: 0;
721
+ background: none;
722
+ padding: 12px 16px 12px 0;
723
+ overflow-y: auto;
724
+ max-height: 26em;
725
+ }
726
+ .jp-in-body .code-accordion {
727
+ margin: 0;
728
+ border: none;
729
+ border-top: 1px solid rgba(255, 255, 255, 0.09);
730
+ border-radius: 0;
731
+ background: none;
732
+ }
733
+ .jp-in-body .code-accordion summary {
734
+ background: none;
735
+ padding: 9px 16px 9px 0;
736
+ }
737
+ .jp-in-body .code-accordion pre.hl {
738
+ border-top: 1px solid rgba(255, 255, 255, 0.09);
739
+ }
740
+ .jp-meta {
741
+ padding: 5px 14px;
742
+ font-family: var(--mono);
743
+ font-size: 11.5px;
744
+ color: var(--muted);
745
+ background: #fbfbfc;
746
+ border-top: 1px solid var(--line);
747
+ }
748
+ .jp-out {
749
+ display: flex;
750
+ border-top: 1px solid var(--line);
751
+ background: var(--panel);
752
+ }
753
+ .jp-out .jp-gutter {
754
+ color: var(--accent-strong);
755
+ }
756
+ .jp-out-body {
757
+ flex: 1;
758
+ min-width: 0;
759
+ }
760
+ #page .jp-out-pre {
761
+ min-width: 0;
762
+ margin: 0;
763
+ border: none;
764
+ border-radius: 0;
765
+ background: none;
766
+ color: var(--ink);
767
+ font-family: var(--mono);
768
+ font-size: 13px;
769
+ line-height: 1.55;
770
+ padding: 12px 16px 12px 0;
771
+ white-space: pre;
772
+ overflow-x: auto;
773
+ overflow-y: auto;
774
+ max-height: 26em;
775
+ }
776
+ .jp-artifacts {
777
+ display: flex;
778
+ flex-direction: column;
779
+ }
780
+ .jp-out-body .jp-out-pre + .jp-artifacts {
781
+ border-top: 1px solid var(--line);
782
+ }
783
+ .out-artifact {
784
+ display: flex;
785
+ align-items: baseline;
786
+ gap: 8px;
787
+ padding: 9px 16px 9px 0;
788
+ text-decoration: none;
789
+ color: inherit;
790
+ }
791
+ .out-artifact + .out-artifact {
792
+ border-top: 1px solid var(--line);
793
+ }
794
+ a.out-artifact:hover .out-artifact-name {
795
+ color: var(--accent-strong);
796
+ }
797
+ .out-artifact-ico {
798
+ flex: 0 0 auto;
799
+ font-size: 13px;
800
+ }
801
+ .out-artifact-name {
802
+ font-family: var(--mono);
803
+ font-size: 12.5px;
804
+ font-weight: 600;
805
+ color: var(--ink);
806
+ overflow: hidden;
807
+ text-overflow: ellipsis;
808
+ white-space: nowrap;
809
+ }
810
+ .out-artifact-meta {
811
+ flex: 0 0 auto;
812
+ margin-left: auto;
813
+ padding-left: 12px;
814
+ font-size: 12px;
815
+ color: var(--muted);
816
+ white-space: nowrap;
817
+ }
818
+ .out-artifact-state.open {
819
+ color: var(--accent);
820
+ font-weight: 600;
821
+ }
822
+ .trackio-embed {
823
+ border: 1px solid var(--line);
824
+ border-radius: var(--radius);
825
+ overflow: hidden;
826
+ background: var(--panel);
827
+ }
828
+ .trackio-cell-meta {
829
+ display: flex;
830
+ gap: 6px;
831
+ flex-wrap: wrap;
832
+ justify-content: flex-end;
833
+ }
834
+
835
+ /* ---- unfurl cards ---- */
836
+ .unfurl {
837
+ display: block;
838
+ border: 1px solid var(--line);
839
+ border-radius: var(--radius);
840
+ background: var(--panel);
841
+ margin: 12px 0;
842
+ overflow: hidden;
843
+ text-decoration: none;
844
+ color: inherit;
845
+ transition: border-color 0.14s, box-shadow 0.14s;
846
+ }
847
+ .unfurl:hover {
848
+ border-color: #cfcbe6;
849
+ box-shadow: 0 4px 18px rgba(30, 20, 80, 0.06);
850
+ }
851
+
852
+ .unfurl-body {
853
+ padding: 13px 16px;
854
+ display: flex;
855
+ gap: 12px;
856
+ align-items: flex-start;
857
+ }
858
+
859
+ .unfurl-ico {
860
+ font-size: 20px;
861
+ line-height: 1.3;
862
+ flex: 0 0 auto;
863
+ }
864
+
865
+ .unfurl-main {
866
+ min-width: 0;
867
+ flex: 1;
868
+ }
869
+
870
+ .unfurl-kind {
871
+ font-family: var(--mono);
872
+ font-size: 10.5px;
873
+ text-transform: uppercase;
874
+ letter-spacing: 0.08em;
875
+ color: var(--accent);
876
+ font-weight: 600;
877
+ }
878
+
879
+ .unfurl-title {
880
+ font-weight: 650;
881
+ font-size: 15px;
882
+ margin: 1px 0 2px;
883
+ white-space: nowrap;
884
+ overflow: hidden;
885
+ text-overflow: ellipsis;
886
+ }
887
+
888
+ .unfurl-desc {
889
+ color: var(--muted);
890
+ font-size: 13.5px;
891
+ line-height: 1.45;
892
+ }
893
+
894
+ .unfurl-meta {
895
+ margin-top: 6px;
896
+ display: flex;
897
+ flex-wrap: wrap;
898
+ gap: 6px;
899
+ }
900
+
901
+ .chip {
902
+ font-size: 11.5px;
903
+ background: var(--code-bg);
904
+ border-radius: 999px;
905
+ padding: 2px 9px;
906
+ color: var(--muted);
907
+ font-family: var(--mono);
908
+ }
909
+
910
+ .unfurl-raw {
911
+ font-family: var(--mono);
912
+ font-size: 11px;
913
+ color: var(--muted);
914
+ border-top: 1px solid var(--line);
915
+ padding: 7px 16px;
916
+ white-space: nowrap;
917
+ overflow: hidden;
918
+ text-overflow: ellipsis;
919
+ }
920
+
921
+ .unfurl.embed {
922
+ padding: 0;
923
+ overflow: hidden;
924
+ }
925
+ .embed-head {
926
+ display: flex;
927
+ align-items: center;
928
+ gap: 10px;
929
+ padding: 10px 14px;
930
+ border-bottom: 1px solid var(--line);
931
+ }
932
+ .embed-head .unfurl-kind {
933
+ flex: 0 0 auto;
934
+ }
935
+ .embed-title {
936
+ flex: 1;
937
+ min-width: 0;
938
+ font-weight: 650;
939
+ font-size: 14px;
940
+ color: var(--ink);
941
+ text-decoration: none;
942
+ white-space: nowrap;
943
+ overflow: hidden;
944
+ text-overflow: ellipsis;
945
+ }
946
+ .embed-title:hover {
947
+ color: var(--accent);
948
+ }
949
+ .embed-open {
950
+ flex: 0 0 auto;
951
+ font-family: var(--mono);
952
+ font-size: 12px;
953
+ color: var(--accent);
954
+ text-decoration: none;
955
+ }
956
+ .embed-frame {
957
+ display: block;
958
+ width: 100%;
959
+ height: 560px;
960
+ border: 0;
961
+ background: var(--code-bg);
962
+ }
963
+
964
+ .dashboard-shell {
965
+ display: block;
966
+ }
967
+ .dashboard-shell .dashboard-frame {
968
+ display: block;
969
+ width: 100%;
970
+ height: 900px;
971
+ border: 0;
972
+ background: var(--code-bg);
973
+ }
974
+
975
+ .unfurl.image {
976
+ padding: 0;
977
+ }
978
+ .unfurl.image img {
979
+ display: block;
980
+ width: 100%;
981
+ height: auto;
982
+ max-height: 460px;
983
+ object-fit: contain;
984
+ background: var(--code-bg);
985
+ }
986
+
987
+ .artifact-chip {
988
+ border: 1px solid var(--line);
989
+ background: var(--panel);
990
+ border-radius: var(--radius);
991
+ padding: 10px 14px;
992
+ margin: 8px 0;
993
+ font-size: 14px;
994
+ }
995
+ .cell.dashboard .artifact-chip {
996
+ margin: 14px 18px 18px;
997
+ }
998
+ .artifact-chip code {
999
+ color: var(--accent);
1000
+ }
1001
+
1002
+ /* ---- task board ---- */
1003
+ .board-wrap {
1004
+ overflow-x: auto;
1005
+ border: 1px solid var(--line);
1006
+ border-radius: var(--radius);
1007
+ margin: 12px 0 20px;
1008
+ background: var(--panel);
1009
+ }
1010
+ table.board {
1011
+ border-collapse: collapse;
1012
+ width: 100%;
1013
+ font-size: 14px;
1014
+ }
1015
+ table.board th,
1016
+ table.board td {
1017
+ text-align: left;
1018
+ padding: 9px 14px;
1019
+ border-bottom: 1px solid var(--line);
1020
+ vertical-align: top;
1021
+ }
1022
+ table.board thead th {
1023
+ background: var(--accent-soft);
1024
+ font-size: 12px;
1025
+ text-transform: uppercase;
1026
+ letter-spacing: 0.05em;
1027
+ color: #9a4a12;
1028
+ font-weight: 600;
1029
+ border-bottom: 1px solid var(--line);
1030
+ }
1031
+ table.board tbody tr:last-child td {
1032
+ border-bottom: none;
1033
+ }
1034
+ table.board .col-check {
1035
+ text-align: center;
1036
+ width: 92px;
1037
+ white-space: nowrap;
1038
+ }
1039
+ table.board tr.section-row td {
1040
+ background: var(--accent-soft);
1041
+ text-align: center;
1042
+ font-weight: 700;
1043
+ font-size: 13px;
1044
+ color: var(--accent-strong);
1045
+ padding: 7px 14px;
1046
+ letter-spacing: 0.02em;
1047
+ }
1048
+ .box {
1049
+ display: inline-flex;
1050
+ align-items: center;
1051
+ justify-content: center;
1052
+ width: 18px;
1053
+ height: 18px;
1054
+ border: 1.5px solid #cfcbe0;
1055
+ border-radius: 5px;
1056
+ font-size: 12px;
1057
+ color: #fff;
1058
+ line-height: 1;
1059
+ }
1060
+ .box.on {
1061
+ background: var(--accent);
1062
+ border-color: var(--accent);
1063
+ }
1064
+ .who-chip {
1065
+ display: inline-block;
1066
+ padding: 3px 12px;
1067
+ border-radius: 999px;
1068
+ font-size: 12.5px;
1069
+ font-weight: 600;
1070
+ white-space: nowrap;
1071
+ }
1072
+ .who-chip.muted {
1073
+ background: var(--code-bg);
1074
+ color: var(--muted);
1075
+ font-weight: 500;
1076
+ }
1077
+
1078
+ /* ---- status badges + clickable rows ---- */
1079
+ table.board .col-status {
1080
+ width: 130px;
1081
+ white-space: nowrap;
1082
+ }
1083
+ .badge {
1084
+ display: inline-block;
1085
+ padding: 3px 11px;
1086
+ border-radius: 999px;
1087
+ font-size: 12px;
1088
+ font-weight: 600;
1089
+ letter-spacing: 0.01em;
1090
+ }
1091
+ .badge.gray {
1092
+ background: var(--code-bg);
1093
+ color: var(--muted);
1094
+ }
1095
+ .badge.amber {
1096
+ background: var(--accent-soft);
1097
+ color: #b45309;
1098
+ }
1099
+ .badge.green {
1100
+ background: #e6f7ee;
1101
+ color: #1a8a55;
1102
+ }
1103
+ .badge.red {
1104
+ background: #fde8ec;
1105
+ color: #c62a4b;
1106
+ }
1107
+ table.board tr.linked-row {
1108
+ cursor: pointer;
1109
+ }
1110
+ table.board tr.linked-row:hover td {
1111
+ background: var(--accent-soft);
1112
+ }
1113
+ table.board tr.linked-row a {
1114
+ color: var(--ink);
1115
+ font-weight: 600;
1116
+ text-decoration: none;
1117
+ }
1118
+ table.board tr.linked-row:hover a {
1119
+ color: var(--accent-strong);
1120
+ }
1121
+
1122
+ /* ---- agent read hint ---- */
1123
+ .agent-hint {
1124
+ display: flex;
1125
+ align-items: center;
1126
+ flex-wrap: wrap;
1127
+ gap: 8px;
1128
+ margin: 0;
1129
+ font-size: 12.5px;
1130
+ color: var(--muted);
1131
+ }
1132
+ .agent-hint code {
1133
+ flex: 1 1 18rem;
1134
+ min-width: 0;
1135
+ background: var(--code-bg);
1136
+ padding: 2px 9px;
1137
+ border-radius: 6px;
1138
+ font-family: var(--mono);
1139
+ font-size: 12px;
1140
+ font-weight: 500;
1141
+ color: var(--ink);
1142
+ overflow: hidden;
1143
+ text-overflow: ellipsis;
1144
+ white-space: nowrap;
1145
+ }
1146
+ .agent-hint .copy {
1147
+ flex: 0 0 auto;
1148
+ background: none;
1149
+ color: var(--muted);
1150
+ border: 1px solid var(--line);
1151
+ border-radius: 6px;
1152
+ width: 22px;
1153
+ height: 22px;
1154
+ font-size: 11px;
1155
+ line-height: 1;
1156
+ cursor: pointer;
1157
+ transition: color 0.12s, border-color 0.12s;
1158
+ }
1159
+ .agent-hint .copy:hover {
1160
+ color: var(--accent-strong);
1161
+ border-color: var(--accent);
1162
+ }
1163
+ .agent-hint .copy.copied {
1164
+ color: #1a8a55;
1165
+ border-color: #1a8a55;
1166
+ }
1167
+ .agent-hint-note {
1168
+ margin-left: auto;
1169
+ font-size: 12px;
1170
+ color: var(--muted);
1171
+ }
1172
+ .hub-destination {
1173
+ display: flex;
1174
+ align-items: center;
1175
+ flex-wrap: wrap;
1176
+ gap: 8px;
1177
+ color: var(--muted);
1178
+ font-size: 12.5px;
1179
+ }
1180
+ .hub-destination a {
1181
+ display: inline-flex;
1182
+ align-items: center;
1183
+ gap: 6px;
1184
+ max-width: 100%;
1185
+ padding: 3px 9px;
1186
+ border: 1px solid var(--accent-line);
1187
+ border-radius: 999px;
1188
+ background: var(--accent-soft);
1189
+ color: var(--accent-strong);
1190
+ font-family: var(--mono);
1191
+ font-size: 12px;
1192
+ font-weight: 650;
1193
+ line-height: 1.5;
1194
+ text-decoration: none;
1195
+ overflow-wrap: anywhere;
1196
+ transition: border-color 0.12s, background 0.12s, color 0.12s;
1197
+ }
1198
+ .hub-destination a:hover {
1199
+ border-color: var(--accent);
1200
+ background: #ffedd5;
1201
+ color: #c2410c;
1202
+ }
1203
+ .hub-destination svg {
1204
+ width: 13px;
1205
+ height: 13px;
1206
+ flex: 0 0 auto;
1207
+ fill: none;
1208
+ stroke: currentColor;
1209
+ stroke-width: 1.8;
1210
+ stroke-linecap: round;
1211
+ stroke-linejoin: round;
1212
+ }
1213
+
1214
+ .index-paper-link {
1215
+ margin: 14px 0 30px;
1216
+ font-size: 19px;
1217
+ line-height: 1.35;
1218
+ font-weight: 700;
1219
+ }
1220
+ .index-paper-link a {
1221
+ text-underline-offset: 4px;
1222
+ text-decoration-thickness: 2px;
1223
+ }
1224
+ .art-ico {
1225
+ width: 1em;
1226
+ height: 1em;
1227
+ object-fit: contain;
1228
+ vertical-align: -0.15em;
1229
+ }
1230
+ .art-file-ico {
1231
+ width: 15px;
1232
+ height: 15px;
1233
+ flex: 0 0 auto;
1234
+ fill: none;
1235
+ stroke: currentColor;
1236
+ stroke-width: 1.7;
1237
+ stroke-linecap: round;
1238
+ stroke-linejoin: round;
1239
+ vertical-align: -0.2em;
1240
+ }
1241
+ .out-artifact-ico .art-file-ico {
1242
+ color: var(--muted);
1243
+ }
1244
+
1245
+ /* ---- scroll-to-resource highlight ---- */
1246
+ .res-flash {
1247
+ animation: res-flash 1.5s ease;
1248
+ border-radius: 8px;
1249
+ }
1250
+ @keyframes res-flash {
1251
+ 0%,
1252
+ 25% {
1253
+ box-shadow: 0 0 0 3px var(--accent);
1254
+ }
1255
+ 100% {
1256
+ box-shadow: 0 0 0 3px rgba(249, 115, 22, 0);
1257
+ }
1258
+ }
1259
+
1260
+ /* ---- inline resource chips ---- */
1261
+ #page .res-chip {
1262
+ display: inline-flex;
1263
+ align-items: center;
1264
+ gap: 5px;
1265
+ max-width: 100%;
1266
+ padding: 0 9px 0 6px;
1267
+ margin: 0 1px;
1268
+ border: 1px solid var(--line);
1269
+ border-radius: 999px;
1270
+ background: var(--panel);
1271
+ font-family: var(--mono);
1272
+ font-size: 0.78em;
1273
+ font-weight: 600;
1274
+ color: var(--ink);
1275
+ text-decoration: none;
1276
+ white-space: nowrap;
1277
+ overflow: hidden;
1278
+ text-overflow: ellipsis;
1279
+ vertical-align: middle;
1280
+ line-height: 1.65;
1281
+ transform: translateY(-0.08em);
1282
+ transition: border-color 0.12s, background 0.12s, color 0.12s;
1283
+ }
1284
+ .res-chip-ico {
1285
+ font-size: 1.05em;
1286
+ line-height: 1;
1287
+ }
1288
+ #page .res-chip:hover {
1289
+ border-color: var(--accent);
1290
+ background: var(--accent-soft);
1291
+ color: var(--accent-strong);
1292
+ }
1293
+
1294
+ /* ---- connect footer + modal ---- */
1295
+ #sidebar-foot {
1296
+ margin-top: auto;
1297
+ padding-top: 14px;
1298
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
1299
+ }
1300
+
1301
+ #connect-btn {
1302
+ width: 100%;
1303
+ display: flex;
1304
+ align-items: center;
1305
+ gap: 8px;
1306
+ background: rgba(255, 255, 255, 0.05);
1307
+ color: #c3c4cb;
1308
+ border: 1px solid rgba(255, 255, 255, 0.12);
1309
+ border-radius: 9px;
1310
+ padding: 9px 12px;
1311
+ font-size: 13.5px;
1312
+ font-family: var(--sans);
1313
+ cursor: pointer;
1314
+ transition: background 0.12s, color 0.12s, border-color 0.12s;
1315
+ }
1316
+ #connect-btn:hover {
1317
+ background: rgba(249, 115, 22, 0.14);
1318
+ border-color: rgba(249, 115, 22, 0.4);
1319
+ color: #fdba74;
1320
+ }
1321
+ #connect-btn .ico {
1322
+ font-size: 15px;
1323
+ }
1324
+
1325
+ #modal[hidden] {
1326
+ display: none;
1327
+ }
1328
+ #modal {
1329
+ position: fixed;
1330
+ inset: 0;
1331
+ z-index: 100;
1332
+ display: flex;
1333
+ align-items: center;
1334
+ justify-content: center;
1335
+ padding: 24px;
1336
+ }
1337
+ .modal-backdrop {
1338
+ position: absolute;
1339
+ inset: 0;
1340
+ background: rgba(20, 18, 30, 0.5);
1341
+ backdrop-filter: blur(2px);
1342
+ }
1343
+ .modal-card {
1344
+ position: relative;
1345
+ background: var(--panel);
1346
+ border-radius: 16px;
1347
+ width: 100%;
1348
+ max-width: 620px;
1349
+ max-height: 85vh;
1350
+ overflow-y: auto;
1351
+ box-shadow: 0 24px 70px rgba(20, 15, 50, 0.28);
1352
+ }
1353
+ .modal-head {
1354
+ display: flex;
1355
+ align-items: center;
1356
+ justify-content: space-between;
1357
+ gap: 12px;
1358
+ padding: 18px 22px;
1359
+ border-bottom: 1px solid var(--line);
1360
+ position: sticky;
1361
+ top: 0;
1362
+ background: var(--panel);
1363
+ }
1364
+ .modal-title {
1365
+ display: flex;
1366
+ align-items: center;
1367
+ gap: 10px;
1368
+ font-family: var(--serif);
1369
+ font-size: 21px;
1370
+ letter-spacing: -0.01em;
1371
+ }
1372
+ .modal-logo {
1373
+ width: 26px;
1374
+ height: 26px;
1375
+ object-fit: contain;
1376
+ }
1377
+ .modal-actions {
1378
+ display: flex;
1379
+ align-items: center;
1380
+ gap: 8px;
1381
+ }
1382
+ .btn {
1383
+ font-family: var(--sans);
1384
+ font-size: 13.5px;
1385
+ font-weight: 600;
1386
+ border: 1px solid var(--line);
1387
+ background: var(--panel);
1388
+ color: var(--ink);
1389
+ border-radius: 9px;
1390
+ padding: 8px 13px;
1391
+ cursor: pointer;
1392
+ transition: background 0.12s, border-color 0.12s, color 0.12s;
1393
+ }
1394
+ .btn:hover {
1395
+ border-color: var(--accent);
1396
+ color: var(--accent-strong);
1397
+ }
1398
+ .btn.copied {
1399
+ border-color: #1a8a55;
1400
+ color: #1a8a55;
1401
+ }
1402
+ .btn.icon {
1403
+ font-size: 18px;
1404
+ line-height: 1;
1405
+ padding: 6px 11px;
1406
+ font-weight: 400;
1407
+ }
1408
+ .modal-body {
1409
+ padding: 20px 22px 26px;
1410
+ }
1411
+ .modal-intro {
1412
+ margin: 0 0 20px;
1413
+ color: var(--muted);
1414
+ line-height: 1.55;
1415
+ }
1416
+ #connect-steps {
1417
+ list-style: none;
1418
+ margin: 0;
1419
+ padding: 0;
1420
+ }
1421
+ #connect-steps li {
1422
+ margin-bottom: 18px;
1423
+ }
1424
+ .step-title {
1425
+ font-weight: 600;
1426
+ font-size: 14.5px;
1427
+ margin-bottom: 8px;
1428
+ }
1429
+ .codeblock {
1430
+ display: flex;
1431
+ align-items: center;
1432
+ gap: 8px;
1433
+ background: #17181c;
1434
+ border-radius: 10px;
1435
+ padding: 11px 12px 11px 15px;
1436
+ }
1437
+ .codeblock code {
1438
+ flex: 1;
1439
+ min-width: 0;
1440
+ overflow-x: auto;
1441
+ white-space: nowrap;
1442
+ font-family: var(--mono);
1443
+ font-size: 13px;
1444
+ color: #f0efff;
1445
+ background: none;
1446
+ padding: 0;
1447
+ }
1448
+ .codeblock .copy {
1449
+ flex: 0 0 auto;
1450
+ background: rgba(255, 255, 255, 0.08);
1451
+ color: #c3c4cb;
1452
+ border: 1px solid rgba(255, 255, 255, 0.14);
1453
+ border-radius: 7px;
1454
+ width: 30px;
1455
+ height: 30px;
1456
+ font-size: 14px;
1457
+ cursor: pointer;
1458
+ transition: background 0.12s, color 0.12s;
1459
+ }
1460
+ .codeblock .copy:hover {
1461
+ background: rgba(249, 115, 22, 0.2);
1462
+ color: #fdba74;
1463
+ }
1464
+ .codeblock .copy.copied {
1465
+ color: #52d08a;
1466
+ }
1467
+
1468
+ /* ---- top-level logbook views ---- */
1469
+ #view-tabs {
1470
+ position: sticky;
1471
+ top: 0;
1472
+ z-index: 30;
1473
+ width: 100%;
1474
+ max-width: 1080px;
1475
+ margin: 0 auto 24px;
1476
+ padding-top: 10px;
1477
+ display: flex;
1478
+ align-items: center;
1479
+ justify-content: flex-start;
1480
+ gap: 26px;
1481
+ border-bottom: 1px solid var(--line);
1482
+ background: var(--paper);
1483
+ }
1484
+ #view-tabs a {
1485
+ display: inline-flex;
1486
+ align-items: center;
1487
+ gap: 8px;
1488
+ min-height: 44px;
1489
+ margin-bottom: -1px;
1490
+ color: var(--muted);
1491
+ border-bottom: 2px solid transparent;
1492
+ text-decoration: none;
1493
+ font-size: 13.5px;
1494
+ font-weight: 600;
1495
+ transition: color 0.12s, border-color 0.12s;
1496
+ }
1497
+ #view-tabs a:hover {
1498
+ color: var(--ink);
1499
+ }
1500
+ #view-tabs a.active {
1501
+ color: var(--accent-strong);
1502
+ border-bottom-color: var(--accent);
1503
+ }
1504
+ #view-tabs svg {
1505
+ width: 18px;
1506
+ height: 18px;
1507
+ flex: 0 0 auto;
1508
+ fill: none;
1509
+ stroke: currentColor;
1510
+ stroke-width: 2;
1511
+ stroke-linecap: round;
1512
+ stroke-linejoin: round;
1513
+ }
1514
+ .workspace-file svg,
1515
+ .workspace-folder summary svg,
1516
+ .workspace-download svg {
1517
+ width: 17px;
1518
+ height: 17px;
1519
+ flex: 0 0 auto;
1520
+ fill: none;
1521
+ stroke: currentColor;
1522
+ stroke-width: 1.7;
1523
+ stroke-linecap: round;
1524
+ stroke-linejoin: round;
1525
+ }
1526
+
1527
+ #page.trace-page,
1528
+ #page.workspace-page {
1529
+ max-width: 1080px;
1530
+ }
1531
+ .view-loading {
1532
+ padding: 72px 0;
1533
+ color: var(--muted);
1534
+ text-align: center;
1535
+ }
1536
+ .view-empty {
1537
+ margin: 48px 0;
1538
+ padding: 44px 28px;
1539
+ border: 1px dashed #d8dbe1;
1540
+ border-radius: var(--radius);
1541
+ background: rgba(255, 255, 255, 0.72);
1542
+ text-align: center;
1543
+ }
1544
+ .view-empty h2 {
1545
+ margin: 0 0 7px;
1546
+ font-size: 18px;
1547
+ }
1548
+ .view-empty p {
1549
+ max-width: 560px;
1550
+ margin: 0 auto;
1551
+ color: var(--muted);
1552
+ }
1553
+ .view-empty code {
1554
+ display: inline-block;
1555
+ margin-top: 18px;
1556
+ padding: 7px 10px;
1557
+ border-radius: 7px;
1558
+ background: var(--code-bg);
1559
+ font-family: var(--mono);
1560
+ font-size: 12px;
1561
+ }
1562
+ #page .repo-ref-link {
1563
+ display: inline-block;
1564
+ margin-top: 18px;
1565
+ padding: 8px 14px;
1566
+ border-radius: 8px;
1567
+ background: var(--accent-strong, #2158d0);
1568
+ color: #fff;
1569
+ font-weight: 600;
1570
+ text-decoration: none;
1571
+ }
1572
+ #page .repo-ref-link:hover,
1573
+ #page .repo-ref-link:focus-visible {
1574
+ color: #fff;
1575
+ filter: brightness(0.95);
1576
+ }
1577
+ .view-eyebrow {
1578
+ margin-bottom: 4px;
1579
+ color: var(--accent-strong);
1580
+ font-family: var(--mono);
1581
+ font-size: 11px;
1582
+ font-weight: 700;
1583
+ letter-spacing: 0.12em;
1584
+ text-transform: uppercase;
1585
+ }
1586
+
1587
+ /* ---- trace ---- */
1588
+ .trace-session {
1589
+ scroll-margin-top: 24px;
1590
+ }
1591
+ .trace-session + .trace-session {
1592
+ margin-top: 44px;
1593
+ padding-top: 40px;
1594
+ border-top: 1px solid var(--line);
1595
+ }
1596
+ .trace-session-title {
1597
+ margin: 0 0 14px;
1598
+ color: var(--ink);
1599
+ font-family: var(--serif);
1600
+ font-size: 22px;
1601
+ line-height: 1.2;
1602
+ letter-spacing: -0.02em;
1603
+ overflow-wrap: anywhere;
1604
+ }
1605
+ .workspace-header h1 {
1606
+ margin: 0;
1607
+ color: var(--ink);
1608
+ font-size: 30px;
1609
+ line-height: 1.2;
1610
+ letter-spacing: -0.025em;
1611
+ }
1612
+ .trace-meta {
1613
+ display: flex;
1614
+ flex-wrap: wrap;
1615
+ gap: 9px 20px;
1616
+ margin-bottom: 34px;
1617
+ padding: 14px 16px;
1618
+ border: 1px solid var(--line);
1619
+ border-radius: 10px;
1620
+ background: rgba(255, 255, 255, 0.78);
1621
+ color: var(--muted);
1622
+ font-family: var(--mono);
1623
+ font-size: 11px;
1624
+ }
1625
+ .trace-meta strong {
1626
+ color: var(--ink);
1627
+ font-weight: 650;
1628
+ }
1629
+ .trace-source-missing {
1630
+ color: #b45309;
1631
+ }
1632
+ .trace-timeline {
1633
+ position: relative;
1634
+ }
1635
+ .trace-timeline::before {
1636
+ content: "";
1637
+ position: absolute;
1638
+ top: 0;
1639
+ bottom: 0;
1640
+ left: 82px;
1641
+ width: 1px;
1642
+ background: #dedfe3;
1643
+ }
1644
+ .trace-load-controls {
1645
+ display: flex;
1646
+ align-items: center;
1647
+ justify-content: space-between;
1648
+ gap: 16px;
1649
+ margin: 22px 0 0 100px;
1650
+ padding-top: 16px;
1651
+ border-top: 1px solid var(--line);
1652
+ }
1653
+ .trace-load-progress {
1654
+ color: var(--muted);
1655
+ font-family: var(--mono);
1656
+ font-size: 11px;
1657
+ }
1658
+ .trace-load-more {
1659
+ padding: 7px 12px;
1660
+ border: 1px solid var(--line-strong);
1661
+ border-radius: 7px;
1662
+ background: var(--paper);
1663
+ color: var(--ink);
1664
+ cursor: pointer;
1665
+ font: 650 12px/1.2 var(--sans);
1666
+ }
1667
+ .trace-load-more:hover:not(:disabled) {
1668
+ border-color: var(--accent);
1669
+ color: var(--accent-strong);
1670
+ }
1671
+ .trace-load-more:disabled {
1672
+ cursor: default;
1673
+ opacity: 0.65;
1674
+ }
1675
+ .trace-entry {
1676
+ --trace-depth: 0;
1677
+ position: relative;
1678
+ display: grid;
1679
+ grid-template-columns: 100px minmax(0, 1fr);
1680
+ margin: 0 0 18px calc(var(--trace-depth) * 24px);
1681
+ }
1682
+ .trace-rail {
1683
+ position: relative;
1684
+ min-height: 36px;
1685
+ padding: 4px 28px 0 0;
1686
+ color: #8a8d95;
1687
+ text-align: right;
1688
+ font-family: var(--mono);
1689
+ }
1690
+ .trace-number,
1691
+ .trace-elapsed {
1692
+ display: block;
1693
+ white-space: nowrap;
1694
+ }
1695
+ .trace-number {
1696
+ font-size: 12px;
1697
+ font-weight: 650;
1698
+ }
1699
+ .trace-elapsed {
1700
+ margin-top: 3px;
1701
+ font-size: 10px;
1702
+ }
1703
+ .trace-dot {
1704
+ position: absolute;
1705
+ top: 10px;
1706
+ right: 11px;
1707
+ width: 11px;
1708
+ height: 11px;
1709
+ border: 2px solid var(--paper);
1710
+ border-radius: 50%;
1711
+ background: var(--accent);
1712
+ box-shadow: 0 0 0 1px #d7d9de;
1713
+ }
1714
+ .trace-card {
1715
+ min-width: 0;
1716
+ overflow: hidden;
1717
+ border: 1px solid #dddfe4;
1718
+ border-radius: 11px;
1719
+ background: rgba(255, 255, 255, 0.92);
1720
+ }
1721
+ .trace-card > header {
1722
+ display: flex;
1723
+ align-items: center;
1724
+ gap: 10px;
1725
+ min-height: 37px;
1726
+ padding: 8px 13px;
1727
+ border-bottom: 1px solid #eceef1;
1728
+ }
1729
+ .trace-status .trace-card > header {
1730
+ border-bottom: 0;
1731
+ padding-bottom: 5px;
1732
+ }
1733
+ .trace-kind {
1734
+ font-family: var(--mono);
1735
+ font-size: 10.5px;
1736
+ font-weight: 750;
1737
+ letter-spacing: 0.08em;
1738
+ text-transform: uppercase;
1739
+ }
1740
+ .trace-turn {
1741
+ color: var(--muted);
1742
+ font: 10px var(--mono);
1743
+ }
1744
+ .trace-status-badge {
1745
+ margin-left: auto;
1746
+ padding: 1px 6px;
1747
+ border-radius: 999px;
1748
+ background: #eef0f3;
1749
+ color: var(--muted);
1750
+ font: 9.5px var(--mono);
1751
+ text-transform: uppercase;
1752
+ }
1753
+ .trace-status-badge-error,
1754
+ .trace-status-badge-failed {
1755
+ background: #fef2f2;
1756
+ color: #b91c1c;
1757
+ }
1758
+ .trace-body {
1759
+ margin: 0;
1760
+ padding: 15px 17px 17px;
1761
+ overflow-wrap: anywhere;
1762
+ white-space: pre-wrap;
1763
+ font-family: var(--sans);
1764
+ font-size: 13px;
1765
+ line-height: 1.65;
1766
+ }
1767
+ .trace-reasoning .trace-card {
1768
+ border-style: dashed;
1769
+ border-color: #d7b98a;
1770
+ background: #fffdf8;
1771
+ }
1772
+ .trace-reasoning .trace-kind {
1773
+ color: #9a6b22;
1774
+ }
1775
+ .trace-reasoning .trace-body {
1776
+ font-style: italic;
1777
+ }
1778
+ .trace-user .trace-card {
1779
+ border-left: 3px solid #f3a66d;
1780
+ }
1781
+ .trace-tool_call .trace-card,
1782
+ .trace-tool_result .trace-card {
1783
+ border-color: #2d3036;
1784
+ background: #191a1e;
1785
+ color: #ececf0;
1786
+ }
1787
+ .trace-tool_call .trace-card > header,
1788
+ .trace-tool_result .trace-card > header {
1789
+ border-bottom-color: rgba(255, 255, 255, 0.1);
1790
+ }
1791
+ .trace-tool_call .trace-kind,
1792
+ .trace-tool_result .trace-kind {
1793
+ color: #f5a66d;
1794
+ }
1795
+ .trace-tool_call .trace-turn,
1796
+ .trace-tool_result .trace-turn {
1797
+ color: #979aa3;
1798
+ }
1799
+ .trace-tool_call .trace-body,
1800
+ .trace-tool_result .trace-body,
1801
+ .trace-output pre {
1802
+ font-family: var(--mono);
1803
+ font-size: 11.5px;
1804
+ line-height: 1.6;
1805
+ }
1806
+ #page .trace-tool_call pre.trace-body,
1807
+ #page .trace-tool_result pre.trace-body {
1808
+ margin: 0;
1809
+ padding: 15px 17px 17px;
1810
+ border: 0;
1811
+ border-radius: 0;
1812
+ background: transparent;
1813
+ color: #ececf0;
1814
+ }
1815
+ .trace-output {
1816
+ border-top: 1px dashed rgba(255, 255, 255, 0.14);
1817
+ }
1818
+ .trace-output summary {
1819
+ padding: 9px 14px;
1820
+ color: #aaaeb7;
1821
+ cursor: pointer;
1822
+ font: 700 10px var(--mono);
1823
+ letter-spacing: 0.06em;
1824
+ text-transform: uppercase;
1825
+ }
1826
+ #page .trace-output pre {
1827
+ max-height: 480px;
1828
+ margin: 0;
1829
+ padding: 0 16px 16px;
1830
+ border: 0;
1831
+ border-radius: 0;
1832
+ background: transparent;
1833
+ overflow: auto;
1834
+ color: #d7d8dd;
1835
+ white-space: pre-wrap;
1836
+ }
1837
+
1838
+ /* ---- workspace ---- */
1839
+ .workspace-header {
1840
+ padding-bottom: 24px;
1841
+ }
1842
+ .workspace-header p {
1843
+ margin: 0;
1844
+ color: var(--muted);
1845
+ font-family: var(--mono);
1846
+ font-size: 11px;
1847
+ }
1848
+ .workspace-inventory {
1849
+ overflow: hidden;
1850
+ border: 1px solid var(--line);
1851
+ border-radius: 11px;
1852
+ background: rgba(255, 255, 255, 0.92);
1853
+ }
1854
+ .workspace-folder > summary {
1855
+ display: flex;
1856
+ align-items: center;
1857
+ gap: 8px;
1858
+ min-height: 39px;
1859
+ padding: 8px 13px;
1860
+ background: #fafafa;
1861
+ cursor: pointer;
1862
+ font-weight: 650;
1863
+ list-style: none;
1864
+ }
1865
+ .workspace-folder > summary::-webkit-details-marker {
1866
+ display: none;
1867
+ }
1868
+ .workspace-folder > summary::after {
1869
+ content: "›";
1870
+ margin-left: auto;
1871
+ color: #989ba2;
1872
+ transform: rotate(90deg);
1873
+ }
1874
+ .workspace-folder:not([open]) > summary::after {
1875
+ transform: rotate(0);
1876
+ }
1877
+ .workspace-folder-children {
1878
+ padding-left: 20px;
1879
+ }
1880
+ .workspace-file {
1881
+ display: grid;
1882
+ grid-template-columns: minmax(180px, 1fr) 72px 78px 180px 36px;
1883
+ align-items: center;
1884
+ min-height: 44px;
1885
+ padding: 7px 10px 7px 13px;
1886
+ color: var(--muted);
1887
+ font-family: var(--mono);
1888
+ font-size: 10.5px;
1889
+ }
1890
+ .workspace-file-name {
1891
+ display: flex;
1892
+ align-items: center;
1893
+ min-width: 0;
1894
+ gap: 8px;
1895
+ color: var(--ink);
1896
+ font-family: var(--sans);
1897
+ font-size: 12.5px;
1898
+ font-weight: 550;
1899
+ }
1900
+ .workspace-file-name span {
1901
+ overflow: hidden;
1902
+ text-overflow: ellipsis;
1903
+ white-space: nowrap;
1904
+ }
1905
+ .workspace-file-type {
1906
+ width: fit-content;
1907
+ padding: 1px 6px;
1908
+ border-radius: 999px;
1909
+ background: var(--accent-soft);
1910
+ color: var(--accent-strong);
1911
+ text-transform: uppercase;
1912
+ }
1913
+ .workspace-download {
1914
+ display: inline-flex;
1915
+ align-items: center;
1916
+ justify-content: center;
1917
+ width: 30px;
1918
+ height: 30px;
1919
+ border-radius: 7px;
1920
+ color: var(--muted);
1921
+ }
1922
+ .workspace-download:hover {
1923
+ background: var(--accent-soft);
1924
+ color: var(--accent-strong);
1925
+ }
1926
+ .workspace-unpublished {
1927
+ color: #9ca3af;
1928
+ text-align: center;
1929
+ }
1930
+
1931
+ .workspace-header {
1932
+ display: flex;
1933
+ align-items: center;
1934
+ justify-content: space-between;
1935
+ gap: 16px;
1936
+ flex-wrap: wrap;
1937
+ }
1938
+ .workspace-toggle {
1939
+ display: inline-flex;
1940
+ align-items: center;
1941
+ padding: 2px;
1942
+ border: 1px solid var(--line);
1943
+ border-radius: 999px;
1944
+ background: #fafafa;
1945
+ }
1946
+ .workspace-toggle-btn {
1947
+ padding: 4px 13px;
1948
+ border: 0;
1949
+ border-radius: 999px;
1950
+ background: transparent;
1951
+ color: var(--muted);
1952
+ font-family: var(--sans);
1953
+ font-size: 12px;
1954
+ font-weight: 600;
1955
+ cursor: pointer;
1956
+ }
1957
+ .workspace-toggle-btn:hover {
1958
+ color: var(--accent-strong);
1959
+ }
1960
+ .workspace-toggle-btn.is-active {
1961
+ background: var(--accent);
1962
+ color: #ffffff;
1963
+ }
1964
+ .workspace-group + .workspace-group {
1965
+ margin-top: 18px;
1966
+ }
1967
+ .workspace-group-head,
1968
+ .workspace-hub-group-head {
1969
+ display: flex;
1970
+ align-items: center;
1971
+ gap: 8px;
1972
+ margin: 0;
1973
+ padding: 8px 13px;
1974
+ background: #fafafa;
1975
+ border-bottom: 1px solid var(--line);
1976
+ color: var(--ink);
1977
+ font-family: var(--sans);
1978
+ font-size: 12px;
1979
+ font-weight: 650;
1980
+ text-transform: capitalize;
1981
+ }
1982
+ .workspace-group-count,
1983
+ .workspace-hub-count {
1984
+ padding: 0 7px;
1985
+ border-radius: 999px;
1986
+ background: var(--accent-soft);
1987
+ color: var(--accent-strong);
1988
+ font-family: var(--mono);
1989
+ font-size: 10.5px;
1990
+ }
1991
+ .workspace-group {
1992
+ overflow: hidden;
1993
+ border: 1px solid var(--line);
1994
+ border-radius: 11px;
1995
+ background: rgba(255, 255, 255, 0.92);
1996
+ }
1997
+
1998
+ .workspace-hub {
1999
+ margin-top: 28px;
2000
+ }
2001
+ .workspace-hub-title {
2002
+ margin: 0 0 14px;
2003
+ font-family: var(--sans);
2004
+ font-size: 16px;
2005
+ font-weight: 700;
2006
+ color: var(--ink);
2007
+ }
2008
+ .workspace-hub-group {
2009
+ overflow: hidden;
2010
+ border: 1px solid var(--line);
2011
+ border-radius: 11px;
2012
+ background: rgba(255, 255, 255, 0.92);
2013
+ }
2014
+ .workspace-hub-group + .workspace-hub-group {
2015
+ margin-top: 14px;
2016
+ }
2017
+ .workspace-hub-list {
2018
+ display: flex;
2019
+ flex-direction: column;
2020
+ }
2021
+ .workspace-hub-link {
2022
+ padding: 9px 13px;
2023
+ color: var(--accent-strong);
2024
+ font-family: var(--mono);
2025
+ font-size: 12px;
2026
+ text-decoration: none;
2027
+ overflow: hidden;
2028
+ text-overflow: ellipsis;
2029
+ white-space: nowrap;
2030
+ }
2031
+ .workspace-hub-link + .workspace-hub-link {
2032
+ border-top: 1px solid var(--line);
2033
+ }
2034
+ .workspace-hub-link:hover {
2035
+ background: var(--accent-soft);
2036
+ text-decoration: underline;
2037
+ }
2038
+
2039
+ /* --- UI nits --- */
2040
+ /* Flush group headers: #page h3/h2 (ID selectors) otherwise inject a top margin
2041
+ that, with overflow:hidden on the card, shows as whitespace above "Jobs" etc. */
2042
+ #page .workspace-hub-title {
2043
+ margin: 0 0 14px;
2044
+ }
2045
+ #page .workspace-hub-group-head,
2046
+ #page .workspace-group-head {
2047
+ margin: 0;
2048
+ }
2049
+ /* HF brand logo before the "Hugging Face artifacts" heading */
2050
+ .workspace-hub-title {
2051
+ display: flex;
2052
+ align-items: center;
2053
+ gap: 9px;
2054
+ }
2055
+ .workspace-hub-logo {
2056
+ width: 22px;
2057
+ height: 22px;
2058
+ flex: none;
2059
+ }
2060
+ /* Center empty-state placeholders (heading, body, command) */
2061
+ .view-empty {
2062
+ display: flex;
2063
+ flex-direction: column;
2064
+ align-items: center;
2065
+ }
2066
+ #page .view-empty h2,
2067
+ #page .view-empty p {
2068
+ text-align: center;
2069
+ }
2070
+
2071
+ @media (max-width: 720px) {
2072
+ #app {
2073
+ flex-direction: column;
2074
+ }
2075
+ #sidebar {
2076
+ width: 100%;
2077
+ flex: none;
2078
+ height: auto;
2079
+ position: static;
2080
+ }
2081
+ #content {
2082
+ display: block;
2083
+ width: 100%;
2084
+ padding: 28px 20px 80px;
2085
+ overflow-x: hidden;
2086
+ }
2087
+ #view-tabs {
2088
+ margin: 0 0 20px;
2089
+ gap: 18px;
2090
+ justify-content: flex-start;
2091
+ overflow-x: auto;
2092
+ }
2093
+ #view-tabs a {
2094
+ flex: 0 0 auto;
2095
+ }
2096
+ .trace-timeline::before {
2097
+ left: 16px;
2098
+ }
2099
+ .trace-entry {
2100
+ grid-template-columns: 32px minmax(0, 1fr);
2101
+ margin-left: calc(var(--trace-depth) * 10px);
2102
+ }
2103
+ .trace-rail {
2104
+ padding: 0;
2105
+ }
2106
+ .trace-number,
2107
+ .trace-elapsed {
2108
+ display: none;
2109
+ }
2110
+ .trace-dot {
2111
+ top: 10px;
2112
+ right: 10px;
2113
+ }
2114
+ .workspace-file {
2115
+ grid-template-columns: minmax(150px, 1fr) 66px 34px;
2116
+ }
2117
+ .workspace-file-size,
2118
+ .workspace-file-time {
2119
+ display: none;
2120
+ }
2121
+ #page {
2122
+ width: 100%;
2123
+ max-width: 100%;
2124
+ }
2125
+ #page h1,
2126
+ #logbook-title {
2127
+ font-size: 30px;
2128
+ }
2129
+ .cell-head {
2130
+ align-items: flex-start;
2131
+ flex-direction: column;
2132
+ gap: 4px;
2133
+ }
2134
+ }
logbook.js ADDED
The diff for this file is too large to render. See raw diff
 
logbook.json ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 2,
3
+ "title": "Reproduction: scRatio release and genomics audit",
4
+ "emoji": "🎯",
5
+ "space_id": "kondratevakate/repro-scratio-release-audit",
6
+ "paper": {
7
+ "arxiv_id": "2602.24201"
8
+ },
9
+ "tags": [
10
+ "icml2026-repro",
11
+ "paper-5zbPdMNcl9",
12
+ "single-cell-genomics"
13
+ ],
14
+ "updated_at": "2026-07-29T20:02:22+00:00",
15
+ "root": {
16
+ "slug": "index",
17
+ "title": "Reproduction: scRatio release and genomics audit",
18
+ "file": "pages/index.md",
19
+ "children": [
20
+ {
21
+ "slug": "executive-summary",
22
+ "title": "Executive summary",
23
+ "file": "pages/executive-summary/page.md",
24
+ "children": []
25
+ },
26
+ {
27
+ "slug": "claim-1-single-ode-ratio-dynamics",
28
+ "title": "Claim 1: single-ODE ratio dynamics",
29
+ "file": "pages/claim-1-single-ode-ratio-dynamics/page.md",
30
+ "children": []
31
+ },
32
+ {
33
+ "slug": "claim-2-gaussian-accuracy-and-runtime",
34
+ "title": "Claim 2: Gaussian accuracy and runtime",
35
+ "file": "pages/claim-2-gaussian-accuracy-and-runtime/page.md",
36
+ "children": []
37
+ },
38
+ {
39
+ "slug": "claim-3-mutual-information-estimation",
40
+ "title": "Claim 3: mutual-information estimation",
41
+ "file": "pages/claim-3-mutual-information-estimation/page.md",
42
+ "children": []
43
+ },
44
+ {
45
+ "slug": "claim-4-differential-abundance",
46
+ "title": "Claim 4: differential abundance",
47
+ "file": "pages/claim-4-differential-abundance/page.md",
48
+ "children": []
49
+ },
50
+ {
51
+ "slug": "claim-5-batch-correction-evaluation",
52
+ "title": "Claim 5: batch-correction evaluation",
53
+ "file": "pages/claim-5-batch-correction-evaluation/page.md",
54
+ "children": []
55
+ },
56
+ {
57
+ "slug": "claim-6-treatment-response-applications",
58
+ "title": "Claim 6: treatment-response applications",
59
+ "file": "pages/claim-6-treatment-response-applications/page.md",
60
+ "children": []
61
+ },
62
+ {
63
+ "slug": "conclusion",
64
+ "title": "Conclusion",
65
+ "file": "pages/conclusion/page.md",
66
+ "children": []
67
+ }
68
+ ]
69
+ },
70
+ "traces": [],
71
+ "workspace": {
72
+ "file": "workspace.json",
73
+ "file_count": 0,
74
+ "total_size": 0,
75
+ "bucket_id": null
76
+ },
77
+ "agent_view_tokens": 1916,
78
+ "trace_view_tokens": 10,
79
+ "workspace_view_tokens": 8,
80
+ "revision": "fd9c07bdbccc4c89a71e"
81
+ }
pages/claim-1-single-ode-ratio-dynamics/page.md ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Claim 1: single-ODE ratio dynamics
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_3ab7907d784d", "created_at": "2026-07-29T20:02:21+00:00", "title": "Claim 1: single-ODE ratio dynamics"}
7
+ -->
8
+ **SUPPORTED - 2/2.** Source tracing finds the paper's divergence and
9
+ two score-correction terms in the released ratio wrapper. With exact Gaussian
10
+ vector fields and scores, the public `estimate_log_density_ratio` path recovers
11
+ three known values with maximum absolute error
12
+ `1.064e-07`.
13
+
14
+
15
+ ---
16
+ <!-- trackio-cell
17
+ {"type": "code", "id": "cell_739fdfdffb6e", "created_at": "2026-07-29T20:02:21+00:00", "title": "C1 evidence", "language": "python"}
18
+ -->
19
+ ````output
20
+ {
21
+ "oracle_max_abs_error": 1.0639655267929982e-07,
22
+ "oracle_predicted": [
23
+ -1.0891089983867086,
24
+ 0.9900990216352779,
25
+ -1.4851486212480378
26
+ ],
27
+ "oracle_true": [
28
+ -1.0891089108910892,
29
+ 0.9900990099009901,
30
+ -1.4851485148514851
31
+ ],
32
+ "small_training": {
33
+ "direct_mse": 1.6455130577087402,
34
+ "direct_seconds": 1.8785907999845222,
35
+ "finite": true,
36
+ "naive_mse": 5.161623954772949,
37
+ "naive_seconds": 1.9525947000365704,
38
+ "seed": 260224201,
39
+ "speedup": 1.0393933048392752,
40
+ "steps": 1200,
41
+ "train_seconds": 11.22273340006359
42
+ },
43
+ "torch_version": "2.10.0+cpu"
44
+ }
45
+ ````
pages/claim-2-gaussian-accuracy-and-runtime/page.md ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Claim 2: Gaussian accuracy and runtime
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_e272c8d3b16e", "created_at": "2026-07-29T20:02:21+00:00", "title": "Claim 2: Gaussian accuracy and runtime"}
7
+ -->
8
+ **PARTIAL - 1/2.** The seeded 1,200-step CPU run is finite and gives
9
+ direct/naive MSE `1.6455/5.1616` with
10
+ `1.04x` speedup. Tracked CSV aggregation favors direct ratios
11
+ in all 30 displayed comparisons, with
12
+ cached speedups 1.89x-
13
+ 3.09x. Yet each scRatio result row has
14
+ three values while Figure 2 says five runs; raw predictions and paper-scale
15
+ retraining are absent.
16
+
17
+
18
+ ---
19
+ <!-- trackio-cell
20
+ {"type": "code", "id": "cell_1c95b9588ead", "created_at": "2026-07-29T20:02:21+00:00", "title": "C2 evidence", "language": "python"}
21
+ -->
22
+ ````output
23
+ {
24
+ "all_direct_faster_than_naive": true,
25
+ "all_direct_mse_lower_than_naive": true,
26
+ "baseline_runs_per_configuration": [
27
+ 5
28
+ ],
29
+ "cached_rows": 230,
30
+ "caption_vs_cached_run_count_match": false,
31
+ "mse_gain_min_median_max": [
32
+ 1.222222222222222,
33
+ 2.2033454823060064,
34
+ 5.995024875621891
35
+ ],
36
+ "paper_caption_training_runs": 5,
37
+ "scratio_cached_times_per_row": [
38
+ 3
39
+ ],
40
+ "scratio_cached_values_per_row": [
41
+ 3
42
+ ],
43
+ "selected_schedule_comparisons": 30,
44
+ "speedup_min_median_max": [
45
+ 1.8911516853932582,
46
+ 2.479619540024892,
47
+ 3.0897971822263504
48
+ ]
49
+ }
50
+ ````
pages/claim-3-mutual-information-estimation/page.md ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Claim 3: mutual-information estimation
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_6f31392db787", "created_at": "2026-07-29T20:02:21+00:00", "title": "Claim 3: mutual-information estimation"}
7
+ -->
8
+ **PARTIAL - 1/2.** The executed MI notebook keeps the qualitative
9
+ ranking, but 0/5 stochastic-path MAEs match current Table 1. The largest
10
+ absolute numeric difference is `0.917` and
11
+ the referenced ratio arrays live outside the clone.
12
+
13
+
14
+ ---
15
+ <!-- trackio-cell
16
+ {"type": "code", "id": "cell_d14a457a3a13", "created_at": "2026-07-29T20:02:21+00:00", "title": "C3 evidence", "language": "python"}
17
+ -->
18
+ ````output
19
+ {
20
+ "largest_absolute_difference": 0.9172490000000001,
21
+ "note": "The executed notebook points to external project_folder/results/*.npy paths.",
22
+ "notebook_stochastic_0.25_mae": {
23
+ "20": 0.155849,
24
+ "40": 0.288463,
25
+ "80": 0.492947,
26
+ "160": 1.027249,
27
+ "320": 0.455203
28
+ },
29
+ "paper_table_stochastic_0.25_mae": {
30
+ "20": 0.03,
31
+ "40": 0.09,
32
+ "80": 0.07,
33
+ "160": 0.11,
34
+ "320": 1.16
35
+ },
36
+ "raw_ratio_arrays_tracked": false,
37
+ "rounded_values_matching": 0
38
+ }
39
+ ````
pages/claim-4-differential-abundance/page.md ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Claim 4: differential abundance
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_e9a70b4dc0c4", "created_at": "2026-07-29T20:02:21+00:00", "title": "Claim 4: differential abundance"}
7
+ -->
8
+ **PARTIAL - 1/2.** Parsed executed outputs reproduce Table 2 at its
9
+ displayed precision. scRatio leads 5/
10
+ 6 metrics; MELD leads correct-sign proportion at high DA.
11
+ The per-cell predictions used to calculate the outputs are external.
12
+
13
+
14
+ ---
15
+ <!-- trackio-cell
16
+ {"type": "code", "id": "cell_74447fc2f0f7", "created_at": "2026-07-29T20:02:21+00:00", "title": "C4 evidence", "language": "python"}
17
+ -->
18
+ ````output
19
+ {
20
+ "executed_notebook_rounded_metrics": {
21
+ "MELD": {
22
+ "corr_auc_score_p": 0.48,
23
+ "corr_correct_sign_prop_p": 0.27,
24
+ "corr_non_abundant_over_abundant_p": 0.17,
25
+ "mean_auc_score": 0.93,
26
+ "mean_correct_sign_prop": 1.0,
27
+ "mean_non_abundant_over_abundant": 6.45
28
+ },
29
+ "MrVI": {
30
+ "corr_auc_score_p": 0.71,
31
+ "corr_correct_sign_prop_p": 0.67,
32
+ "corr_non_abundant_over_abundant_p": 0.83,
33
+ "mean_auc_score": 0.89,
34
+ "mean_correct_sign_prop": 0.97,
35
+ "mean_non_abundant_over_abundant": 7.33
36
+ },
37
+ "scRatio deterministic": {
38
+ "corr_auc_score_p": 1.0,
39
+ "corr_correct_sign_prop_p": 0.95,
40
+ "corr_non_abundant_over_abundant_p": 1.0,
41
+ "mean_auc_score": 0.95,
42
+ "mean_correct_sign_prop": 0.98,
43
+ "mean_non_abundant_over_abundant": 9.65
44
+ },
45
+ "scRatio sigma_min=0.1": {
46
+ "corr_auc_score_p": 0.99,
47
+ "corr_correct_sign_prop_p": 0.95,
48
+ "corr_non_abundant_over_abundant_p": 1.0,
49
+ "mean_auc_score": 0.96,
50
+ "mean_correct_sign_prop": 0.98,
51
+ "mean_non_abundant_over_abundant": 11.39
52
+ },
53
+ "scRatio stochastic": {
54
+ "corr_auc_score_p": 0.99,
55
+ "corr_correct_sign_prop_p": 0.98,
56
+ "corr_non_abundant_over_abundant_p": 0.98,
57
+ "mean_auc_score": 0.95,
58
+ "mean_correct_sign_prop": 0.98,
59
+ "mean_non_abundant_over_abundant": 9.4
60
+ }
61
+ },
62
+ "metric_leaders": {
63
+ "corr_auc_score_p": "scRatio deterministic",
64
+ "corr_correct_sign_prop_p": "scRatio stochastic",
65
+ "corr_non_abundant_over_abundant_p": "scRatio deterministic",
66
+ "mean_auc_score": "scRatio sigma_min=0.1",
67
+ "mean_correct_sign_prop": "MELD",
68
+ "mean_non_abundant_over_abundant": "scRatio sigma_min=0.1"
69
+ },
70
+ "metrics_checked": 6,
71
+ "raw_metric_inputs_tracked": false,
72
+ "scratio_leads_metrics": 5
73
+ }
74
+ ````
pages/claim-5-batch-correction-evaluation/page.md ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Claim 5: batch-correction evaluation
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_06e27eea2a8d", "created_at": "2026-07-29T20:02:21+00:00", "title": "Claim 5: batch-correction evaluation"}
7
+ -->
8
+ **PARTIAL - 1/2.** The NeurIPS and C. elegans notebooks preserve
9
+ executed LLR matrix shapes and condition-group counts consistent with the
10
+ paper. The clone does not contain their NPZ ratio arrays, so the before/after
11
+ magnitude reduction is not numerically recomputable from the clone alone.
12
+
13
+
14
+ ---
15
+ <!-- trackio-cell
16
+ {"type": "code", "id": "cell_6036a14e63f2", "created_at": "2026-07-29T20:02:21+00:00", "title": "C5 evidence", "language": "python"}
17
+ -->
18
+ ````output
19
+ {
20
+ "all_executed_shapes_present": true,
21
+ "datasets": {
22
+ "C_elegans": {
23
+ "condition_group_progress_present": true,
24
+ "executed_shape_present": true,
25
+ "expected_cells": 89701,
26
+ "expected_condition_groups": 248
27
+ },
28
+ "NeurIPS": {
29
+ "condition_group_progress_present": true,
30
+ "executed_shape_present": true,
31
+ "expected_cells": 90261,
32
+ "expected_condition_groups": 431
33
+ }
34
+ },
35
+ "numeric_decrease_recomputable_from_clone": false,
36
+ "raw_llr_npz_files_tracked": false
37
+ }
38
+ ````
pages/claim-6-treatment-response-applications/page.md ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Claim 6: treatment-response applications
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_edff886e2e05", "created_at": "2026-07-29T20:02:21+00:00", "title": "Claim 6: treatment-response applications"}
7
+ -->
8
+ **PARTIAL - 1/2.** Independent recomputation over
9
+ 23 printed ComboSciPlex pairs gives
10
+ Pearson `0.9449` and Spearman
11
+ `0.9071`. The PBMC donor/cytokine notebook
12
+ contains the expected analysis and executed plots but no model or raw group
13
+ ratios.
14
+
15
+
16
+ ---
17
+ <!-- trackio-cell
18
+ {"type": "code", "id": "cell_364a44b70dc6", "created_at": "2026-07-29T20:02:21+00:00", "title": "C6 evidence", "language": "python"}
19
+ -->
20
+ ````output
21
+ {
22
+ "combosciplex_pairs_recovered": 23,
23
+ "combosciplex_pearson": 0.9449302146944628,
24
+ "combosciplex_spearman": 0.9071146245059288,
25
+ "pbmc_executed_figure_outputs": 163,
26
+ "pbmc_expected_labels_present": true,
27
+ "raw_combo_or_pbmc_predictions_tracked": false
28
+ }
29
+ ````
pages/conclusion/page.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Conclusion
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_36234310a19d", "created_at": "2026-07-29T20:02:21+00:00", "title": "Conclusion"}
7
+ -->
8
+ The release supports **7/12** points.
9
+ Its core mathematical estimator is unusually checkable and passes a tight
10
+ oracle. The main reproducibility boundary is result provenance: application
11
+ notebooks are executed, but their inputs and prediction arrays are external,
12
+ the Gaussian replicate count conflicts with the caption, and the MI notebook
13
+ does not numerically match the current paper table.
pages/executive-summary/page.md ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Executive summary
2
+
3
+
4
+ ---
5
+ <!-- trackio-cell
6
+ {"type": "markdown", "id": "cell_f4822d7d2ff9", "created_at": "2026-07-29T20:02:21+00:00", "title": "Executive summary", "pinned": true, "pinned_at": "2026-07-29T20:02:21+00:00"}
7
+ -->
8
+ **Outcome.** The official scRatio release receives
9
+ **7/12 points**, exactly
10
+ the frozen forecast. The core single-ODE estimator passes an analytic oracle,
11
+ and a fresh small Gaussian run favors direct ratios. The release also preserves
12
+ substantial executed application evidence, but paper-scale raw predictions and
13
+ checkpoints are external; Figure 2 and the MI notebook have provenance
14
+ mismatches.
15
+
16
+ | Item | Result |
17
+ | --- | --- |
18
+ | Official commit | `88fa155e360bd01608cf9c534beea5d73d45a80e` |
19
+ | Analytic-oracle max error | `1.06e-07` |
20
+ | Fresh direct / naive MSE | `1.6455` / `5.1616` |
21
+ | Cached Gaussian comparisons favoring direct | 30/30 |
22
+ | Figure 2 caption / cached scRatio runs | 5 / 3 |
23
+ | Prepared score | 7/12 |
24
+
25
+ Primary sources: [arXiv](https://arxiv.org/abs/2602.24201),
26
+ [OpenReview](https://openreview.net/forum?id=5zbPdMNcl9),
27
+ [official repository](https://github.com/theislab/scRatio), and
28
+ [Zenodo data](https://zenodo.org/records/20822377). No leaderboard or
29
+ third-party verdict contributes evidence.
30
+
31
+
32
+ ---
33
+ <!-- trackio-cell
34
+ {"type": "figure", "id": "cell_62d35d270471", "created_at": "2026-07-29T20:02:21+00:00", "title": "Reproduction poster", "pinned": true, "pinned_at": "2026-07-29T20:02:21+00:00"}
35
+ -->
36
+ ````html
37
+ <div style="font-family:system-ui,Arial;max-width:960px;border:1px solid #cdd9d4;padding:20px;background:#fff;color:#17241f"><h2 style="border-bottom:3px solid #287a63;padding-bottom:8px">scRatio: independent release audit</h2><table style="font-size:12px;width:100%"><tr><th>Claim</th><th>Evidence</th><th>Verdict</th></tr><tr><td>C1 ODE</td><td>Analytic oracle error 1.06e-07</td><td>SUPPORTED 2/2</td></tr><tr><td>C2 Gaussian</td><td>Fresh smoke + 30 cached comparisons; 3-vs-5 run mismatch</td><td>PARTIAL 1/2</td></tr><tr><td>C3-C6</td><td>Executed outputs; raw arrays/checkpoints external</td><td>PARTIAL 4/8</td></tr></table><p>Prepared 7/12. No peer verdicts used.</p></div>
38
+ ````
pages/index.md ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Reproduction: scRatio release and genomics audit
2
+
3
+ ## Pages
4
+
5
+ | Page |
6
+ | --- |
7
+ | [Executive summary](#/executive-summary) |
8
+ | [Claim 1: single-ODE ratio dynamics](#/claim-1-single-ode-ratio-dynamics) |
9
+ | [Claim 2: Gaussian accuracy and runtime](#/claim-2-gaussian-accuracy-and-runtime) |
10
+ | [Claim 3: mutual-information estimation](#/claim-3-mutual-information-estimation) |
11
+ | [Claim 4: differential abundance](#/claim-4-differential-abundance) |
12
+ | [Claim 5: batch-correction evaluation](#/claim-5-batch-correction-evaluation) |
13
+ | [Claim 6: treatment-response applications](#/claim-6-treatment-response-applications) |
14
+ | [Conclusion](#/conclusion) |
traces/index.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "sessions": []
4
+ }
trackio-logo-light.png ADDED
trackio-logo.png ADDED
trackio-wordmark-dark.png ADDED
workspace.json ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "generated_at": "2026-07-29T20:02:21+00:00",
4
+ "root_name": "flow_density_ratio",
5
+ "bucket_id": null,
6
+ "file_count": 0,
7
+ "total_size": 0,
8
+ "files": [],
9
+ "hub_refs": []
10
+ }