anhtld commited on
Commit
14b5894
·
verified ·
1 Parent(s): 9a5be21

manual-selector-sweep-paper-sync 2026-07-04T04:48:53Z workspace (part 3)

Browse files
workspace/runs/ctt_selector_diagnostic_sweep/command.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ python scripts/build_selector_diagnostic_sweep.py
workspace/runs/ctt_selector_diagnostic_sweep/config.yaml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ out_dir: runs/ctt_selector_diagnostic_sweep
2
+ selected_min: 0.4745
3
+ proposal_oracle_min: 0.5
4
+ selector_gap_max: 0.03
5
+ metrics:
6
+ - runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test/metrics.json
7
+ - runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test/metrics.json
8
+ - runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0/metrics.json
9
+ - runs/ctt_base_context_obs_learned_dominance_basic_tanh_train_to_test/metrics.json
10
+ - runs/ctt_base_context_obs_learned_dominance_context_success_tanh_train_to_test/metrics.json
11
+ - runs/ctt_base_context_obs_learned_dominance_context_tangent_success_tanh_train_to_test/metrics.json
12
+ - runs/ctt_base_context_obs_learned_dominance_context_tangent_tanh_train_to_test/metrics.json
13
+ - runs/ctt_base_context_obs_learned_dominance_context_tanh_train_to_test/metrics.json
14
+ - runs/ctt_base_context_obs_dominance_tanh_train_to_test/metrics.json
15
+ - runs/ctt_base_context_obs_learned_dominance_basic_perdim_trainmax_train_to_test/metrics.json
16
+ - runs/ctt_base_context_obs_learned_dominance_context_perdim_trainmax_train_to_test/metrics.json
17
+ - runs/ctt_base_context_obs_learned_dominance_context_success_perdim_trainmax_train_to_test/metrics.json
18
+ - runs/ctt_base_context_obs_learned_dominance_context_tangent_perdim_trainmax_train_to_test/metrics.json
19
+ - runs/ctt_base_context_obs_learned_dominance_context_tangent_success_perdim_trainmax_train_to_test/metrics.json
20
+ - runs/ctt_base_context_obs_dominance_perdim_trainmax_train_to_test/metrics.json
workspace/runs/ctt_selector_diagnostic_sweep/data_hash.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ 2ec8fa640a2fa299e25d9a7decf951077112e2460bbb2c14deab81745b8249af
workspace/runs/ctt_selector_diagnostic_sweep/eval.log ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ num_inputs=15
2
+ families=K8 per-dim trainmax,K8 tanh,K16 env_clip
3
+ overall_pass=False
workspace/runs/ctt_selector_diagnostic_sweep/git_hash.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ 14e81292e2004925f81e0bb4810f6f144bfd87b7
workspace/runs/ctt_selector_diagnostic_sweep/metrics.json ADDED
@@ -0,0 +1,424 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "best_by_family": [
3
+ {
4
+ "base_success": 0.3333333333333333,
5
+ "calibration_ece": 0.034447199957771346,
6
+ "coverage": 0.4236111111111111,
7
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
8
+ "fallback_rate": 0.5763888888888888,
9
+ "family": "K8 per-dim trainmax",
10
+ "hidden_chart_oracle_success": 0.7291666666666666,
11
+ "k": 8,
12
+ "outcome_ptr": 0.3611111111111111,
13
+ "proposal_oracle_success": 0.2222222222222222,
14
+ "report_type": "learned_dominance_selector_eval",
15
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_perdim_trainmax_train_to_test",
16
+ "selected_success": 0.3333333333333333,
17
+ "selector": "context/utility_margin, bonus=1.0",
18
+ "selector_regret": 0.11280556699623251,
19
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
20
+ "success_selector_gap": 0.0625,
21
+ "success_support_gap": 0.5138888888888888
22
+ },
23
+ {
24
+ "base_success": 0.3333333333333333,
25
+ "calibration_ece": 0.005483674479356937,
26
+ "coverage": 0.18055555555555555,
27
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
28
+ "fallback_rate": 0.8194444444444444,
29
+ "family": "K8 tanh",
30
+ "hidden_chart_oracle_success": 0.7291666666666666,
31
+ "k": 8,
32
+ "outcome_ptr": 0.4166666666666667,
33
+ "proposal_oracle_success": 0.3819444444444444,
34
+ "report_type": "learned_dominance_selector_eval",
35
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_success_tanh_train_to_test",
36
+ "selected_success": 0.3819444444444444,
37
+ "selector": "context/success, bonus=1.0",
38
+ "selector_regret": 0.23532104610300544,
39
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
40
+ "success_selector_gap": 0.125,
41
+ "success_support_gap": 0.3680555555555556
42
+ },
43
+ {
44
+ "base_success": 0.2916666666666667,
45
+ "calibration_ece": 0.015032666932530015,
46
+ "coverage": 0.6597222222222222,
47
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
48
+ "fallback_rate": 0.3402777777777778,
49
+ "family": "K16 env_clip",
50
+ "hidden_chart_oracle_success": 0.7291666666666666,
51
+ "k": 16,
52
+ "outcome_ptr": 0.5486111111111112,
53
+ "proposal_oracle_success": 0.5694444444444444,
54
+ "report_type": "learned_dominance_selector_eval",
55
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test",
56
+ "selected_success": 0.3541666666666667,
57
+ "selector": "chart_compat/utility_margin, chartcompat_obs",
58
+ "selector_regret": 0.4511945542892338,
59
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
60
+ "success_selector_gap": 0.24305555555555555,
61
+ "success_support_gap": 0.2013888888888889
62
+ }
63
+ ],
64
+ "data_hash": "2ec8fa640a2fa299e25d9a7decf951077112e2460bbb2c14deab81745b8249af",
65
+ "gates": [
66
+ {
67
+ "family": "K8 per-dim trainmax",
68
+ "pass": false,
69
+ "proposal_oracle_success": 0.2222222222222222,
70
+ "selected_success": 0.3333333333333333,
71
+ "selector": "context/utility_margin, bonus=1.0",
72
+ "status": "diagnostic_only",
73
+ "success_selector_gap": 0.0625
74
+ },
75
+ {
76
+ "family": "K8 tanh",
77
+ "pass": false,
78
+ "proposal_oracle_success": 0.3819444444444444,
79
+ "selected_success": 0.3819444444444444,
80
+ "selector": "context/success, bonus=1.0",
81
+ "status": "diagnostic_only",
82
+ "success_selector_gap": 0.125
83
+ },
84
+ {
85
+ "family": "K16 env_clip",
86
+ "pass": false,
87
+ "proposal_oracle_success": 0.5694444444444444,
88
+ "selected_success": 0.3541666666666667,
89
+ "selector": "chart_compat/utility_margin, chartcompat_obs",
90
+ "status": "diagnostic_only",
91
+ "success_selector_gap": 0.24305555555555555
92
+ }
93
+ ],
94
+ "input_metrics": [
95
+ "runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test/metrics.json",
96
+ "runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test/metrics.json",
97
+ "runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0/metrics.json",
98
+ "runs/ctt_base_context_obs_learned_dominance_basic_tanh_train_to_test/metrics.json",
99
+ "runs/ctt_base_context_obs_learned_dominance_context_success_tanh_train_to_test/metrics.json",
100
+ "runs/ctt_base_context_obs_learned_dominance_context_tangent_success_tanh_train_to_test/metrics.json",
101
+ "runs/ctt_base_context_obs_learned_dominance_context_tangent_tanh_train_to_test/metrics.json",
102
+ "runs/ctt_base_context_obs_learned_dominance_context_tanh_train_to_test/metrics.json",
103
+ "runs/ctt_base_context_obs_dominance_tanh_train_to_test/metrics.json",
104
+ "runs/ctt_base_context_obs_learned_dominance_basic_perdim_trainmax_train_to_test/metrics.json",
105
+ "runs/ctt_base_context_obs_learned_dominance_context_perdim_trainmax_train_to_test/metrics.json",
106
+ "runs/ctt_base_context_obs_learned_dominance_context_success_perdim_trainmax_train_to_test/metrics.json",
107
+ "runs/ctt_base_context_obs_learned_dominance_context_tangent_perdim_trainmax_train_to_test/metrics.json",
108
+ "runs/ctt_base_context_obs_learned_dominance_context_tangent_success_perdim_trainmax_train_to_test/metrics.json",
109
+ "runs/ctt_base_context_obs_dominance_perdim_trainmax_train_to_test/metrics.json"
110
+ ],
111
+ "num_inputs": 15,
112
+ "overall_pass": false,
113
+ "report_type": "ctt_selector_diagnostic_sweep",
114
+ "rows": [
115
+ {
116
+ "base_success": 0.2916666666666667,
117
+ "calibration_ece": 0.015032666932530015,
118
+ "coverage": 0.6597222222222222,
119
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
120
+ "fallback_rate": 0.3402777777777778,
121
+ "family": "K16 env_clip",
122
+ "hidden_chart_oracle_success": 0.7291666666666666,
123
+ "k": 16,
124
+ "outcome_ptr": 0.5486111111111112,
125
+ "proposal_oracle_success": 0.5694444444444444,
126
+ "report_type": "learned_dominance_selector_eval",
127
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_chartcompat_obs_utility_task_envclip_k16_train_to_test",
128
+ "selected_success": 0.3541666666666667,
129
+ "selector": "chart_compat/utility_margin, chartcompat_obs",
130
+ "selector_regret": 0.4511945542892338,
131
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
132
+ "success_selector_gap": 0.24305555555555555,
133
+ "success_support_gap": 0.2013888888888889
134
+ },
135
+ {
136
+ "base_success": 0.2916666666666667,
137
+ "calibration_ece": 0.16331725144301124,
138
+ "coverage": 0.13194444444444445,
139
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
140
+ "fallback_rate": 0.8680555555555556,
141
+ "family": "K16 env_clip",
142
+ "hidden_chart_oracle_success": 0.7291666666666666,
143
+ "k": 16,
144
+ "outcome_ptr": 0.5486111111111112,
145
+ "proposal_oracle_success": 0.5694444444444444,
146
+ "report_type": "dominance_calibrated_selector_eval",
147
+ "run_path": "runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test",
148
+ "selected_success": 0.2777777777777778,
149
+ "selector": "LCB auto",
150
+ "selector_regret": 0.5323940152051768,
151
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
152
+ "success_selector_gap": 0.2986111111111111,
153
+ "success_support_gap": 0.2013888888888889
154
+ },
155
+ {
156
+ "base_success": 0.2916666666666667,
157
+ "calibration_ece": 0.16331725144301124,
158
+ "coverage": 0.1111111111111111,
159
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
160
+ "fallback_rate": 0.8888888888888888,
161
+ "family": "K16 env_clip",
162
+ "hidden_chart_oracle_success": 0.7291666666666666,
163
+ "k": 16,
164
+ "outcome_ptr": 0.5486111111111112,
165
+ "proposal_oracle_success": 0.5694444444444444,
166
+ "report_type": "dominance_calibrated_selector_eval",
167
+ "run_path": "runs/ctt_base_context_obs_dominance_envclip_k16_train_to_test_tau0",
168
+ "selected_success": 0.2916666666666667,
169
+ "selector": "LCB 0",
170
+ "selector_regret": 0.5319753833795807,
171
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
172
+ "success_selector_gap": 0.2986111111111111,
173
+ "success_support_gap": 0.2013888888888889
174
+ },
175
+ {
176
+ "base_success": 0.3333333333333333,
177
+ "calibration_ece": 0.02645474340097932,
178
+ "coverage": 0.2569444444444444,
179
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
180
+ "fallback_rate": 0.7430555555555556,
181
+ "family": "K8 tanh",
182
+ "hidden_chart_oracle_success": 0.7291666666666666,
183
+ "k": 8,
184
+ "outcome_ptr": 0.4166666666666667,
185
+ "proposal_oracle_success": 0.3819444444444444,
186
+ "report_type": "learned_dominance_selector_eval",
187
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_basic_tanh_train_to_test",
188
+ "selected_success": 0.3680555555555556,
189
+ "selector": "basic/utility_margin, bonus=1.0",
190
+ "selector_regret": 0.25259616218520226,
191
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
192
+ "success_selector_gap": 0.13194444444444445,
193
+ "success_support_gap": 0.3680555555555556
194
+ },
195
+ {
196
+ "base_success": 0.3333333333333333,
197
+ "calibration_ece": 0.005483674479356937,
198
+ "coverage": 0.18055555555555555,
199
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
200
+ "fallback_rate": 0.8194444444444444,
201
+ "family": "K8 tanh",
202
+ "hidden_chart_oracle_success": 0.7291666666666666,
203
+ "k": 8,
204
+ "outcome_ptr": 0.4166666666666667,
205
+ "proposal_oracle_success": 0.3819444444444444,
206
+ "report_type": "learned_dominance_selector_eval",
207
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_success_tanh_train_to_test",
208
+ "selected_success": 0.3819444444444444,
209
+ "selector": "context/success, bonus=1.0",
210
+ "selector_regret": 0.23532104610300544,
211
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
212
+ "success_selector_gap": 0.125,
213
+ "success_support_gap": 0.3680555555555556
214
+ },
215
+ {
216
+ "base_success": 0.3333333333333333,
217
+ "calibration_ece": 0.03920034766708541,
218
+ "coverage": 0.18055555555555555,
219
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
220
+ "fallback_rate": 0.8194444444444444,
221
+ "family": "K8 tanh",
222
+ "hidden_chart_oracle_success": 0.7291666666666666,
223
+ "k": 8,
224
+ "outcome_ptr": 0.4166666666666667,
225
+ "proposal_oracle_success": 0.3819444444444444,
226
+ "report_type": "learned_dominance_selector_eval",
227
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_tangent_success_tanh_train_to_test",
228
+ "selected_success": 0.3402777777777778,
229
+ "selector": "context_tangent/success, bonus=1.0",
230
+ "selector_regret": 0.26619138512534035,
231
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
232
+ "success_selector_gap": 0.14583333333333334,
233
+ "success_support_gap": 0.3680555555555556
234
+ },
235
+ {
236
+ "base_success": 0.3333333333333333,
237
+ "calibration_ece": 0.053218966408725234,
238
+ "coverage": 0.3125,
239
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
240
+ "fallback_rate": 0.6875,
241
+ "family": "K8 tanh",
242
+ "hidden_chart_oracle_success": 0.7291666666666666,
243
+ "k": 8,
244
+ "outcome_ptr": 0.4166666666666667,
245
+ "proposal_oracle_success": 0.3819444444444444,
246
+ "report_type": "learned_dominance_selector_eval",
247
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_tangent_tanh_train_to_test",
248
+ "selected_success": 0.3472222222222222,
249
+ "selector": "context_tangent/utility_margin, bonus=1.0",
250
+ "selector_regret": 0.2437624827079061,
251
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
252
+ "success_selector_gap": 0.13194444444444445,
253
+ "success_support_gap": 0.3680555555555556
254
+ },
255
+ {
256
+ "base_success": 0.3333333333333333,
257
+ "calibration_ece": 0.02303437704979959,
258
+ "coverage": 0.1111111111111111,
259
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
260
+ "fallback_rate": 0.8888888888888888,
261
+ "family": "K8 tanh",
262
+ "hidden_chart_oracle_success": 0.7291666666666666,
263
+ "k": 8,
264
+ "outcome_ptr": 0.4166666666666667,
265
+ "proposal_oracle_success": 0.3819444444444444,
266
+ "report_type": "learned_dominance_selector_eval",
267
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_tanh_train_to_test",
268
+ "selected_success": 0.375,
269
+ "selector": "context/utility_margin, bonus=1.0",
270
+ "selector_regret": 0.24082847581949965,
271
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
272
+ "success_selector_gap": 0.13194444444444445,
273
+ "success_support_gap": 0.3680555555555556
274
+ },
275
+ {
276
+ "base_success": 0.3333333333333333,
277
+ "calibration_ece": 0.12239407797336463,
278
+ "coverage": 0.11805555555555555,
279
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
280
+ "fallback_rate": 0.8819444444444444,
281
+ "family": "K8 tanh",
282
+ "hidden_chart_oracle_success": 0.7291666666666666,
283
+ "k": 8,
284
+ "outcome_ptr": 0.4166666666666667,
285
+ "proposal_oracle_success": 0.3819444444444444,
286
+ "report_type": "dominance_calibrated_selector_eval",
287
+ "run_path": "runs/ctt_base_context_obs_dominance_tanh_train_to_test",
288
+ "selected_success": 0.3194444444444444,
289
+ "selector": "LCB auto",
290
+ "selector_regret": 0.3232221397451617,
291
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
292
+ "success_selector_gap": 0.1736111111111111,
293
+ "success_support_gap": 0.3680555555555556
294
+ },
295
+ {
296
+ "base_success": 0.3333333333333333,
297
+ "calibration_ece": 0.010301400843750107,
298
+ "coverage": 0.2361111111111111,
299
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
300
+ "fallback_rate": 0.7638888888888888,
301
+ "family": "K8 per-dim trainmax",
302
+ "hidden_chart_oracle_success": 0.7291666666666666,
303
+ "k": 8,
304
+ "outcome_ptr": 0.3611111111111111,
305
+ "proposal_oracle_success": 0.2222222222222222,
306
+ "report_type": "learned_dominance_selector_eval",
307
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_basic_perdim_trainmax_train_to_test",
308
+ "selected_success": 0.3055555555555556,
309
+ "selector": "basic/utility_margin, bonus=1.0",
310
+ "selector_regret": 0.12719054139840105,
311
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
312
+ "success_selector_gap": 0.06944444444444445,
313
+ "success_support_gap": 0.5138888888888888
314
+ },
315
+ {
316
+ "base_success": 0.3333333333333333,
317
+ "calibration_ece": 0.034447199957771346,
318
+ "coverage": 0.4236111111111111,
319
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
320
+ "fallback_rate": 0.5763888888888888,
321
+ "family": "K8 per-dim trainmax",
322
+ "hidden_chart_oracle_success": 0.7291666666666666,
323
+ "k": 8,
324
+ "outcome_ptr": 0.3611111111111111,
325
+ "proposal_oracle_success": 0.2222222222222222,
326
+ "report_type": "learned_dominance_selector_eval",
327
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_perdim_trainmax_train_to_test",
328
+ "selected_success": 0.3333333333333333,
329
+ "selector": "context/utility_margin, bonus=1.0",
330
+ "selector_regret": 0.11280556699623251,
331
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
332
+ "success_selector_gap": 0.0625,
333
+ "success_support_gap": 0.5138888888888888
334
+ },
335
+ {
336
+ "base_success": 0.3333333333333333,
337
+ "calibration_ece": 0.03148814961718582,
338
+ "coverage": 0.006944444444444444,
339
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
340
+ "fallback_rate": 0.9930555555555556,
341
+ "family": "K8 per-dim trainmax",
342
+ "hidden_chart_oracle_success": 0.7291666666666666,
343
+ "k": 8,
344
+ "outcome_ptr": 0.3611111111111111,
345
+ "proposal_oracle_success": 0.2222222222222222,
346
+ "report_type": "learned_dominance_selector_eval",
347
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_success_perdim_trainmax_train_to_test",
348
+ "selected_success": 0.3263888888888889,
349
+ "selector": "context/success, bonus=1.0",
350
+ "selector_regret": 0.11845623132669264,
351
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
352
+ "success_selector_gap": 0.0625,
353
+ "success_support_gap": 0.5138888888888888
354
+ },
355
+ {
356
+ "base_success": 0.3333333333333333,
357
+ "calibration_ece": 0.01449932655549304,
358
+ "coverage": 0.6111111111111112,
359
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
360
+ "fallback_rate": 0.3888888888888889,
361
+ "family": "K8 per-dim trainmax",
362
+ "hidden_chart_oracle_success": 0.7291666666666666,
363
+ "k": 8,
364
+ "outcome_ptr": 0.3611111111111111,
365
+ "proposal_oracle_success": 0.2222222222222222,
366
+ "report_type": "learned_dominance_selector_eval",
367
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_tangent_perdim_trainmax_train_to_test",
368
+ "selected_success": 0.2986111111111111,
369
+ "selector": "context_tangent/utility_margin, bonus=1.0",
370
+ "selector_regret": 0.12803097097073785,
371
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
372
+ "success_selector_gap": 0.06944444444444445,
373
+ "success_support_gap": 0.5138888888888888
374
+ },
375
+ {
376
+ "base_success": 0.3333333333333333,
377
+ "calibration_ece": 0.015235808250645553,
378
+ "coverage": 0.09027777777777778,
379
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
380
+ "fallback_rate": 0.9097222222222222,
381
+ "family": "K8 per-dim trainmax",
382
+ "hidden_chart_oracle_success": 0.7291666666666666,
383
+ "k": 8,
384
+ "outcome_ptr": 0.3611111111111111,
385
+ "proposal_oracle_success": 0.2222222222222222,
386
+ "report_type": "learned_dominance_selector_eval",
387
+ "run_path": "runs/ctt_base_context_obs_learned_dominance_context_tangent_success_perdim_trainmax_train_to_test",
388
+ "selected_success": 0.2777777777777778,
389
+ "selector": "context_tangent/success, bonus=1.0",
390
+ "selector_regret": 0.16677976430704197,
391
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
392
+ "success_selector_gap": 0.09027777777777778,
393
+ "success_support_gap": 0.5138888888888888
394
+ },
395
+ {
396
+ "base_success": 0.3333333333333333,
397
+ "calibration_ece": 0.11740366311592768,
398
+ "coverage": 0.006944444444444444,
399
+ "data_hash": "0c38d73dc9bc4ab756e12006671b5d12f1a23358b281e54b3f6a9ae3cbf6e9af",
400
+ "fallback_rate": 0.9930555555555556,
401
+ "family": "K8 per-dim trainmax",
402
+ "hidden_chart_oracle_success": 0.7291666666666666,
403
+ "k": 8,
404
+ "outcome_ptr": 0.3611111111111111,
405
+ "proposal_oracle_success": 0.2222222222222222,
406
+ "report_type": "dominance_calibrated_selector_eval",
407
+ "run_path": "runs/ctt_base_context_obs_dominance_perdim_trainmax_train_to_test",
408
+ "selected_success": 0.3263888888888889,
409
+ "selector": "LCB auto",
410
+ "selector_regret": 0.11593854168636931,
411
+ "split_hash": "84151df9e88c219b76751677558cc5bbbc19082bf358cea7330158e9e403e25f",
412
+ "success_selector_gap": 0.0625,
413
+ "success_support_gap": 0.5138888888888888
414
+ }
415
+ ],
416
+ "schema_version": 1,
417
+ "selection_rule": "best selected_success per diagnostic family; all candidate rows retained",
418
+ "split_hash": "3281cb880470bb0158a5055eeb059e90f2af4a005944132e01504c225160d8c5",
419
+ "thresholds": {
420
+ "proposal_oracle_min": 0.5,
421
+ "selected_min": 0.4745,
422
+ "selector_gap_max": 0.03
423
+ }
424
+ }
workspace/runs/ctt_selector_diagnostic_sweep/metrics_by_seed.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "16": {
3
+ "base_success": 0.2916666666666667,
4
+ "calibration_ece": 0.11388905660618416,
5
+ "coverage": 0.3009259259259259,
6
+ "outcome_ptr": 0.5486111111111112,
7
+ "proposal_oracle_success": 0.5694444444444444,
8
+ "selected_success": 0.3078703703703704,
9
+ "success_selector_gap": 0.28009259259259256,
10
+ "success_support_gap": 0.20138888888888892
11
+ },
12
+ "8": {
13
+ "base_success": 0.3333333333333333,
14
+ "calibration_ece": 0.04109681127667372,
15
+ "coverage": 0.21122685185185186,
16
+ "outcome_ptr": 0.38888888888888884,
17
+ "proposal_oracle_success": 0.30208333333333337,
18
+ "selected_success": 0.3333333333333333,
19
+ "success_selector_gap": 0.10474537037037035,
20
+ "success_support_gap": 0.4409722222222223
21
+ }
22
+ }
workspace/runs/ctt_selector_diagnostic_sweep/metrics_by_task.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "K16 env_clip": {
3
+ "base_success": 0.2916666666666667,
4
+ "calibration_ece": 0.11388905660618416,
5
+ "coverage": 0.3009259259259259,
6
+ "outcome_ptr": 0.5486111111111112,
7
+ "proposal_oracle_success": 0.5694444444444444,
8
+ "selected_success": 0.3078703703703704,
9
+ "success_selector_gap": 0.28009259259259256,
10
+ "success_support_gap": 0.20138888888888892
11
+ },
12
+ "K8 per-dim trainmax": {
13
+ "base_success": 0.3333333333333333,
14
+ "calibration_ece": 0.03722925805679559,
15
+ "coverage": 0.22916666666666663,
16
+ "outcome_ptr": 0.3611111111111111,
17
+ "proposal_oracle_success": 0.22222222222222224,
18
+ "selected_success": 0.31134259259259256,
19
+ "success_selector_gap": 0.06944444444444445,
20
+ "success_support_gap": 0.5138888888888888
21
+ },
22
+ "K8 tanh": {
23
+ "base_success": 0.3333333333333333,
24
+ "calibration_ece": 0.044964364496551855,
25
+ "coverage": 0.19328703703703706,
26
+ "outcome_ptr": 0.4166666666666667,
27
+ "proposal_oracle_success": 0.3819444444444444,
28
+ "selected_success": 0.3553240740740741,
29
+ "success_selector_gap": 0.14004629629629628,
30
+ "success_support_gap": 0.3680555555555556
31
+ }
32
+ }
workspace/runs/ctt_selector_diagnostic_sweep/split_hash.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ 3281cb880470bb0158a5055eeb059e90f2af4a005944132e01504c225160d8c5
workspace/runs/ctt_selector_diagnostic_sweep/table.tex ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ % Auto-generated by scripts/build_selector_diagnostic_sweep.py
2
+ \begin{tabular}{llrrrrrr}
3
+ \toprule
4
+ Family & Best selector & Base & Selected & Proposal & Coverage & Sel. gap & Support gap \\
5
+ \midrule
6
+ K8 per-dim trainmax & context/utility\_margin, bonus=1.0 & 0.3333 & 0.3333 & 0.2222 & 0.4236 & 0.0625 & 0.5139 \\
7
+ K8 tanh & context/success, bonus=1.0 & 0.3333 & 0.3819 & 0.3819 & 0.1806 & 0.1250 & 0.3681 \\
8
+ K16 env\_clip & chart\_compat/utility\_margin, chartcompat\_obs & 0.2917 & 0.3542 & 0.5694 & 0.6597 & 0.2431 & 0.2014 \\
9
+ \bottomrule
10
+ \end{tabular}
workspace/runs/ctt_selector_diagnostic_sweep/train.log ADDED
@@ -0,0 +1 @@
 
 
1
+ selector sweep artifact; source selectors trained separately
workspace/runs/paper_ctt_audit/audit.json CHANGED
@@ -6,7 +6,7 @@
6
  "forbidden_patterns": [],
7
  "paper": "latex/main.tex",
8
  "paper_inputs": {
9
- "num_inputs": 38,
10
  "num_missing": 0,
11
  "rows": [
12
  {
@@ -243,28 +243,35 @@
243
  "status": "pass"
244
  },
245
  {
246
- "line": 1065,
 
 
 
 
 
 
 
247
  "raw": "../runs/ctt_outcome_acceptance_gate/table",
248
  "resolved": "runs/ctt_outcome_acceptance_gate/table.tex",
249
  "run_dir": "runs/ctt_outcome_acceptance_gate",
250
  "status": "pass"
251
  },
252
  {
253
- "line": 1096,
254
  "raw": "../runs/ctt_base_context_obs_learned_dominance_train_to_test/table",
255
  "resolved": "runs/ctt_base_context_obs_learned_dominance_train_to_test/table.tex",
256
  "run_dir": "runs/ctt_base_context_obs_learned_dominance_train_to_test",
257
  "status": "pass"
258
  },
259
  {
260
- "line": 1120,
261
  "raw": "../runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
262
  "resolved": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
263
  "run_dir": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test",
264
  "status": "pass"
265
  },
266
  {
267
- "line": 1227,
268
  "raw": "../runs/paper_ctt_audit/table",
269
  "resolved": "runs/paper_ctt_audit/table.tex",
270
  "run_dir": "runs/paper_ctt_audit",
@@ -300,6 +307,7 @@
300
  "runs/ctt_learned_dominance_val_to_test",
301
  "runs/ctt_outcome_acceptance_gate",
302
  "runs/ctt_residual_smoke_proxy",
 
303
  "runs/ctt_test_rollout_comparison",
304
  "runs/ctt_val_proxy_comparison",
305
  "runs/ctt_val_rollout_comparison",
@@ -410,6 +418,12 @@
410
  "path": "scripts/calibrate_dominance.py",
411
  "status": "pass"
412
  },
 
 
 
 
 
 
413
  {
414
  "detail": "Theory section included by paper.",
415
  "name": "theory_tex",
@@ -726,6 +740,15 @@
726
  "run_dir": "runs/ctt_residual_smoke_proxy",
727
  "status": "pass"
728
  },
 
 
 
 
 
 
 
 
 
729
  {
730
  "markdown_report_policy": "warning_only_consolidated_readme",
731
  "missing_advisor_contract": [
@@ -776,9 +799,9 @@
776
  "summary": {
777
  "num_failures": 0,
778
  "num_forbidden_matches": 0,
779
- "num_paper_inputs": 38,
780
- "num_run_dirs_in_paper": 33,
781
- "num_warnings": 33,
782
  "status": "pass"
783
  }
784
  }
 
6
  "forbidden_patterns": [],
7
  "paper": "latex/main.tex",
8
  "paper_inputs": {
9
+ "num_inputs": 39,
10
  "num_missing": 0,
11
  "rows": [
12
  {
 
243
  "status": "pass"
244
  },
245
  {
246
+ "line": 1067,
247
+ "raw": "../runs/ctt_selector_diagnostic_sweep/table",
248
+ "resolved": "runs/ctt_selector_diagnostic_sweep/table.tex",
249
+ "run_dir": "runs/ctt_selector_diagnostic_sweep",
250
+ "status": "pass"
251
+ },
252
+ {
253
+ "line": 1089,
254
  "raw": "../runs/ctt_outcome_acceptance_gate/table",
255
  "resolved": "runs/ctt_outcome_acceptance_gate/table.tex",
256
  "run_dir": "runs/ctt_outcome_acceptance_gate",
257
  "status": "pass"
258
  },
259
  {
260
+ "line": 1120,
261
  "raw": "../runs/ctt_base_context_obs_learned_dominance_train_to_test/table",
262
  "resolved": "runs/ctt_base_context_obs_learned_dominance_train_to_test/table.tex",
263
  "run_dir": "runs/ctt_base_context_obs_learned_dominance_train_to_test",
264
  "status": "pass"
265
  },
266
  {
267
+ "line": 1144,
268
  "raw": "../runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
269
  "resolved": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
270
  "run_dir": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test",
271
  "status": "pass"
272
  },
273
  {
274
+ "line": 1251,
275
  "raw": "../runs/paper_ctt_audit/table",
276
  "resolved": "runs/paper_ctt_audit/table.tex",
277
  "run_dir": "runs/paper_ctt_audit",
 
307
  "runs/ctt_learned_dominance_val_to_test",
308
  "runs/ctt_outcome_acceptance_gate",
309
  "runs/ctt_residual_smoke_proxy",
310
+ "runs/ctt_selector_diagnostic_sweep",
311
  "runs/ctt_test_rollout_comparison",
312
  "runs/ctt_val_proxy_comparison",
313
  "runs/ctt_val_rollout_comparison",
 
418
  "path": "scripts/calibrate_dominance.py",
419
  "status": "pass"
420
  },
421
+ {
422
+ "detail": "Selector diagnostic sweep summary.",
423
+ "name": "selector_diagnostic_sweep",
424
+ "path": "scripts/build_selector_diagnostic_sweep.py",
425
+ "status": "pass"
426
+ },
427
  {
428
  "detail": "Theory section included by paper.",
429
  "name": "theory_tex",
 
740
  "run_dir": "runs/ctt_residual_smoke_proxy",
741
  "status": "pass"
742
  },
743
+ {
744
+ "markdown_report_policy": "warning_only_consolidated_readme",
745
+ "missing_advisor_contract": [
746
+ "report.md"
747
+ ],
748
+ "missing_required": [],
749
+ "run_dir": "runs/ctt_selector_diagnostic_sweep",
750
+ "status": "pass"
751
+ },
752
  {
753
  "markdown_report_policy": "warning_only_consolidated_readme",
754
  "missing_advisor_contract": [
 
799
  "summary": {
800
  "num_failures": 0,
801
  "num_forbidden_matches": 0,
802
+ "num_paper_inputs": 39,
803
+ "num_run_dirs_in_paper": 34,
804
+ "num_warnings": 34,
805
  "status": "pass"
806
  }
807
  }
workspace/runs/paper_ctt_audit/metrics.json CHANGED
@@ -6,7 +6,7 @@
6
  "forbidden_patterns": [],
7
  "paper": "latex/main.tex",
8
  "paper_inputs": {
9
- "num_inputs": 38,
10
  "num_missing": 0,
11
  "rows": [
12
  {
@@ -243,28 +243,35 @@
243
  "status": "pass"
244
  },
245
  {
246
- "line": 1065,
 
 
 
 
 
 
 
247
  "raw": "../runs/ctt_outcome_acceptance_gate/table",
248
  "resolved": "runs/ctt_outcome_acceptance_gate/table.tex",
249
  "run_dir": "runs/ctt_outcome_acceptance_gate",
250
  "status": "pass"
251
  },
252
  {
253
- "line": 1096,
254
  "raw": "../runs/ctt_base_context_obs_learned_dominance_train_to_test/table",
255
  "resolved": "runs/ctt_base_context_obs_learned_dominance_train_to_test/table.tex",
256
  "run_dir": "runs/ctt_base_context_obs_learned_dominance_train_to_test",
257
  "status": "pass"
258
  },
259
  {
260
- "line": 1120,
261
  "raw": "../runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
262
  "resolved": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
263
  "run_dir": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test",
264
  "status": "pass"
265
  },
266
  {
267
- "line": 1227,
268
  "raw": "../runs/paper_ctt_audit/table",
269
  "resolved": "runs/paper_ctt_audit/table.tex",
270
  "run_dir": "runs/paper_ctt_audit",
@@ -300,6 +307,7 @@
300
  "runs/ctt_learned_dominance_val_to_test",
301
  "runs/ctt_outcome_acceptance_gate",
302
  "runs/ctt_residual_smoke_proxy",
 
303
  "runs/ctt_test_rollout_comparison",
304
  "runs/ctt_val_proxy_comparison",
305
  "runs/ctt_val_rollout_comparison",
@@ -410,6 +418,12 @@
410
  "path": "scripts/calibrate_dominance.py",
411
  "status": "pass"
412
  },
 
 
 
 
 
 
413
  {
414
  "detail": "Theory section included by paper.",
415
  "name": "theory_tex",
@@ -726,6 +740,15 @@
726
  "run_dir": "runs/ctt_residual_smoke_proxy",
727
  "status": "pass"
728
  },
 
 
 
 
 
 
 
 
 
729
  {
730
  "markdown_report_policy": "warning_only_consolidated_readme",
731
  "missing_advisor_contract": [
@@ -776,9 +799,9 @@
776
  "summary": {
777
  "num_failures": 0,
778
  "num_forbidden_matches": 0,
779
- "num_paper_inputs": 38,
780
- "num_run_dirs_in_paper": 33,
781
- "num_warnings": 33,
782
  "status": "pass"
783
  }
784
  }
 
6
  "forbidden_patterns": [],
7
  "paper": "latex/main.tex",
8
  "paper_inputs": {
9
+ "num_inputs": 39,
10
  "num_missing": 0,
11
  "rows": [
12
  {
 
243
  "status": "pass"
244
  },
245
  {
246
+ "line": 1067,
247
+ "raw": "../runs/ctt_selector_diagnostic_sweep/table",
248
+ "resolved": "runs/ctt_selector_diagnostic_sweep/table.tex",
249
+ "run_dir": "runs/ctt_selector_diagnostic_sweep",
250
+ "status": "pass"
251
+ },
252
+ {
253
+ "line": 1089,
254
  "raw": "../runs/ctt_outcome_acceptance_gate/table",
255
  "resolved": "runs/ctt_outcome_acceptance_gate/table.tex",
256
  "run_dir": "runs/ctt_outcome_acceptance_gate",
257
  "status": "pass"
258
  },
259
  {
260
+ "line": 1120,
261
  "raw": "../runs/ctt_base_context_obs_learned_dominance_train_to_test/table",
262
  "resolved": "runs/ctt_base_context_obs_learned_dominance_train_to_test/table.tex",
263
  "run_dir": "runs/ctt_base_context_obs_learned_dominance_train_to_test",
264
  "status": "pass"
265
  },
266
  {
267
+ "line": 1144,
268
  "raw": "../runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
269
  "resolved": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test/table.tex",
270
  "run_dir": "runs/ctt_base_context_obs_nonlinear_dominance_basic_positive_train_to_test",
271
  "status": "pass"
272
  },
273
  {
274
+ "line": 1251,
275
  "raw": "../runs/paper_ctt_audit/table",
276
  "resolved": "runs/paper_ctt_audit/table.tex",
277
  "run_dir": "runs/paper_ctt_audit",
 
307
  "runs/ctt_learned_dominance_val_to_test",
308
  "runs/ctt_outcome_acceptance_gate",
309
  "runs/ctt_residual_smoke_proxy",
310
+ "runs/ctt_selector_diagnostic_sweep",
311
  "runs/ctt_test_rollout_comparison",
312
  "runs/ctt_val_proxy_comparison",
313
  "runs/ctt_val_rollout_comparison",
 
418
  "path": "scripts/calibrate_dominance.py",
419
  "status": "pass"
420
  },
421
+ {
422
+ "detail": "Selector diagnostic sweep summary.",
423
+ "name": "selector_diagnostic_sweep",
424
+ "path": "scripts/build_selector_diagnostic_sweep.py",
425
+ "status": "pass"
426
+ },
427
  {
428
  "detail": "Theory section included by paper.",
429
  "name": "theory_tex",
 
740
  "run_dir": "runs/ctt_residual_smoke_proxy",
741
  "status": "pass"
742
  },
743
+ {
744
+ "markdown_report_policy": "warning_only_consolidated_readme",
745
+ "missing_advisor_contract": [
746
+ "report.md"
747
+ ],
748
+ "missing_required": [],
749
+ "run_dir": "runs/ctt_selector_diagnostic_sweep",
750
+ "status": "pass"
751
+ },
752
  {
753
  "markdown_report_policy": "warning_only_consolidated_readme",
754
  "missing_advisor_contract": [
 
799
  "summary": {
800
  "num_failures": 0,
801
  "num_forbidden_matches": 0,
802
+ "num_paper_inputs": 39,
803
+ "num_run_dirs_in_paper": 34,
804
+ "num_warnings": 34,
805
  "status": "pass"
806
  }
807
  }
workspace/runs/paper_ctt_audit/table.tex CHANGED
@@ -4,9 +4,9 @@
4
  Audit item & Count & Status \\
5
  \midrule
6
  Forbidden language matches & 0 & pass \\
7
- Paper inputs & 38 & pass \\
8
- Run dirs in paper & 33 & pass \\
9
- Implementation paths & 20 & pass \\
10
- Advisor-contract warnings & 33 & warn \\
11
  \bottomrule
12
  \end{tabular}
 
4
  Audit item & Count & Status \\
5
  \midrule
6
  Forbidden language matches & 0 & pass \\
7
+ Paper inputs & 39 & pass \\
8
+ Run dirs in paper & 34 & pass \\
9
+ Implementation paths & 21 & pass \\
10
+ Advisor-contract warnings & 34 & warn \\
11
  \bottomrule
12
  \end{tabular}