1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
"""
Base class for benchmark task specifications.
"""
"""Abstract base class for benchmark task definitions."""
"""Dotted task name, e.g. 'coordinates.geodetic_to_ecef'."""
...
"""Module grouping, e.g. 'coordinates'."""
...
"""Human-readable description."""
...
"""Languages that have implementations."""
...
"""Subprocess timeout in seconds. Override for slow tasks."""
return 300
"""Upper cap on the accuracy harness sample count for this task.
The harness uses ``min(--samples, default_accuracy_samples)`` per
task, so this functions as a ceiling for tasks whose per-sample
cost is high (the RK4 80x80 + drag + SRP case overrides this to
30). The base default is intentionally large so a ``--samples``
request from the CLI is the effective sample count for every
ordinary task.
"""
return 1000
"""Generate deterministic benchmark parameters from seed."""
...
"""Build a params dict containing `n` independent inputs for the
accuracy harness.
Default: delegates to `generate_params(seed)`, which preserves
today's behavior for tasks whose natural batch is already the right
coverage (e.g. attitude tasks with 50 quaternions). Tasks whose
helper takes an explicit count should override to thread `n`
through.
Tasks where one big input is the whole point (e.g. the 48-hour
access task) may simply return `generate_params(seed)` and let the
harness's "treat the single output as N=1" path take over.
"""
return
"""Apply per-language alignment (frames, units, conventions) to a
result before accuracy comparison.
Default: identity. Tasks override when a language reports values in
a frame, unit, or convention that differs from the OreKit baseline.
This is the single place to declare those alignments so the
comparison logic lives next to the task spec rather than inside the
language-specific runner modules.
"""
return
"""Return a dict of scalars describing each sample, used as the
x-axis for accuracy scatter plots and to surface in JSONL detail
records.
Default: empty dict (only CDF plots are emitted). Tasks where one
parameter dominates (altitude for orbit-based tasks, epoch for
time-based tasks) override to return e.g. `{"altitude_km": ...}`.
"""
return
"""Return per-sample metrics computed from the actual result
values (not from params). Merged into ``AccuracySample.sample_key``
by the accuracy harness so a task-specific CSV writer can break
the comparison out into multiple metric columns / rows.
Default: empty dict — tasks whose ``compare_results`` summary
captures everything they care about don't need to populate this.
Access overrides this to surface contact-count and per-window
start/end timing residuals alongside the rolled-up max_abs.
"""
return
"""Compare numerical results between two implementations.
Default implementation flattens nested lists and computes element-wise errors.
"""
=
=
return
=
=
=
=
return
"""Build the JSON input dict for subprocess dispatch."""
return
"""Recursively flatten nested lists into a flat list of floats."""
=
return