Skip to content

Commit a18c3a3

Browse files
Eric Priceclaude
andcommitted
chore: fix formatting and regenerate regression baseline
Ran cargo fmt to fix line-length violations introduced during rebase. Regenerated baseline_VardiffState.toml to reflect the current AsymmetricCusumBoundary behavior (directional cost awareness produces expected negative asymmetry values at higher SPM rates). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 2cb0e5c commit a18c3a3

7 files changed

Lines changed: 4616 additions & 4608 deletions

File tree

sv2/channels-sv2/sim/baseline_VardiffState.md

Lines changed: 83 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -8,144 +8,144 @@ Headline per-metric values at each share rate's best and worst cells. ↑ = high
88

99
| Metric | Dir | Best | Worst |
1010
| --- | :-: | --- | --- |
11-
| cold-start convergence rate || 99.3% @ SPM=30 | 83.2% @ SPM=6 |
12-
| cold-start p90 time || 15m @ SPM=25 | 21m @ SPM=6 |
13-
| settled accuracy p50 (stable) || 0.0% @ SPM=10 (floor: 6.7%) | 5.2% @ SPM=6 (floor: 8.7%) |
14-
| settled accuracy p99 (stable) || 15.2% @ SPM=25 (floor: 16.3%) | 69.8% @ SPM=6 (floor: 33.3%) |
15-
| stable-load jitter (mean) || 0.003/min @ SPM=30 (floor: 0.020/min) | 0.059/min @ SPM=6 (floor: 0.020/min) |
16-
| reaction rate at −50% step || 69.6% @ SPM=6 | 29.7% @ SPM=30 |
17-
| reaction rate at +50% step || 63.9% @ SPM=6 | 32.9% @ SPM=30 |
18-
| ramp target overshoot p99 (cold start) || 26.4% @ SPM=30 (floor: 42.5%) | 145.2% @ SPM=6 (floor: 95.0%) |
19-
| operational fitness || 0.396 @ SPM=6 | 0.331 @ SPM=20 |
20-
| decoupling score || 0.696 @ SPM=6 | 0.297 @ SPM=30 |
21-
| max |reaction asymmetry| || 0.011 @ SPM=15 | 0.073 @ SPM=8 |
11+
| cold-start convergence rate || 100.0% @ SPM=6 | 100.0% @ SPM=6 |
12+
| cold-start p90 time || 1m @ SPM=25 | 9m @ SPM=6 |
13+
| settled accuracy p50 (stable) || 6.7% @ SPM=30 (floor: 3.9%) | 10.5% @ SPM=6 (floor: 8.7%) |
14+
| settled accuracy p99 (stable) || 13.9% @ SPM=30 (floor: 14.9%) | 32.6% @ SPM=6 (floor: 33.3%) |
15+
| stable-load jitter (mean) || 0.001/min @ SPM=30 (floor: 0.020/min) | 0.108/min @ SPM=6 (floor: 0.020/min) |
16+
| reaction rate at −50% step || 99.8% @ SPM=15 | 98.4% @ SPM=6 |
17+
| reaction rate at +50% step || 84.7% @ SPM=12 | 79.0% @ SPM=30 |
18+
| ramp target overshoot p99 (cold start) || 0.0% @ SPM=30 (floor: 42.5%) | 36.1% @ SPM=6 (floor: 95.0%) |
19+
| operational fitness || 0.849 @ SPM=30 | 0.681 @ SPM=8 |
20+
| decoupling score || 0.998 @ SPM=15 | 0.777 @ SPM=6 |
21+
| max |reaction asymmetry| || 0.151 @ SPM=8 | 0.733 @ SPM=30 |
2222

2323
## Convergence time (cold start: 10 GH/s → 1 PH/s)
2424

2525
| share/min | rate | p10 | p50 | p90 | p99 | mean |
2626
| --- | --- | --- | --- | --- | --- | --- |
27-
| 6 | 83.2% | 10m | 12m | 21m | 25m | 14m05s |
28-
| 8 | 90.6% | 10m | 10m | 20m | 25m | 13m23s |
29-
| 10 | 93.9% | 10m | 10m | 20m | 25m | 12m58s |
30-
| 12 | 94.3% | 10m | 10m | 20m | 25m | 12m58s |
31-
| 15 | 97.2% | 10m | 10m | 19m | 25m | 12m22s |
32-
| 20 | 98.0% | 10m | 10m | 16m | 25m | 12m |
33-
| 25 | 98.8% | 10m | 10m | 15m | 24m | 11m34s |
34-
| 30 | 99.3% | 10m | 10m | 15m | 20m | 11m13s |
27+
| 6 | 100.0% | 3m | 4m | 9m | 15m | 5m11s |
28+
| 8 | 100.0% | 3m | 5m | 6m | 12m | 4m46s |
29+
| 10 | 100.0% | 1m | 5m | 6m | 10m | 4m06s |
30+
| 12 | 100.0% | 1m | 4m | 6m | 6m | 3m31s |
31+
| 15 | 100.0% | 1m | 1m | 6m | 6m | 2m57s |
32+
| 20 | 100.0% | 1m | 1m | 6m | 6m | 2m44s |
33+
| 25 | 100.0% | 1m | 1m | 1m | 1m | 1m03s |
34+
| 30 | 100.0% | 1m | 1m | 6m | 6m | 1m53s |
3535

3636
## Settled accuracy (stable load, post-convergence)
3737

3838
`|final_hashrate / true_hashrate - 1|` at trial end. Smaller is better.
3939

4040
| share/min | p10 | p50 | p90 | p99 | mean |
4141
| --- | --- | --- | --- | --- | --- |
42-
| 6 | 0.0% | 5.2% | 23.7% | 69.8% | 9.7% |
43-
| 8 | 0.0% | 1.8% | 17.7% | 44.1% | 6.2% |
44-
| 10 | 0.0% | 0.0% | 15.3% | 31.6% | 4.4% |
45-
| 12 | 0.0% | 0.0% | 13.4% | 25.0% | 3.4% |
46-
| 15 | 0.0% | 0.0% | 8.9% | 22.4% | 2.3% |
47-
| 20 | 0.0% | 0.0% | 5.0% | 17.1% | 1.4% |
48-
| 25 | 0.0% | 0.0% | 1.8% | 15.2% | 0.8% |
49-
| 30 | 0.0% | 0.0% | 2.2% | 15.3% | 0.8% |
42+
| 6 | 1.7% | 10.5% | 23.7% | 32.6% | 11.8% |
43+
| 8 | 2.0% | 9.1% | 19.9% | 28.6% | 10.4% |
44+
| 10 | 2.2% | 9.4% | 18.7% | 23.7% | 10.2% |
45+
| 12 | 3.1% | 8.9% | 17.7% | 23.5% | 10.0% |
46+
| 15 | 4.6% | 8.4% | 16.8% | 21.3% | 9.3% |
47+
| 20 | 0.0% | 7.7% | 11.6% | 18.7% | 7.5% |
48+
| 25 | 0.0% | 7.0% | 10.6% | 17.3% | 6.3% |
49+
| 30 | 0.0% | 6.7% | 10.3% | 13.9% | 5.4% |
5050

5151
## Steady-state jitter (fires per minute)
5252

5353
Post-convergence rate of vardiff fires. Smaller is better — ideal is zero under stable load.
5454

5555
| share/min | p10 | p50 | p90 | p99 | mean |
5656
| --- | --- | --- | --- | --- | --- |
57-
| 6 | 0.000 | 0.000 | 0.200 | 0.391 | 0.059 |
58-
| 8 | 0.000 | 0.000 | 0.143 | 0.318 | 0.037 |
59-
| 10 | 0.000 | 0.000 | 0.091 | 0.273 | 0.025 |
60-
| 12 | 0.000 | 0.000 | 0.056 | 0.217 | 0.015 |
61-
| 15 | 0.000 | 0.000 | 0.043 | 0.133 | 0.009 |
62-
| 20 | 0.000 | 0.000 | 0.000 | 0.095 | 0.004 |
63-
| 25 | 0.000 | 0.000 | 0.000 | 0.071 | 0.003 |
64-
| 30 | 0.000 | 0.000 | 0.000 | 0.056 | 0.003 |
57+
| 6 | 0.059 | 0.105 | 0.158 | 0.200 | 0.108 |
58+
| 8 | 0.043 | 0.083 | 0.133 | 0.176 | 0.084 |
59+
| 10 | 0.000 | 0.062 | 0.105 | 0.154 | 0.063 |
60+
| 12 | 0.000 | 0.050 | 0.091 | 0.136 | 0.045 |
61+
| 15 | 0.000 | 0.000 | 0.077 | 0.105 | 0.026 |
62+
| 20 | 0.000 | 0.000 | 0.048 | 0.083 | 0.008 |
63+
| 25 | 0.000 | 0.000 | 0.000 | 0.067 | 0.002 |
64+
| 30 | 0.000 | 0.000 | 0.000 | 0.000 | 0.001 |
6565

6666
## Reaction time to a 50% drop (step at 15 min)
6767

6868
| share/min | reacted | p10 | p50 | p90 | p99 | mean |
6969
| --- | --- | --- | --- | --- | --- | --- |
70-
| 6 | 69.6% | 1m | 3m | 5m | 5m | 2m38s |
71-
| 8 | 62.9% | 1m | 3m | 5m | 5m | 2m40s |
72-
| 10 | 59.8% | 1m | 3m | 5m | 5m | 2m55s |
73-
| 12 | 52.3% | 1m | 3m | 5m | 5m | 2m57s |
74-
| 15 | 45.1% | 1m | 3m | 5m | 5m | 3m13s |
75-
| 20 | 39.3% | 2m | 4m | 5m | 5m | 3m31s |
76-
| 25 | 33.8% | 1m | 4m | 5m | 5m | 3m32s |
77-
| 30 | 29.7% | 2m | 4m | 5m | 5m | 3m46s |
70+
| 6 | 98.4% | 1m | 2m | 4m | 5m | 2m10s |
71+
| 8 | 98.7% | 1m | 2m | 4m | 5m | 2m05s |
72+
| 10 | 99.0% | 1m | 2m | 3m | 5m | 2m03s |
73+
| 12 | 99.0% | 1m | 2m | 3m | 5m | 1m58s |
74+
| 15 | 99.8% | 1m | 2m | 3m | 5m | 2m02s |
75+
| 20 | 99.4% | 1m | 2m | 3m | 5m | 1m51s |
76+
| 25 | 99.7% | 1m | 1m | 4m | 5m | 1m44s |
77+
| 30 | 99.6% | 1m | 1m | 3m | 5m | 1m35s |
7878

7979
## Reaction sensitivity (P[fire within 5 min of step change])
8080

8181
| Δ% | 6 | 8 | 10 | 12 | 15 | 20 | 25 | 30 |
8282
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
83-
| -50% | 0.70 | 0.63 | 0.60 | 0.52 | 0.45 | 0.39 | 0.34 | 0.30 |
84-
| -25% | 0.44 | 0.37 | 0.28 | 0.24 | 0.18 | 0.10 | 0.07 | 0.07 |
85-
| -10% | 0.38 | 0.27 | 0.21 | 0.15 | 0.10 | 0.04 | 0.03 | 0.02 |
86-
| -5% | 0.40 | 0.32 | 0.21 | 0.15 | 0.10 | 0.06 | 0.03 | 0.01 |
87-
| +5% | 0.39 | 0.29 | 0.20 | 0.15 | 0.11 | 0.05 | 0.04 | 0.02 |
88-
| +10% | 0.42 | 0.29 | 0.21 | 0.15 | 0.11 | 0.07 | 0.04 | 0.02 |
89-
| +25% | 0.48 | 0.35 | 0.32 | 0.23 | 0.18 | 0.12 | 0.09 | 0.08 |
90-
| +50% | 0.64 | 0.56 | 0.54 | 0.50 | 0.45 | 0.36 | 0.34 | 0.33 |
83+
| -50% | 0.98 | 0.99 | 0.99 | 0.99 | 1.00 | 0.99 | 1.00 | 1.00 |
84+
| -25% | 0.80 | 0.78 | 0.78 | 0.76 | 0.74 | 0.77 | 0.84 | 0.85 |
85+
| -10% | 0.65 | 0.56 | 0.48 | 0.44 | 0.43 | 0.47 | 0.52 | 0.50 |
86+
| -5% | 0.58 | 0.51 | 0.39 | 0.34 | 0.36 | 0.33 | 0.35 | 0.33 |
87+
| +5% | 0.57 | 0.46 | 0.38 | 0.31 | 0.19 | 0.17 | 0.11 | 0.11 |
88+
| +10% | 0.60 | 0.47 | 0.42 | 0.33 | 0.20 | 0.11 | 0.07 | 0.04 |
89+
| +25% | 0.67 | 0.63 | 0.58 | 0.49 | 0.41 | 0.27 | 0.18 | 0.12 |
90+
| +50% | 0.82 | 0.84 | 0.84 | 0.85 | 0.82 | 0.80 | 0.80 | 0.79 |
9191

9292
## Ramp target overshoot (cold start)
9393

9494
`max(new_hashrate on fires) / H_true − 1`: how far the algorithm's actual *target* (not its belief) climbs past truth during the cold-start ramp. Reads `new_hashrate` (the actual target the algorithm set), so it's unaffected by estimator-belief noise. Works for any algorithm that fires, including those without introspection.
9595

9696
| share/min | p10 | p50 | p90 | p99 | mean |
9797
| --- | --- | --- | --- | --- | --- |
98-
| 6 | 0.0% | 24.7% | 80.4% | 145.2% | 33.9% |
99-
| 8 | 0.0% | 16.3% | 62.1% | 101.8% | 24.1% |
100-
| 10 | 0.0% | 11.8% | 47.6% | 97.0% | 17.8% |
101-
| 12 | 0.0% | 9.9% | 33.4% | 72.9% | 14.6% |
102-
| 15 | 0.0% | 6.3% | 26.0% | 75.0% | 11.1% |
103-
| 20 | 0.0% | 5.3% | 19.9% | 56.0% | 8.4% |
104-
| 25 | 0.0% | 3.1% | 15.6% | 33.7% | 5.9% |
105-
| 30 | 0.0% | 3.0% | 13.5% | 26.4% | 5.0% |
98+
| 6 | 0.0% | 4.0% | 19.5% | 36.1% | 7.1% |
99+
| 8 | 0.0% | 0.0% | 13.1% | 26.5% | 3.9% |
100+
| 10 | 0.0% | 0.0% | 8.1% | 18.4% | 2.2% |
101+
| 12 | 0.0% | 0.0% | 7.7% | 16.6% | 2.0% |
102+
| 15 | 0.0% | 0.0% | 4.0% | 14.1% | 1.0% |
103+
| 20 | 0.0% | 0.0% | 0.0% | 5.8% | 0.2% |
104+
| 25 | 0.0% | 0.0% | 0.5% | 5.8% | 0.3% |
105+
| 30 | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% |
106106

107107
## Operational fitness (per share rate)
108108

109109
`0.25×react(-10%) + 0.2×react(-50%) + 0.2×(1-jitter/0.3) + 0.25×(conv_rate×conv_speed) + 0.1×(1-overshoot)`. Higher is better.
110110

111111
| share/min | fitness | react-10% | react-50% | jitter | conv | overshoot |
112112
| --- | --- | --- | --- | --- | --- | --- |
113-
| 6 | 0.396 | 0.383 | 0.696 | 0.803 | 0.000 | 0.000 |
114-
| 8 | 0.369 | 0.270 | 0.629 | 0.877 | 0.000 | 0.000 |
115-
| 10 | 0.359 | 0.212 | 0.598 | 0.915 | 0.000 | 0.030 |
116-
| 12 | 0.359 | 0.148 | 0.523 | 0.949 | 0.000 | 0.271 |
117-
| 15 | 0.334 | 0.099 | 0.451 | 0.970 | 0.000 | 0.250 |
118-
| 20 | 0.331 | 0.044 | 0.393 | 0.986 | 0.000 | 0.440 |
119-
| 25 | 0.340 | 0.033 | 0.338 | 0.990 | 0.000 | 0.663 |
120-
| 30 | 0.336 | 0.020 | 0.297 | 0.991 | 0.000 | 0.736 |
113+
| 6 | 0.701 | 0.647 | 0.984 | 0.642 | 0.600 | 0.639 |
114+
| 8 | 0.681 | 0.563 | 0.987 | 0.721 | 0.500 | 0.735 |
115+
| 10 | 0.682 | 0.476 | 0.990 | 0.790 | 0.500 | 0.816 |
116+
| 12 | 0.712 | 0.443 | 0.990 | 0.851 | 0.600 | 0.834 |
117+
| 15 | 0.800 | 0.428 | 0.998 | 0.912 | 0.900 | 0.859 |
118+
| 20 | 0.831 | 0.474 | 0.994 | 0.974 | 0.900 | 0.942 |
119+
| 25 | 0.848 | 0.523 | 0.997 | 0.993 | 0.900 | 0.942 |
120+
| 30 | 0.849 | 0.500 | 0.996 | 0.998 | 0.900 | 1.000 |
121121

122122
## Decoupling score (per share rate)
123123

124124
`reaction_rate(Step−50) × clamp(1 − jitter_p50 / J_max, 0, 1)` where `J_max = 0.50` fires/min. Higher is better. Score of 1.0 = perfect decoupling between reactivity and jitter.
125125

126126
| share/min | decoupling score |
127127
| --- | --- |
128-
| 6 | 0.696 |
129-
| 8 | 0.629 |
130-
| 10 | 0.598 |
131-
| 12 | 0.523 |
132-
| 15 | 0.451 |
133-
| 20 | 0.393 |
134-
| 25 | 0.338 |
135-
| 30 | 0.297 |
128+
| 6 | 0.777 |
129+
| 8 | 0.823 |
130+
| 10 | 0.866 |
131+
| 12 | 0.891 |
132+
| 15 | 0.998 |
133+
| 20 | 0.994 |
134+
| 25 | 0.997 |
135+
| 30 | 0.996 |
136136

137137
## Reaction asymmetry (per share rate)
138138

139139
`reaction_rate(+δ%) − reaction_rate(−δ%)`. Positive = responds faster to up-steps; negative = responds faster to down-steps; near zero = symmetric.
140140

141141
| share/min | δ=5% | δ=10% | δ=25% | δ=50% |
142142
| --- | --- | --- | --- | --- |
143-
| 6 | -0.01 | +0.04 | +0.03 | -0.06 |
144-
| 8 | -0.03 | +0.02 | -0.01 | -0.07 |
145-
| 10 | -0.01 | -0.00 | +0.04 | -0.06 |
146-
| 12 | -0.00 | +0.01 | -0.01 | -0.03 |
147-
| 15 | +0.01 | +0.01 | +0.00 | -0.01 |
148-
| 20 | -0.01 | +0.03 | +0.01 | -0.03 |
149-
| 25 | +0.01 | +0.01 | +0.02 | +0.00 |
150-
| 30 | +0.01 | -0.00 | +0.01 | +0.03 |
143+
| 6 | -0.01 | -0.04 | -0.13 | -0.16 |
144+
| 8 | -0.04 | -0.09 | -0.14 | -0.15 |
145+
| 10 | -0.01 | -0.05 | -0.20 | -0.15 |
146+
| 12 | -0.03 | -0.11 | -0.27 | -0.14 |
147+
| 15 | -0.17 | -0.23 | -0.33 | -0.18 |
148+
| 20 | -0.16 | -0.36 | -0.50 | -0.20 |
149+
| 25 | -0.24 | -0.45 | -0.66 | -0.19 |
150+
| 30 | -0.22 | -0.46 | -0.73 | -0.21 |
151151

0 commit comments

Comments
 (0)