{
 "date": "2026-10-03",
 "group": "Orbit and upper-atmosphere studies",
 "generated_at": "2026-10-04T07:30:45Z",
 "sources": [
  "job logs and records brought home from the cluster",
  "the hub's jobs list",
  "notebook entries",
  "the research register",
  "commits under tools/hpc"
 ],
 "read_against_pass_lines_today": [
  "the detector rerun",
  "the close-pass study",
  "the burn-cadence detector",
  "the error atlas",
  "the thermosphere study"
 ],
 "totals": {
  "jobs": 23,
  "studies_read_against_pass_lines_today": 5,
  "studies_with_jobs": 6,
  "finished": 17,
  "stopped": 6,
  "running_at_end": 0,
  "saving_jobs": 6,
  "node_hours": 13.26
 },
 "pass_line_definition": "A pass line is the result a study's plan named, before the run, as the answer to its question.",
 "studies": [
  {
   "short_name": "the detector rerun",
   "state": "scored; follow-ups owed",
   "provisional": false,
   "pass_line_counts": {
    "met": 1,
    "being read": 1,
    "not met": 2
   },
   "pass_lines": [
    {
     "name": "The published counts come back",
     "status": "not met",
     "reading": "The published counts come back: not met. 22 of 36 quantities fall inside their ranges, so this line is not met. The ranges allow for rows added to the archive during the morning of 20 September.",
     "reason": "22 of 36 quantities fall inside their ranges, so this line is not met."
    },
    {
     "name": "Separation of 10 or more on the SGP4 axis",
     "status": "met",
     "reading": "Separation of 10 or more on the SGP4 axis: met. The separation is 18.212 on the rows to 20 September and 26.848 on all rows to 3 October, so this line is met. Before the rule the figures are 6.9 and 10.399.",
     "reason": "The separation is 18.212 on the rows to 20 September and 26.848 on all rows to 3 October, so this line is met."
    },
    {
     "name": "The SGP4 axis corroborates the inclination by itself",
     "status": "being read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Per-object counts move more than the two halves of a record differ",
     "status": "not met",
     "reading": "R, with a 95% interval from 2,000 object resamples: not met. Not met in all four rows",
     "reason": ""
    }
   ],
   "verdict_today": "R is 0.085 for passive objects and 0.040 for payloads, upper ends 0.098 and 0.058; the axis barely moves per-object counts.",
   "node_hours_last_7_days": 1.29,
   "next": [
    "name the 15 objects behind the failed check against the published counts (11 passive, 4 payload) from an object table as of 20 September, and rerun the check with it"
   ]
  },
  {
   "short_name": "the close-pass study",
   "state": "scored; follow-ups owed",
   "provisional": false,
   "pass_line_counts": {
    "met": 4,
    "not met": 1
   },
   "pass_lines": [
    {
     "name": "A normal error spread covers the truth",
     "status": "not met",
     "reading": "Truth coverage, normal spread: not met. Within one sigma the three directions sit at 0.589, 0.588 and 0.639, inside the 58% to 78% band. Within two they sit at 0.812, 0.781 and 0.865, under 90%.",
     "reason": ""
    },
    {
     "name": "Student-t coverage on held-out objects",
     "status": "met",
     "reading": "Student-t coverage on held-out objects: met. both ways round. The pooled fit gives 1.87 degrees of freedom (1.81 radial, 1.56 along-track, 2.54 cross-track); the two halves give 1.82 and 1.92.",
     "reason": "Below 2 the spread has no finite variance, so sigma here is a scale."
    },
    {
     "name": "Shuffled pairs: summed chance against the count",
     "status": "met",
     "reading": "The summed chance under 1 km must lie inside the 95% Poisson interval of the count under 1 km, on all pairs and on low-orbit pairs with a long axis under 200 m.: met. Met",
     "reason": ""
    },
    {
     "name": "Round integral",
     "status": "met",
     "reading": "Round integral: met. the largest difference from the site's chance was 1.3e-06 against 0.0002. Geometry: met; 99.89% of passes reproduce the record's miss within 10 m.",
     "reason": ""
    },
    {
     "name": "Geometry",
     "status": "met",
     "reading": "Geometry: met. 99.89% of passes reproduce the record's miss within 10 m.",
     "reason": ""
    }
   ],
   "verdict_today": "Normal errors fail at two sigma, Student-t and drawn errors hold; the shuffled-pairs excess comes from passes sharing an object.",
   "node_hours_last_7_days": 0.21,
   "next": [
    "a check of the low-orbit factor on debris or rocket bodies with precise orbits; today 11 objects (five laser spheres, six altimetry satellites) set every non-Starlink low ellipse, along-track factor 13.8"
   ]
  },
  {
   "short_name": "the burn-cadence detector",
   "state": "finished and scored",
   "provisional": false,
   "pass_line_counts": {
    "met": 3,
    "not met": 3
   },
   "pass_lines": [
    {
     "name": "1. Recall of 50 mm/s cross-track burns, cadence minus step at least +0.30",
     "status": "not met",
     "reading": "1. Recall of 50 mm/s cross-track burns, cadence minus step at least +0.30: not met. Not met: +0.0027 at k = 134.477. At the same level the cadence detector finds 0.0464 of 75 mm/s burns, 0.1103 of 100 mm/s and 0.3055 of 200 mm/s;",
     "reason": ""
    },
    {
     "name": "2. Passive control at most 5%, upper bound at most 8%",
     "status": "met",
     "reading": "2. Passive control at most 5%, upper bound at most 8%: met. Met: 49 of 4,408 windows of the test half, 0.0111, Jeffreys interval 0.0083 to 0.0145.",
     "reason": ""
    },
    {
     "name": "3a. The period survives the step shuffle, grid",
     "status": "met",
     "reading": "3. The period survives the step shuffle in at most 10% of declared trains: partly met. On the grid, met: 0.0182 of 2,092 declared trains. On payload windows, not met: 159 of 1,295, 0.1228. On passive ring windows from both halves, 1 of 93.",
     "reason": ""
    },
    {
     "name": "3b. The period survives the step shuffle, payload windows",
     "status": "not met",
     "reading": "3. The period survives the step shuffle in at most 10% of declared trains: partly met. On the grid, met: 0.0182 of 2,092 declared trains. On payload windows, not met: 159 of 1,295, 0.1228. On passive ring windows from both halves, 1 of 93.",
     "reason": ""
    },
    {
     "name": "4. At least 80% of declared trains within 10% of the planted period",
     "status": "not met",
     "reading": "4. At least 80% of declared trains within 10% of the planted period: not met. Not met: 0.7610 of 2,092. The share falls with the cadence, from 0.865 at 7 days to 0.517 at 56 days. Passive ring objects reach 0.969 over 1,451 trains;",
     "reason": ""
    },
    {
     "name": "5. Median recovered over planted size within 0.80 to 1.25",
     "status": "met",
     "reading": "5. Median recovered over planted size within 0.80 to 1.25: met. Met: 0.9741 over 2,092 trains.",
     "reason": ""
    }
   ],
   "verdict_today": "Held to the false-alarm rate of burn-free ring objects, the detector finds almost none of the planted 50 mm/s cross-track burns.",
   "node_hours_last_7_days": 4.61,
   "next": [
    "a declaration level chosen on held-out data that meets pass lines 1 and 2 together: thresholds rebuilt from each window's own resampled residuals, or a level set on the years the recall covers (the 2023 to 2025 passive windows give 80.959, where recall is 0.0302)"
   ]
  },
  {
   "short_name": "the error atlas",
   "state": "scored; follow-ups owed",
   "provisional": true,
   "pass_line_counts": {
    "met": 2,
    "partly met": 2,
    "not met": 2
   },
   "pass_lines": [
    {
     "name": "L1 held-out coverage",
     "status": "partly met",
     "reading": "L1 pooled: met. within one scale 0.655 to 0.742, within two 0.915 to 0.980, both halves L1 medium: not met. 118 objects; within two cross-track 0.983 on one half, every other value inside L1 geosynchronous: not met. 18 objects; within two along-track 0.895 on one half, radial 0.995 on the other L1 low: not met. 12 objects, 6 a half; within two along-track 1.000 both ways, radial 0.829 and 0.891",
     "reason": ""
    },
    {
     "name": "L2 planted errors recovered",
     "status": "partly met",
     "reading": "L2a: met. growth error 0.068 to 0.079; scale spread 0.054 to 0.064 dex; degrees of freedom 1.51, 1.91, 2.98, 24.47 for 1.5, 1.9, 3, 30 L2b: not met. factor recovered 2.0; planted half within two scales 0.830 radial, 0.870 along, 0.945 cross",
     "reason": "Cross-track, coverage of the planted half fell from 0.993 to 0.945 and stayed inside the band, so a doubled cross-track error does not show."
    },
    {
     "name": "L3 factors stable across Septembers",
     "status": "not met",
     "reading": "L3a: not met. geosynchronous 1.35 at most, met; medium 1.73 along and 1.69 cross, not met; low one September only L3b: not met. medium within two along-track 0.871; geosynchronous within one along-track 0.561",
     "reason": ""
    },
    {
     "name": "N1 truth shuffled among objects",
     "status": "not met",
     "reading": "N1: not met. medium radial 0.246 against 0.139 and along 0.192 against 0.084; cross -0.202 against 0.103; low and geosynchronous below their shuffles",
     "reason": ""
    },
    {
     "name": "N2 class labels scrambled",
     "status": "met",
     "reading": "N2: met. 3.07, 3.20 and 2.94 against 2.11, 2.41 and 2.89",
     "reason": ""
    },
    {
     "name": "R the close-pass fit reproduced",
     "status": "met",
     "reading": "R: met. 19 quarters, largest difference 0",
     "reason": ""
    }
   ],
   "verdict_today": "Pooled coverage holds, no single class does, and navigation sets disagree 70% more from October 2025 with no rise in error.",
   "node_hours_last_7_days": 0.25,
   "next": [
    "rebuild the atlas files with factors per class and per era, split at 1 October 2025 (medium along-track 5.6 to 5.9 before, 3.39 after), from the finished fits with no refit, and rerun held-out coverage under them"
   ]
  },
  {
   "short_name": "the thermosphere study",
   "state": "finished and scored",
   "provisional": false,
   "pass_line_counts": {
    "met": 4,
    "not met": 2
   },
   "pass_lines": [
    {
     "name": "P1 quiet agreement",
     "status": "met",
     "reading": "P1, quiet agreement: met. Met in all 15 shells read. From 250 to 600 km, 0.874 to 0.997 of quiet shell-days lie within a factor of 1.5 of the model (line 0.80);",
     "reason": "Each shell's ratio is scaled so that its median on quiet days is 1, so P1 measures the scatter of the ratio around the model's day-to-day shape and says nothing about the absolute level."
    },
    {
     "name": "P2 storm enhancement",
     "status": "not met",
     "reading": "P2, storm enhancement: not met. Not met in any of the 8 shells from 250 to 650 km.",
     "reason": ""
    },
    {
     "name": "P3 planted signal",
     "status": "not met",
     "reading": "P3, planted signal: not met. Not met. From 250 to 600 km the median recovered share of a planted factor of 1.5 is 0.791 to 0.998;",
     "reason": ""
    },
    {
     "name": "N1 storm dates shuffled",
     "status": "met",
     "reading": "N1, storm dates shuffled: met. Met in every shell. The real median rise of recovered density is 1.138 to 1.511 against shuffled 99th percentiles of 1.046 to 1.105.",
     "reason": "This null reads recovered density, which is the ratio times the model, so the model's own storm term passes it."
    },
    {
     "name": "N2 objects scrambled across shells",
     "status": "met",
     "reading": "N2, objects scrambled across shells: met. Met. The log storm response of the ratio falls by 0.0176 per 100 km from 250 to 800 km; 20 scrambles give slopes of -0.0040 to +0.0028.",
     "reason": ""
    },
    {
     "name": "R1 the raw sets",
     "status": "met",
     "reading": "R1, the raw sets: met. Met as read on 3 October: all five objects at 370 to 538 km fall 1.77 to 3.89 times faster on 10 and 11 May 2024 than in the six days before, at 4.9 to 6.7 standard errors.",
     "reason": ""
    }
   ],
   "verdict_today": "Below 600 km the catalog sees storms beyond the model; above 650 km the recovered storm rise is the model's own.",
   "node_hours_last_7_days": 1.4,
   "next": [
    "the comparison with the published catalog-derived density record (Narayanan, Sicoli and Mehta, arXiv 2604.24646) and with Gondelach and Linares 2020: yearly quiet-day ratio and storm rise by shell"
   ]
  },
  {
   "short_name": "the two full-depth screen runs (authority and deep)",
   "state": "finished and scored",
   "provisional": false,
   "pass_line_counts": {
    "met": 10,
    "not met": 1
   },
   "pass_lines": [
    {
     "name": "A1 messaged passes found",
     "status": "met",
     "reading": "490 of 490, line 97 percent",
     "reason": ""
    },
    {
     "name": "A3 passes the authority would have dropped",
     "status": "met",
     "reading": "0 of 10,157, line at most 2 percent",
     "reason": ""
    },
    {
     "name": "N1 low-orbit null",
     "status": "met",
     "reading": "0.090",
     "reason": ""
    },
    {
     "name": "N2 low-orbit null",
     "status": "met",
     "reading": "0.172",
     "reason": ""
    },
    {
     "name": "Brute 10-second check",
     "status": "met",
     "reading": "99 percent",
     "reason": ""
    },
    {
     "name": "Against the September record",
     "status": "met",
     "reading": "959,029 to 959,001, ratio 1.00003",
     "reason": ""
    },
    {
     "name": "D1, the 60-second step",
     "status": "met",
     "reading": "Met. Of 11,956 passes under 10 km in the 10-second screen on 12 days, the 60-second screen holds 11,915 within 60 s (0.9966, 95% interval 0.9954 to 0.9975; line 0.99 per run). By region the summary gives medium 33 of 53 and belt 94 of 111.",
     "reason": ""
    },
    {
     "name": "D2, measured over shuffled",
     "status": "met",
     "reading": "Met. Stretched passes under 10 km give 0.9982 (0.9954 to 1.0012) on 1,006 days, inside 0.95 to 1.05, and 0.9912 (0.9816 to 1.0005) under 3 km. The line covers stretched orbits only.",
     "reason": ""
    },
    {
     "name": "D3, the spread over neighboring sets",
     "status": "not met",
     "reading": "Not met in any region at either line. The spread is the greatest minus the least count of passes under the line over every combination of each object's sets within three days, divided by the nearest-set count; the line is 0.40.",
     "reason": ""
    },
    {
     "name": "D4, the 1 October record",
     "status": "met",
     "reading": "Met. Over 33 whole months, stretched passes under 10 km number 990,176 against 989,641 (ratio 1.00054), and 88,461 against 88,413 under 3 km; medium gives 4,910 against 4,908 under 10 km and 518 against 518 under 3 km.",
     "reason": ""
    },
    {
     "name": "R1, a second propagator",
     "status": "met",
     "reading": "Met in all three regions. The ten closest passes of each region, recomputed every 0.1 s from the same two element sets by a second, independent implementation of SGP4, agree within 0.0014 km in all 30.",
     "reason": ""
    }
   ],
   "verdict_today": null,
   "node_hours_last_7_days": 5.5,
   "next": [
    "the authority comparison outside the 37 days the public message store holds (needs a longer message archive)",
    "the 88 and 443 extra stretched passes of January 2024 and September 2026 against the 1 October record (sets added to the archive after 1 October is the first guess)"
   ]
  },
  {
   "short_name": "the reentry forecast",
   "state": "scored; follow-ups owed",
   "provisional": false,
   "pass_line_counts": {
    "met": 3,
    "not met": 6
   },
   "pass_lines": [
    {
     "name": "NP1 density error against the model",
     "status": "met",
     "reading": "NP1 density error against the model: met. 0.79 all days, 0.85 storm days",
     "reason": ""
    },
    {
     "name": "NP2 density error against persistence",
     "status": "met",
     "reading": "NP2 density error against persistence: met. 0.93 at 6 h, 0.81 at 24 h, 0.78 at 72 h",
     "reason": ""
    },
    {
     "name": "NP3 density intervals hold",
     "status": "not met",
     "reading": "NP3 density intervals hold: not met. 0.52, 0.48, 0.43 against 0.75 to 0.85",
     "reason": ""
    },
    {
     "name": "NN1 the catalog adds skill the shuffled catalog does not",
     "status": "met",
     "reading": "NN1 catalog adds skill the shuffled catalog does not: met. 0.059 against -0.009",
     "reason": ""
    },
    {
     "name": "NW1 solar wind helps on storm days",
     "status": "not met",
     "reading": "NW1 solar wind helps on storm days: not met. 0.958 against 0.95",
     "reason": ""
    },
    {
     "name": "RP1 reentry windows hold",
     "status": "not met",
     "reading": "RP1 reentry windows hold: not met. 0.67 to 0.74 against 0.75 to 0.85",
     "reason": ""
    },
    {
     "name": "RP2 error against the official messages",
     "status": "not met",
     "reading": "RP2 error against the official messages: not met. 6.2 h against 3.3 h, 63 messages, 13 objects",
     "reason": ""
    },
    {
     "name": "RP3 shuffled density is worse",
     "status": "not met",
     "reading": "RP3 shuffled density is worse: not met. 1.10 times, 4 of 10 draws",
     "reason": ""
    },
    {
     "name": "RP4 forecast-fed beats model-fed",
     "status": "not met",
     "reading": "RP4 forecast-fed beats model-fed: not met. 0.99 against 0.90",
     "reason": ""
    }
   ],
   "verdict_today": null,
   "node_hours_last_7_days": 0.24,
   "next": [
    "refit the drag term with the forecast density in the loop and score again (cheap: the chain runs in minutes)"
   ]
  },
  {
   "short_name": "the fuel gauge",
   "state": "finished and scored",
   "provisional": false,
   "pass_line_counts": {
    "met": 2,
    "not met": 7
   },
   "pass_lines": [
    {
     "name": "P1a engine type, bus families held out",
     "status": "not met",
     "reading": "P1a engine type, bus families held out: not met. 0.70 against 0.75",
     "reason": ""
    },
    {
     "name": "P1b engine type, operators held out",
     "status": "met",
     "reading": "P1b engine type, operators held out: met. 0.82 against 0.70",
     "reason": ""
    },
    {
     "name": "N1 bus-shuffled null",
     "status": "not met",
     "reading": "N1 bus-shuffled null: not met. 0.64, gap 0.06 against 0.10",
     "reason": ""
    },
    {
     "name": "P2 delta-v budget within a factor of 2",
     "status": "not met",
     "reading": "P2 delta-v budget within a factor of 2: not met. 67 percent against 70",
     "reason": ""
    },
    {
     "name": "P3 retirement forecast inside its band",
     "status": "not met",
     "reading": "P3 retirement forecast inside its band: not met. 3 of 11 years against 8",
     "reason": ""
    },
    {
     "name": "P4 fuel adds skill over age",
     "status": "not met",
     "reading": "P4 fuel adds skill over age: not met. 0.004 against 0.02",
     "reason": ""
    },
    {
     "name": "N3 fuel shuffled adds none",
     "status": "not met",
     "reading": "N3 fuel shuffled adds none: not met. 0.0052 against 0.005",
     "reason": ""
    },
    {
     "name": "R1 planted burns recovered",
     "status": "met",
     "reading": "R1 planted burns recovered: met. GEO 100 percent, LEO 92 percent",
     "reason": ""
    },
    {
     "name": "R2 payload burn rate over the passive floor",
     "status": "not met",
     "reading": "R2 payload burn rate over the passive floor: not met. GEO 17.8, LEO-mid 2.5, others under 0.2",
     "reason": ""
    }
   ],
   "verdict_today": null,
   "node_hours_last_7_days": 0.09,
   "next": [
    "a belt-only gauge with a corrected dry mass (GCAT dry mass sometimes means mass on station)"
   ]
  },
  {
   "short_name": "the avoidance map",
   "state": "finished and scored",
   "provisional": false,
   "pass_line_counts": {
    "met": 1,
    "not met": 9
   },
   "pass_lines": [
    {
     "name": "P1 placebo day at most a third of the real rate",
     "status": "not met",
     "reading": "P1 placebo day at most a third of the real rate: not met. 0.82",
     "reason": ""
    },
    {
     "name": "P2 placebo at most a third, fleet by fleet",
     "status": "not met",
     "reading": "P2 placebo at most a third, fleet by fleet: not met. 0 of 40 fleets",
     "reason": ""
    },
    {
     "name": "P3 objects that cannot burn at most a third",
     "status": "not met",
     "reading": "P3 objects that cannot burn at most a third: not met. 0.58",
     "reason": ""
    },
    {
     "name": "P4 recall of SpaceX planned burns over 100 m",
     "status": "not met",
     "reading": "P4 recall of SpaceX planned burns over 100 m: not met. 21 percent against 50",
     "reason": ""
    },
    {
     "name": "P4b the counted calendar's recall",
     "status": "not met",
     "reading": "P4b the counted calendar's recall: not met. 14 percent",
     "reason": ""
    },
    {
     "name": "P5 Starlink count against the public figure",
     "status": "not met",
     "reading": "P5 Starlink count against the public figure: not met. 0.51, 0.31, 0.18 of reported",
     "reason": ""
    },
    {
     "name": "P6 planted 300 m dodges caught",
     "status": "met",
     "reading": "P6 planted 300 m dodges caught: met. 95 percent",
     "reason": ""
    },
    {
     "name": "P7 held-out-fleet classifier",
     "status": "not met",
     "reading": "P7 held-out-fleet classifier: not met. lowest AUC 0.56 against 0.75",
     "reason": ""
    },
    {
     "name": "P8 both parties moved, over chance",
     "status": "not met",
     "reading": "P8 both parties moved, over chance: not met. 1.23 times against 2",
     "reason": ""
    },
    {
     "name": "P9 burns before recorded passes, over shifted",
     "status": "not met",
     "reading": "P9 burns before recorded passes, over shifted: not met. 1.15 times against 2",
     "reason": ""
    }
   ],
   "verdict_today": null,
   "node_hours_last_7_days": 1.75,
   "next": [
    "a who-moves-for-whom reading on the fleets whose own ephemerides are public (SpaceX), with the ephemeris as truth instead of the catalog"
   ]
  },
  {
   "short_name": "the intercept forecast",
   "state": "scored; follow-ups owed",
   "provisional": false,
   "pass_line_counts": {
    "not yet read": 8
   },
   "pass_lines": [
    {
     "name": "Line 0 the minute search finds the 10-second passes",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Line 3 recall on recorded belt approaches",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Line 1 belt drifts stand out",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Line 1 phasing stands out",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Line 1 plane changes stand out",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Line 2 station-keeping near chance",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Line 2 raises and lowerings near chance",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    },
    {
     "name": "Held belt satellites, no excess expected",
     "status": "not yet read",
     "reading": "",
     "reason": ""
    }
   ],
   "verdict_today": null,
   "node_hours_last_7_days": 0.67,
   "next": [
    "a null matched to held belt satellites' slot spacing before the 3.5x excess is read"
   ]
  }
 ],
 "jobs": [
  {
   "job": "3425081",
   "study": "the full-depth screen",
   "part": "authority",
   "state": "finished",
   "started": "2026-10-03T19:52:24Z",
   "ended": "2026-10-03T23:43:39Z",
   "run_hours": 3.85,
   "node_hours": 3.85,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3425082",
   "study": "the full-depth screen",
   "part": "deep",
   "state": "finished",
   "started": "2026-10-03T19:52:24Z",
   "ended": "2026-10-03T20:37:53Z",
   "run_hours": 0.76,
   "node_hours": 0.76,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3425080",
   "study": "the full-depth screen",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T19:29:04Z",
   "ended": "2026-10-03T19:51:49Z",
   "run_hours": 0.38,
   "node_hours": 0.38,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423719",
   "study": "the thermosphere study",
   "part": "main run",
   "state": "finished",
   "started": "2026-10-03T17:50:19Z",
   "ended": "2026-10-03T19:09:48Z",
   "run_hours": 1.32,
   "node_hours": 1.32,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423711",
   "study": "the error atlas",
   "part": "main run",
   "state": "finished",
   "started": "2026-10-03T17:46:18Z",
   "ended": "2026-10-03T17:59:54Z",
   "run_hours": 0.23,
   "node_hours": 0.23,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423718",
   "study": "the thermosphere study",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T17:45:18Z",
   "ended": "2026-10-03T17:49:53Z",
   "run_hours": 0.08,
   "node_hours": 0.08,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423710",
   "study": "the error atlas",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T17:44:48Z",
   "ended": "2026-10-03T17:45:59Z",
   "run_hours": 0.02,
   "node_hours": 0.02,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423702",
   "study": "the full-depth screen",
   "part": "timing test",
   "state": "stopped at its time limit",
   "started": "2026-10-03T17:43:47Z",
   "ended": "2026-10-03T18:14:14Z",
   "run_hours": 0.51,
   "node_hours": 0.51,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423694",
   "study": "the detector rerun",
   "part": "split",
   "state": "finished",
   "started": "2026-10-03T17:43:17Z",
   "ended": "2026-10-03T17:58:30Z",
   "run_hours": 0.25,
   "node_hours": 0.25,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3423693",
   "study": "the close-pass study",
   "part": "null test",
   "state": "finished",
   "started": "2026-10-03T17:43:17Z",
   "ended": "2026-10-03T17:44:25Z",
   "run_hours": 0.02,
   "node_hours": 0.02,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3409003",
   "study": "the detector rerun",
   "part": "main run",
   "state": "finished",
   "started": "2026-10-03T04:56:57Z",
   "ended": "2026-10-03T05:22:15Z",
   "run_hours": 0.42,
   "node_hours": 0.42,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3409002",
   "study": "the detector rerun",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T04:23:28Z",
   "ended": "2026-10-03T04:30:04Z",
   "run_hours": 0.11,
   "node_hours": 0.11,
   "machine": "a node with 128 CPU cores, four A100 graphics processors and 503 GB of memory"
  },
  {
   "job": "3408504",
   "study": "the burn-cadence detector",
   "part": "geostationary",
   "state": "finished",
   "started": "2026-10-03T03:59:48Z",
   "ended": "2026-10-03T07:36:35Z",
   "run_hours": 3.61,
   "node_hours": 3.61,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3408503",
   "study": "the burn-cadence detector",
   "part": "recall",
   "state": "finished",
   "started": "2026-10-03T03:59:48Z",
   "ended": "2026-10-03T04:57:01Z",
   "run_hours": 0.95,
   "node_hours": 0.95,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3408502",
   "study": "the burn-cadence detector",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T03:56:11Z",
   "ended": "2026-10-03T03:59:25Z",
   "run_hours": 0.05,
   "node_hours": 0.05,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3408400",
   "study": "the close-pass study",
   "part": "main run",
   "state": "finished",
   "started": "2026-10-03T03:53:48Z",
   "ended": "2026-10-03T03:54:39Z",
   "run_hours": 0.01,
   "node_hours": 0.01,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3408399",
   "study": "the close-pass study",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T03:50:58Z",
   "ended": "2026-10-03T03:53:17Z",
   "run_hours": 0.04,
   "node_hours": 0.04,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3408382",
   "study": "the detector rerun",
   "part": "timing test",
   "state": "stopped at its time limit",
   "started": "2026-10-03T03:50:15Z",
   "ended": "2026-10-03T04:20:20Z",
   "run_hours": 0.5,
   "node_hours": 0.5,
   "machine": "a node with 128 CPU cores, four A100 graphics processors and 503 GB of memory"
  },
  {
   "job": "3407715",
   "study": "the close-pass study",
   "part": "first submission of the main run",
   "state": "stopped with an error",
   "started": "2026-10-03T03:22:14Z",
   "ended": "2026-10-03T03:28:12Z",
   "run_hours": 0.1,
   "node_hours": 0.1,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3407739",
   "study": "the burn-cadence detector",
   "part": "first submission of the geostationary",
   "state": "stopped with an error",
   "started": "2026-10-03T03:21:13Z",
   "ended": "2026-10-03T03:21:20Z",
   "run_hours": 0.0,
   "node_hours": 0.0,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3407738",
   "study": "the burn-cadence detector",
   "part": "first submission of the recall",
   "state": "stopped with an error",
   "started": "2026-10-03T03:21:13Z",
   "ended": "2026-10-03T03:21:20Z",
   "run_hours": 0.0,
   "node_hours": 0.0,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  },
  {
   "job": "3407723",
   "study": "the detector rerun",
   "part": "first submission of the main run",
   "state": "stopped with an error",
   "started": "2026-10-03T03:20:13Z",
   "ended": "2026-10-03T03:20:55Z",
   "run_hours": 0.01,
   "node_hours": 0.01,
   "machine": "a node with 128 CPU cores, four A100 graphics processors and 503 GB of memory"
  },
  {
   "job": "3407714",
   "study": "the close-pass study",
   "part": "timing test",
   "state": "finished",
   "started": "2026-10-03T03:19:24Z",
   "ended": "2026-10-03T03:21:39Z",
   "run_hours": 0.04,
   "node_hours": 0.04,
   "machine": "a node with 128 CPU cores and 251 GB of memory"
  }
 ],
 "failures": [
  {
   "job": "3423702",
   "study": "the full-depth screen",
   "part": "timing test",
   "state": "stopped at its time limit",
   "fix": [
    {
     "commit": "552813b4",
     "change": "Let the screen timing job stop itself and write its report",
     "why": "The stop handler printed from inside a signal while the main thread was writing, which raised an error and left the job running to its limit. The handler now only sets a flag"
    }
   ]
  },
  {
   "job": "3408382",
   "study": "the detector rerun",
   "part": "timing test",
   "state": "stopped at its time limit",
   "fix": [
    {
     "commit": "48e9dd84",
     "change": "Count the node cores from the scheduler in the detector rerun job",
     "why": "the core count the job read back was the single-thread setting the job exports for its math libraries, so the job ran one worker on one GPU. The worker count now comes from the scheduler core count."
    }
   ]
  },
  {
   "job": "3407715",
   "study": "the close-pass study",
   "part": "first submission of the main run",
   "state": "stopped with an error",
   "fix": [
    {
     "commit": "c63cb00b",
     "change": "Skip a pass with no shuffled miss distance in the close-pass summary",
     "why": "The summary step compared every pass's shuffled miss distance with 1 km; a pass whose shuffled geometry gives no finite distance has no value there and the comparison raised, after the passes themselves had all been computed."
    }
   ]
  },
  {
   "job": "3407739",
   "study": "the burn-cadence detector",
   "part": "first submission of the geostationary",
   "state": "stopped with an error",
   "fix": [
    {
     "commit": "000a6b0f",
     "change": "it now builds on the version they have",
     "why": "the environment was built on an interpreter version the compute nodes lack"
    }
   ]
  },
  {
   "job": "3407738",
   "study": "the burn-cadence detector",
   "part": "first submission of the recall",
   "state": "stopped with an error",
   "fix": [
    {
     "commit": "000a6b0f",
     "change": "it now builds on the version they have",
     "why": "the environment was built on an interpreter version the compute nodes lack"
    }
   ]
  },
  {
   "job": "3407723",
   "study": "the detector rerun",
   "part": "first submission of the main run",
   "state": "stopped with an error",
   "fix": [
    {
     "commit": "000a6b0f",
     "change": "it now builds on the version they have",
     "why": "the environment was built on an interpreter version the compute nodes lack"
    }
   ]
  }
 ],
 "timing_estimates": [
  {
   "study": "the error atlas",
   "run": "orbit-atlas",
   "estimate_hours": 0.357,
   "actual_hours": 0.214,
   "measured_part": "whole run"
  },
  {
   "study": "the burn-cadence detector",
   "run": "burn-cadence-recall",
   "estimate_hours": 3.64,
   "actual_hours": 0.784,
   "measured_part": "whole run"
  },
  {
   "study": "the burn-cadence detector",
   "run": "burn-cadence-geo",
   "estimate_hours": 3.13,
   "actual_hours": 3.607,
   "measured_part": "whole run"
  },
  {
   "study": "the close-pass study",
   "run": "orbit-passcov",
   "estimate_hours": 0.062,
   "actual_hours": 0.098,
   "measured_part": "whole run"
  },
  {
   "study": "the close-pass study",
   "run": "close-pass-chances",
   "estimate_hours": 0.064,
   "actual_hours": 0.011,
   "measured_part": "whole run"
  },
  {
   "study": "the full-depth screen",
   "run": "orbit-screen-authority",
   "estimate_hours": 1.83,
   "actual_hours": 3.817,
   "measured_part": "whole run"
  },
  {
   "study": "the full-depth screen",
   "run": "orbit-screen-deep",
   "estimate_hours": 0.77,
   "actual_hours": 0.751,
   "measured_part": "whole run"
  },
  {
   "study": "the detector rerun",
   "run": "orbit-detector-rerun",
   "estimate_hours": 0.27,
   "actual_hours": 0.251,
   "measured_part": "main phase"
  },
  {
   "study": "the thermosphere study",
   "run": "orbit-thermo",
   "estimate_hours": 0.85,
   "actual_hours": 1.307,
   "measured_part": "whole run"
  }
 ],
 "commits": [
  {
   "id": "d580617b",
   "subject": "Open the reentry nowcast in the notebook and fill its manifest"
  },
  {
   "id": "c0b6ce93",
   "subject": "Add the reentry nowcast package and its study plan"
  },
  {
   "id": "e66976ed",
   "subject": "Add a gather script to each orbit package for the training page"
  },
  {
   "id": "3e8e1feb",
   "subject": "Add the job that puts the orbit results on tape"
  },
  {
   "id": "3ae2d238",
   "subject": "Add authorship headers to the orbit-screen scripts"
  },
  {
   "id": "c970a784",
   "subject": "Add authorship headers to the orbit-thermo scripts"
  },
  {
   "id": "aa57b0af",
   "subject": "Add authorship headers to the orbit-atlas scripts"
  },
  {
   "id": "aab54e21",
   "subject": "Add authorship headers to the orbit-cadence scripts"
  },
  {
   "id": "83d8e1a4",
   "subject": "Add authorship headers to the orbit-passcov scripts"
  },
  {
   "id": "307b3924",
   "subject": "Add authorship headers to the orbit-sgp4 scripts"
  },
  {
   "id": "40190307",
   "subject": "Keep the deep close-pass run summary, tables and figures"
  },
  {
   "id": "e3cb26da",
   "subject": "Keep the thermosphere run summary, tables and figures"
  },
  {
   "id": "c037f474",
   "subject": "Break the split-half flags down by the year each record is split"
  },
  {
   "id": "c81c6cb3",
   "subject": "Keep the returned shuffle-on-objects and split-halves results"
  },
  {
   "id": "552813b4",
   "subject": "Let the screen timing job stop itself and write its report"
  },
  {
   "id": "50b05aa6",
   "subject": "Give the full-depth screen runs room for a slow day"
  },
  {
   "id": "fec2eab8",
   "subject": "Use the deep run's medium-screen times in the authority estimate"
  },
  {
   "id": "55682ae8",
   "subject": "Open the full-depth screen entries and set the run limits"
  },
  {
   "id": "752913fd",
   "subject": "Open the thermosphere density study and describe its package"
  },
  {
   "id": "225f7e62",
   "subject": "Add the thermosphere density study for the supercomputer run"
  },
  {
   "id": "f56a6cce",
   "subject": "Name the sending package when the atlas inputs are missing"
  },
  {
   "id": "6ee31ce3",
   "subject": "Join the timing rows with a plus and compare whole months only"
  },
  {
   "id": "2349819c",
   "subject": "Add the error atlas of the public catalog for the cluster"
  },
  {
   "id": "59ad5aac",
   "subject": "Add the full-depth close-pass screen package for the cluster"
  },
  {
   "id": "cc40707f",
   "subject": "Record the home checks of the SGP4 axis rerun"
  },
  {
   "id": "a583b659",
   "subject": "Rebuild the close-pass chance code archive with the object shuffle"
  },
  {
   "id": "8709345f",
   "subject": "Add a shuffle on objects to the close-pass chance null"
  },
  {
   "id": "927dca46",
   "subject": "Add the halves run and home checks to the SGP4 axis package"
  },
  {
   "id": "c09aab6d",
   "subject": "Add the scoring of the detector rerun on the SGP4 semi-major axis"
  },
  {
   "id": "a4e3cda6",
   "subject": "Skip windows with no plane fit in the cadence recall summary"
  },
  {
   "id": "8676e930",
   "subject": "Run the detector rerun on a CPU node after the GPU-CPU timing check"
  },
  {
   "id": "48e9dd84",
   "subject": "Count the node cores from the scheduler in the detector rerun job"
  },
  {
   "id": "9ed5297f",
   "subject": "Let the result pull scripts use the Windows login adapters"
  },
  {
   "id": "f714331b",
   "subject": "Add the cadence job scripts and the detector smoke-test records"
  },
  {
   "id": "a2f600f0",
   "subject": "Bake the cluster login into the result pull scripts"
  },
  {
   "id": "d6fec2bf",
   "subject": "Pin the cadence environment to what the cluster Python can take"
  },
  {
   "id": "3e6f0d13",
   "subject": "Give the orbit HPC jobs plain names"
  },
  {
   "id": "7076b53c",
   "subject": "Run the orbit HPC jobs on the center python and CUDA modules"
  },
  {
   "id": "c63cb00b",
   "subject": "Skip a pass with no shuffled miss distance in the close-pass summary"
  },
  {
   "id": "000a6b0f",
   "subject": "Run the orbit HPC environments on python 3.11 and time before running"
  },
  {
   "id": "b8906887",
   "subject": "Use US spelling in the cadence package README"
  },
  {
   "id": "0b32baa3",
   "subject": "Add the design for the cadence detector study on the supercomputer"
  },
  {
   "id": "99b890d8",
   "subject": "Add the package README and let the timing job take its worker counts"
  },
  {
   "id": "850531cc",
   "subject": "Add a cadence detector for burn trains, with its the supercomputer package"
  },
  {
   "id": "2bbd4712",
   "subject": "Move the orbit HPC packages under orbit_dynamics and bake in the login"
  },
  {
   "id": "9a10e469",
   "subject": "Add Student-t and empirical variants to the close-pass ellipsoid run"
  },
  {
   "id": "b70d2a9c",
   "subject": "Add the run guide and manifest of the close-pass ellipsoid package"
  },
  {
   "id": "c39a066d",
   "subject": "Package close-pass chances from each object's error ellipsoid"
  },
  {
   "id": "e8803e08",
   "subject": "Package the orbit detector rerun on the SGP4 axis for the supercomputer"
  }
 ]
}