@essrt/physics 5.0.0 → 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -83,7 +83,7 @@ day lengths), `cardinal` (solstice/equinox JD, RA, year length), `moon`
83
83
  JD(UT) axis — ecliptic longitude, latitude and distance from the shared
84
84
  Meeus series over framework-native arguments), `eclipse` (geocentric
85
85
  solar/lunar eclipse search over a JD window, greatest-eclipse convention),
86
- `climate` (the L1 orbital-forcing formula) and `planets` (the Fibonacci-law
86
+ `climate` (the L1 orbital-forcing formula) and `planets` (the retired integer-law
87
87
  records and orientation at epoch). Validation targets are refused as
88
88
  inputs — a counterfactual cannot move the goalposts it is judged by.
89
89
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@essrt/physics",
3
- "version": "5.0.0",
3
+ "version": "6.0.1",
4
4
  "description": "ESSRT (Expanding Solar System Resonance Theory) physics core — pure, injectable-constants, no I/O, no globals, no DOM. The complete model incl. fitted coefficients; every published version immutably ships one recorded model identity.",
5
5
  "essrt": {
6
6
  "modelVersion": "v14.0",
@@ -2,7 +2,7 @@
2
2
  // The fitted coefficients' shapes for TypeScript consumers (§2g); values live
3
3
  // in coefficients.js, emitted VERBATIM from fitted-coefficients.json.
4
4
 
5
- export declare const COEFFICIENTS_HASH: "b8b18424a3435e20";
5
+ export declare const COEFFICIENTS_HASH: "3f803b0a4e2b0b3c";
6
6
 
7
7
  export declare const FITTED_COEFFICIENTS: {
8
8
  readonly ANOMALISTIC_YEAR_HARMONICS: Array<[number, number, number]>;
@@ -17,7 +17,7 @@
17
17
  */
18
18
 
19
19
  /** @type {string} */
20
- export const COEFFICIENTS_HASH = "b8b18424a3435e20";
20
+ export const COEFFICIENTS_HASH = "3f803b0a4e2b0b3c";
21
21
 
22
22
  /** @type {Readonly<Record<string, unknown>>} */
23
23
  export const FITTED_COEFFICIENTS = Object.freeze({
@@ -30,8 +30,8 @@ export const FITTED_COEFFICIENTS = Object.freeze({
30
30
  CARDINAL_POINT_HARMONICS: {"SS":[[2,0.00019074627919745215,0.001846794615677533],[3,0.0010265145244583225,0.0043840460005218325],[4,0.002526128776728362,0.008375021703812054],[5,-0.0011069332490108229,0.012324109385974022],[6,0.007094578245092559,0.015667625418200094],[7,0.010686309079094989,0.0185313591723446],[8,0.03586796496483462,0.023547905805302635],[9,0.015287974235736192,0.022163372436773247],[10,0.022980328947629962,0.022021587197848337],[11,0.012899795293545211,0.02098223109254824],[12,0.017883662279872793,0.018493096609363973],[13,-0.0045440747624714214,0.01741190698279517],[14,0.013789437568983534,0.011873130332722588],[15,0.010964159378377667,0.009941187945739569],[17,0.005645715364680436,0.0042073817953086155],[18,0.0024733280239884413,0.0020972134379535234],[19,0.024866655437355435,0.0046352132558053925],[22,-0.00869922958418533,-0.0010757941164320716],[23,-0.0034215663862460833,-0.0004700706289265501],[24,-0.026005575742983175,-0.002800162074471919],[29,0.00017086972207340387,-0.0000582854271329339],[40,0.0005588580339911261,0.0000254216207189192],[48,-0.00007234357535293527,-0.00003686344122889431]],"WS":[[2,-0.0004989140546949406,-0.0018350814832171964],[3,-0.0016341069568395084,-0.00510289055610792],[4,-0.0032739184182501145,-0.008165192231942483],[5,-0.0005391066276084737,-0.011882131189132047],[6,-0.00872776244510475,-0.01567036116059382],[7,-0.011784996503526426,-0.018129207809220182],[8,-0.03744206348154754,-0.018059244727299847],[9,-0.017182585604028827,-0.021991287691335213],[10,-0.024122928492842553,-0.02176201142176927],[11,-0.013659720355224142,-0.020545322472653445],[12,-0.018923801526262652,-0.0185070119731498],[13,0.003530725468763476,-0.017355995459789327],[14,-0.014762978190754594,-0.013187189767466686],[15,-0.011544590874895946,-0.009107845185292916],[17,-0.005966572736789791,-0.00412466882794922],[18,-0.0027742295722775192,-0.0020392121584988073],[19,-0.02523984042399513,-0.004793952431908256],[22,0.008834012221602267,0.0011327995685451986],[23,0.0034132605180939354,0.0004700335641851234],[24,0.025510312697159577,0.0029287196787355463],[29,0.0005151631470199286,0.00009951064466940728],[40,0.000027464271754669996,0.00006285312584624933],[48,0.00006379772144372027,0.00003197567351223772]],"VE":[[2,-0.00019952708787155152,0.009159043231355395],[3,-0.00035291171597678575,0.023169764820974357],[4,-0.00039896094897799635,0.04095230289116614],[5,-0.0008221605217068593,0.05433982061684068],[6,-0.0006712127673434827,0.07742966443388151],[7,0.00011442192510701826,0.09293770685600984],[8,-0.0002661755052129615,0.12863325085251387],[9,-0.00041508060076769906,0.10865974862396556],[10,0.0002520499043467527,0.11416535065696436],[11,0.00054119443919866,0.09778031480265961],[12,0.0006735771426620052,0.09321883266997665],[13,0.0009351612732467796,0.06560273135849437],[14,0.0008838981412524076,0.06527596355229431],[15,0.0006099281371762255,0.04826471229078941],[17,0.0004057002455308585,0.02218558958739785],[18,0.00045834220397007844,0.011611660186921282],[19,-0.0018917889992956698,0.03523806622409782],[22,0.0009390432382772954,-0.010080977228532621],[23,0.00028773481672413406,-0.004485976925967945],[24,0.0031241661887545283,-0.026228337729427842],[29,-0.00035232265695671404,-0.0003519358007459566],[40,-0.0003764287824488728,0.00014633143084755303],[48,0.00007747021591742314,0.0001465300631623245]],"AE":[[2,-0.00010824785334410612,-0.009247538368383153],[3,-0.00023591423388360578,-0.024098710851626178],[4,-0.00020247508888146084,-0.04117423206334441],[5,-0.0005255410481724471,-0.054510816503674495],[6,-0.0004563735641338332,-0.07815159743317031],[7,-0.0004952892640850401,-0.09350728116016419],[8,-0.0002668549456250444,-0.12425491749174922],[9,-0.00029051816212611513,-0.10946192086176067],[10,-0.000017834434589800384,-0.11477673278989182],[11,0.00020018910095003764,-0.09807236467847745],[12,-0.00013391111978996052,-0.09350729249271804],[13,-0.00011890649348415693,-0.06543267950206465],[14,-0.00019164354848590697,-0.06360943091260718],[15,-0.00010397398441494869,-0.04927444964548529],[17,0.000020260067196827166,-0.02232379177414511],[18,-0.00015324907637277176,-0.011715127664253238],[19,0.0021165699939661503,-0.035608703417754406],[22,-0.0007166449988416733,0.010062350586977142],[23,-0.0002647101151457455,0.004489524435291371],[24,-0.002486575741640163,0.026416456671899024],[29,-0.0002769818029233186,0.00029451375490478424],[40,-0.00019578321681994396,-0.00023792013061299245],[48,-0.00007468177159512694,-0.0001421804009572729]]},
31
31
  CARDINAL_POINT_JOINT_TERMS: {"quadratureDeg":{"SS":0,"AE":90,"WS":180,"VE":270},"terms":[{"order":1,"div":20,"sin":0.0016771275311909886,"cos":-0.00041813783815664496},{"order":1,"div":21,"sin":-0.0025205755239927612,"cos":0.00009368344420223599},{"order":1,"div":25,"sin":0.0024054283321803182,"cos":0.00003503075204387585},{"order":1,"div":26,"sin":0.0015302808680711835,"cos":0.00017832270496523676},{"order":1,"div":27,"sin":-0.0038811133853044457,"cos":0.0007121557876018065},{"order":1,"div":28,"sin":0.0005651060475270461,"cos":0.00017412812743155704},{"order":1,"div":30,"sin":0.00011383535837284039,"cos":-0.00002477303744356703},{"order":1,"div":31,"sin":0.00029715364615484765,"cos":-0.00016152000289620274},{"order":1,"div":33,"sin":0.00020372916872406983,"cos":-0.00021173139769761217},{"order":1,"div":34,"sin":0.00011851351695640948,"cos":-0.00015323022800234513},{"order":1,"div":35,"sin":0.00002654595488880653,"cos":-0.000042921513254256815},{"order":1,"div":36,"sin":-0.000074961272761237,"cos":0.000036254894751470854},{"order":1,"div":37,"sin":-0.00013122014050225806,"cos":0.00010802896696623751},{"order":2,"div":20,"sin":0.00008434754405874156,"cos":-0.000023891371645867193},{"order":2,"div":21,"sin":-0.00006573340650300402,"cos":-0.000017146161205848304},{"order":2,"div":25,"sin":-0.000022451423978288386,"cos":0.000030143251896967585},{"order":2,"div":26,"sin":0.000098977891926442,"cos":0.000033919340351085706},{"order":2,"div":27,"sin":-0.00014644792494216237,"cos":0.000053246150285688724},{"order":2,"div":28,"sin":-0.0000330455209671476,"cos":0.00004518454360945509},{"order":2,"div":30,"sin":-0.00003714576936944073,"cos":0.000012923613530561346},{"order":2,"div":31,"sin":-0.00005631838349090962,"cos":-0.000008174044204650133},{"order":2,"div":33,"sin":-0.00004660734568785599,"cos":-0.00003431349008624705},{"order":2,"div":34,"sin":-0.00006486722344727517,"cos":-0.000029224924218984035},{"order":2,"div":35,"sin":0.00016003453894284216,"cos":-0.000055668711336672694},{"order":2,"div":36,"sin":-0.00003665803090673476,"cos":-0.00001458754814584877},{"order":2,"div":37,"sin":0.00010587827321405822,"cos":-0.00002483904832714821}],"note":"phase = order*lambda_X - 2*pi*div*cycles, self-corrected at 2000; counter-rotating — see plan §10g"},
32
32
  CLIMATE_FORMULA_COEFFS: {"config":{"L1_lines":[{"family":"climatic precession","label":"p+g2","arcsecPerYr":68.20533085217915,"periodKyr":19.001447303419877,"relAmp":0.6717512938116206},{"family":"climatic precession","label":"p+g3","arcsecPerYr":67.65725935066226,"periodKyr":19.155372423274404,"relAmp":0.4607842722501143},{"family":"climatic precession","label":"p+g1","arcsecPerYr":57.74073678329907,"periodKyr":22.445158690369446,"relAmp":0.8620468725902352},{"family":"climatic precession","label":"p+g4","arcsecPerYr":55.87857963778711,"periodKyr":23.19314500119466,"relAmp":0.19922380139666943},{"family":"climatic precession","label":"p+g0","arcsecPerYr":54.54567191581978,"periodKyr":23.75990531384624,"relAmp":1},{"family":"obliquity","label":"p+s12","arcsecPerYr":47.29590619355313,"periodKyr":27.40194880073271,"relAmp":0.10427591691403815},{"family":"obliquity","label":"p+s1","arcsecPerYr":44.70306999762271,"periodKyr":28.991297467241527,"relAmp":0.5416346168208136},{"family":"obliquity","label":"p+s14","arcsecPerYr":44.45151946482077,"periodKyr":29.15535881795139,"relAmp":0.1423622336951359},{"family":"obliquity","label":"p+s9","arcsecPerYr":43.52756580857083,"periodKyr":29.7742356119719,"relAmp":0.10094037508523732},{"family":"obliquity","label":"p+s3","arcsecPerYr":43.24580236542744,"periodKyr":29.968226489331563,"relAmp":0.47895531494942417},{"family":"obliquity","label":"p+s2","arcsecPerYr":32.53285971289672,"periodKyr":39.836645515864,"relAmp":0.48491909690353013},{"family":"obliquity","label":"p+s4","arcsecPerYr":31.98458119107587,"periodKyr":40.51952383736704,"relAmp":0.32380140712519323},{"family":"obliquity","label":"p+s0","arcsecPerYr":31.43772998726808,"periodKyr":41.22435050256062,"relAmp":1},{"family":"obliquity","label":"p+s7","arcsecPerYr":30.88973745178278,"periodKyr":41.95568194851078,"relAmp":0.1787778028028384},{"family":"obliquity","label":"p+s10","arcsecPerYr":23.940447211803555,"periodKyr":54.13432708813487,"relAmp":0.16050220301405962},{"family":"eccentricity","label":"g0−g2","arcsecPerYr":13.659658936359374,"periodKyr":94.87791796545507,"relAmp":0.7792514713186953},{"family":"eccentricity","label":"g0−g6","arcsecPerYr":13.38165248714171,"periodKyr":96.84902527885197,"relAmp":0.10994906379552646},{"family":"eccentricity","label":"g0−g3","arcsecPerYr":13.111587434842484,"periodKyr":98.8438666515722,"relAmp":0.5345234544678213},{"family":"eccentricity","label":"g0−g5","arcsecPerYr":12.831040820044286,"periodKyr":101.00505626756528,"relAmp":0.15474417022576337},{"family":"eccentricity","label":"g0−g7","arcsecPerYr":12.567419541379522,"periodKyr":103.12379528134528,"relAmp":0.10461813237212561},{"family":"eccentricity","label":"g2−g4","arcsecPerYr":12.326751214392043,"periodKyr":105.13719125659492,"relAmp":0.1552454403600582},{"family":"eccentricity","label":"g3−g4","arcsecPerYr":11.778679712875153,"periodKyr":110.02930987106778,"relAmp":0.1064897945347589},{"family":"eccentricity","label":"g1−g2","arcsecPerYr":10.46459406888008,"periodKyr":123.84617993487996,"relAmp":0.6717512938116206},{"family":"eccentricity","label":"g1−g3","arcsecPerYr":9.91652256736319,"periodKyr":130.6909747037068,"relAmp":0.46078427225011426},{"family":"eccentricity","label":"g1−g5","arcsecPerYr":9.635975952564992,"periodKyr":134.49597699079135,"relAmp":0.1333967279946903},{"family":"eccentricity fundamental","label":"g₂−g₅","periodKyr":405.6255674779031,"arcsecPerYr":3.195064867479294,"note":"the engine’s 20-Myr mean beat; the long-eccentricity metronome"},{"family":"climate-internal harmonic","label":"(g₂−g₅)/2","periodKyr":202.81278373895154,"note":"carbon-thermostat 2nd harmonic (doc 92 §3), not orbital forcing"},{"family":"climate-internal harmonic","label":"(g₂−g₅)/3","periodKyr":135.20852249263436,"note":"carbon-thermostat 3rd harmonic (doc 92 §3), not orbital forcing"}],"L1_source":"data/l1-physical-lines.json","L2_periods_kyr":{"405-kyr (fundamental)":404.5,"202-kyr (2nd harmonic)":202.25,"135-kyr (3rd harmonic)":134.83},"L3_transitions_ma":{"PETM":56,"EOT":34,"Mi-1":23,"MMCT":14,"iNHG":2.7,"MPT":1},"description":"Climate formula = intercept + L1 + L2 + L3 (in normalized units). De-normalize: y_raw = y_norm * y_std + y_mean + (trend_slope*t_kyr + trend_intercept)."},"regimes":{"lr04-post-mpt":{"label":"LR04 post-MPT","regime":"post-mpt","window_kyr":[0,1000],"n_samples":1001,"intercept":-0.006859079927041605,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":0.08294736630173595,"b":-0.13452690569653208},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":0.056011235599731424,"b":0.03632505583875112},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":0.13578078298526153,"b":0.1020520119238233},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":0.004012144643884774,"b":-0.12042207609609412},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":-0.17434339162278495,"b":-0.0898412590835167},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":0.033704401199090905,"b":0.021884993780489803},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.41657365558064385,"b":-0.1895638495826497},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":0.4054650904732013,"b":-0.1426429863021992},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.16202192173332114,"b":0.342261836819516},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":-0.008447772534510789,"b":-0.3959078605080295},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":-0.023522869769341176,"b":0.1315814879424402},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":-0.647605261240211,"b":0.04622892639591998},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":-0.5685408883095202,"b":-0.4877001890722523},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":0.484735937733177,"b":-0.09510323517350361},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":0.06985780268943464,"b":-0.04986380494848971},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":-0.02864004938419229,"b":-2.2078434079442153},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":0.6146976466234293,"b":1.151844932946008},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":1.1997880446460427,"b":0.3092899931630704},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":-0.21136748754724802,"b":-0.1286859519009371},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":-0.6785187962895458,"b":0.8331502346241357},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":0.03372165993311456,"b":1.0035996073522022},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":-1.0160216069440975,"b":-0.20297198804660532},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":-0.39912777290496865,"b":-0.14115064424819163},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.9842532594259008,"b":0.3715490010962622},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":-0.25194431952193685,"b":-0.06656891455416225},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":-0.07976853087661254,"b":-0.04784706745757568},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":-0.02510242688948311,"b":0.17981430072435606},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":-0.678793634885976,"b":0.1877595321355311}],"L2":[],"L3":[],"denormalization":{"y_mean":1.5012965895430689e-15,"y_std":0.43131092949760913,"trend_slope":-0.00008678094360729054,"trend_intercept":4.192006855420027},"r2":{"l1_only":0.7788098702351363,"l1_l2":0.7788098702351363,"l1_l2_l3":0.7788098702351363,"delta_l2":0,"delta_l3":0}},"lr04-inhg-mpt":{"label":"LR04 inhg-MPT","regime":"inhg-mpt","window_kyr":[1000,2700],"n_samples":1701,"intercept":0.00023690680995033366,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":0.03378808833397713,"b":-0.0988376597330071},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":-0.00576745138578616,"b":0.0753147339947498},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":0.11736842628559974,"b":-0.06352354229610063},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":-0.022556721655332068,"b":-0.08109814172935359},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":-0.12509715105044644,"b":0.011241834226839498},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":-0.006834921289317619,"b":-0.026895095453755458},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.14227488772197194,"b":0.08251082418192202},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":-0.14434022091100163,"b":-0.020327667411991324},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.12391244089948672,"b":-0.21249047016159694},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":0.07308881121306533,"b":-0.2555132501396441},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":-0.33370727255096816,"b":0.15875969367235293},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":0.21017771674517838,"b":0.3361115474213299},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":-0.14420355926246242,"b":0.6132109112092595},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":0.09640526282713102,"b":-0.18289497317264217},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":0.10973523030135313,"b":0.12599402666152673},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":0.14822897260917117,"b":0.031554361131706024},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":-0.08637992905510072,"b":1.305315663798301},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":-0.9628901607417413,"b":1.1469451065132008},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":0.05934683074197873,"b":0.1820663127808267},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":1.1854393145404019,"b":0.6403880001922156},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":0.2494827082158767,"b":0.7677858440843},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":0.11930992374739058,"b":-0.21909424390831103},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":-0.1120041881040301,"b":-0.003513510695376143},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.048797552374342495,"b":-0.05713043141501102},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":0.4272163067315498,"b":-0.28712119761954236},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.13913576897115665,"b":0.0892125754479372},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":-0.1526027885466302,"b":0.08034754159792529},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":-0.2438187058685204,"b":0.5680920023927314}],"L2":[],"L3":[],"denormalization":{"y_mean":2.117321276827753e-15,"y_std":0.2533430989053228,"trend_slope":-0.00028446235786389366,"trend_intercept":4.264486402612575},"r2":{"l1_only":0.5910872803070126,"l1_l2":0.5910872803070126,"l1_l2_l3":0.5910872803070126,"delta_l2":0,"delta_l3":0}},"lr04-pre-inhg":{"label":"LR04 pre-iNHG","regime":"pre-inhg","window_kyr":[2700,5320],"n_samples":2621,"intercept":-0.02142666615353233,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":-0.035086311724808916,"b":-0.003159389963332093},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":0.0314557598876507,"b":-0.02043951650978959},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":-0.027093645112132247,"b":-0.053035770308991925},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":-0.03495209951926992,"b":-0.011157666022283963},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":0.04941710097614671,"b":-0.003661732556149447},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":0.0027139275158840903,"b":0.00614560164570091},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.0062953456907572924,"b":-0.023699428736896788},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":-0.04025914622285942,"b":0.020065731310493273},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.07798524552884101,"b":0.04396345618377133},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":0.023922220394199306,"b":-0.0255176601202924},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":0.06432756508558737,"b":-0.14536755548975308},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":-0.1757312082859675,"b":-0.10944075978955181},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":0.40842017374072204,"b":-0.14411170670953555},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":-0.06373334664194225,"b":-0.10677860345012538},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":0.0028879013237850804,"b":-0.08980647945251169},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":0.19965203842855228,"b":-0.10752720824798011},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":-0.9273478476155216,"b":-0.4199974948139529},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":0.452134071272423,"b":1.932762606359905},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":0.7018483596525162,"b":-2.26278874290972},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":-1.8189450933928641,"b":0.7643274020132732},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":0.5412750529564219,"b":0.6401842520713479},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":0.16079695191356433,"b":-0.15587466980098372},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":-0.03235198142154033,"b":0.03560103840921593},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.04071080922783202,"b":-0.3292284789832466},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":-0.16688994961519266,"b":1.5265645010496949},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.2739730978110547,"b":0.12391412714939282},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":0.029480450561976866,"b":-0.069292658033833},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":-1.1452014719851138,"b":-0.6424295896906929}],"L2":[],"L3":[],"denormalization":{"y_mean":2.2229875746786803e-16,"y_std":0.1419188719967453,"trend_slope":-0.0001616384823512257,"trend_intercept":3.7150997304817532},"r2":{"l1_only":0.37358515605743947,"l1_l2":0.37358515605743947,"l1_l2_l3":0.37358515605743947,"delta_l2":0,"delta_l3":0}},"lr04-full":{"label":"LR04 full","regime":"lr04-full","window_kyr":[0,5320],"n_samples":5321,"intercept":-0.0024227971062001355,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":0.030922821345114704,"b":-0.05900083179428246},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":0.008194722596881407,"b":0.008689210084413035},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":0.08126862330360542,"b":-0.014342384661178376},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":-0.0022553364188909047,"b":-0.06780467558380883},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":-0.07421660611269472,"b":-0.03089653590897469},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":0.02169660079563364,"b":-0.006369759959310148},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.013780804168207761,"b":-0.052992576458663926},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":-0.0223280415237245,"b":-0.031719608311785094},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.0510856857614173,"b":0.008501865526945148},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":0.012327863266184569,"b":-0.044355604969224804},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":-0.04461057925689557,"b":-0.021568948162195484},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":-0.021837674040975467,"b":-0.0503206091068613},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":-0.14629706779448895,"b":0.26998129863155595},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":0.009304572882141003,"b":-0.020598742600942712},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":0.05357567045859413,"b":0.00909264487373028},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":-0.07892187088604284,"b":-0.26498043098803237},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":-0.07377464487783483,"b":-0.030589940847954092},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":-0.17534125509504953,"b":0.0012453570262063313},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":-0.09540345364796352,"b":-0.030233935912200666},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":-0.08596290042214068,"b":0.07952101048984861},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":-0.10493317043608325,"b":-0.004341996127342956},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":0.056273576667406705,"b":0.003874035193535519},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":-0.08045977780438618,"b":0.12113043551392691},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.07505772740767469,"b":-0.041545258195457485},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":0.050507501356114974,"b":0.1282308619765639},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.0922772360459568,"b":0.04907921183158255},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":-0.01651958887024215,"b":0.06010832610779231},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":-0.1376739270828783,"b":0.02998534216354344}],"L2":[],"L3":[{"label":"iNHG","t_kyr":2700,"beta":-0.18339070143699257},{"label":"MPT","t_kyr":1000,"beta":0.07674259224537729}],"denormalization":{"y_mean":8.786640107689267e-16,"y_std":0.26728652336026737,"trend_slope":-0.0002890388734746666,"trend_intercept":4.253595893576046},"r2":{"l1_only":0.19279705612357645,"l1_l2":0.19279705612357645,"l1_l2_l3":0.20028113870158382,"delta_l2":0,"delta_l3":0.007484082578007367}},"cenogrid-d18o":{"label":"CENOGRID δ¹⁸O","regime":"cenogrid","window_kyr":[0,67000],"n_samples":13401,"intercept":-0.000017900752716761382,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":0.004123882092104934,"b":0.000734254288482632},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":-0.0012180292189992482,"b":-0.001092529000137699},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":0.0013327567547403059,"b":-0.00022331918558489428},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":-0.0004481936054901627,"b":-0.00582889854386117},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":-0.00144295995030321,"b":-0.002056262918378767},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":-0.002559892415500537,"b":0.005740462857533745},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":0.00038380588812801826,"b":-0.0003620306413292826},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":-0.0017338068710967278,"b":-0.0017728691405101142},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.0062469944014200765,"b":-0.00042471498652479753},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":0.0014727985543584166,"b":-0.00038878316356941514},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":-0.007894230019452345,"b":0.004230251477267159},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":-0.009962392177776818,"b":0.0012389554118730634},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":-0.007372097100661066,"b":0.012600425203911022},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":-0.0017949985860171219,"b":0.0006960093267632671},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":0.005588960994395471,"b":0.00782383944868344},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":0.008872080470540255,"b":-0.030340622515109543},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":0.002052201554896483,"b":-0.010244331172524568},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":-0.013657047749711215,"b":0.026198257578566166},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":0.0016626981417190313,"b":0.0032398179435871744},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":-0.0045313272185112,"b":0.00788701494590805},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":-0.009048082987332805,"b":-0.003367345517778564},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":0.012540572177279549,"b":0.007434927163620616},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":-0.008947052423443295,"b":0.02456029773531922},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.007753135255805782,"b":-0.012571647828653745},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":-0.005047406762716657,"b":-0.010087549989496425},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.04455162972720975,"b":-0.040121802439250245},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":0.0031172459889242665,"b":0.005409974715238027},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":-0.004093773835504603,"b":0.005387751074071727}],"L2":[],"L3":[{"label":"PETM","t_kyr":56000,"beta":1.940015820084196},{"label":"EOT","t_kyr":34000,"beta":-1.691547797580078},{"label":"Mi-1","t_kyr":23000,"beta":1.3790909076086453},{"label":"MMCT","t_kyr":14000,"beta":-0.5726330472497277},{"label":"iNHG","t_kyr":2700,"beta":-0.9437582187200775},{"label":"MPT","t_kyr":1000,"beta":0.9558616582445898}],"denormalization":{"y_mean":3.1388799311243884e-16,"y_std":0.5138368170014185,"trend_slope":-0.000060475169948230774,"trend_intercept":3.5886100819307556},"r2":{"l1_only":0.003876009157199989,"l1_l2":0.003876009157199989,"l1_l2_l3":0.6165047079611101,"delta_l2":0,"delta_l3":0.6126286988039101}},"cenogrid-d13c":{"label":"CENOGRID δ¹³C","regime":"cenogrid","window_kyr":[0,67000],"n_samples":13401,"intercept":0.000029070733198583076,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":0.0009650008899918412,"b":-0.00011268867420227875},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":-0.0034860169466628625,"b":-0.0015257685891015508},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":-0.0036474318053131677,"b":-0.0005628353654820611},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":0.0018686645112268026,"b":0.00026465624653889026},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":0.0033780561900200283,"b":-0.005905111814834856},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":-0.0009007331883439613,"b":0.0010915716777256858},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.0009529644924031987,"b":0.000265398556202218},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":0.002553289510167673,"b":-0.0020274484166293346},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.0013533919728746704,"b":-0.00530964770919875},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":-0.0017832716355895269,"b":-0.0028075069411322377},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":0.003860322422430933,"b":-0.0015233332191675513},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":-0.0004303499917000242,"b":-0.005996544417607873},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":0.013420399200665024,"b":-0.005668553430990457},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":-0.0026217117855412836,"b":0.004437408427102373},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":-0.003490044995835626,"b":-0.0012912320123738786},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":0.009282981437960955,"b":-0.0038498202845307257},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":0.003149132327603584,"b":0.0010195878782673267},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":-0.0065058698415631265,"b":0.022069772554131298},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":0.005254165484357785,"b":0.010720274477805634},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":0.015464906090432301,"b":-0.007889297901226305},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":-0.006702194397682823,"b":-0.004727507226308523},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":0.015134844636968448,"b":0.004362114253854979},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":0.00043459639370226717,"b":0.007734174891256375},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.003437119213236388,"b":-0.015481014623736028},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":-0.0026733397211863054,"b":-0.01966007857123709},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.04091194510612722,"b":-0.08954200309015047},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":0.00690019732569918,"b":-0.0012443837336756072},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":0.0010661328709702734,"b":-0.007316586161130703}],"L2":[],"L3":[{"label":"PETM","t_kyr":56000,"beta":1.2940359538531367},{"label":"EOT","t_kyr":34000,"beta":-0.6519376180638039},{"label":"Mi-1","t_kyr":23000,"beta":-0.7981261235096027},{"label":"MMCT","t_kyr":14000,"beta":0.8752124431571835},{"label":"iNHG","t_kyr":2700,"beta":1.3322932097946545},{"label":"MPT","t_kyr":1000,"beta":-1.3351323776348474}],"denormalization":{"y_mean":-1.6966918546618317e-16,"y_std":0.5116419176812778,"trend_slope":0.000014091551862757799,"trend_intercept":0.17563680335949733},"r2":{"l1_only":0.006168654587274891,"l1_l2":0.006168654587274891,"l1_l2_l3":0.3483764440324214,"delta_l2":0,"delta_l3":0.3422077894451465}},"epica-co2":{"label":"EPICA CO₂","regime":"epica-co2","window_kyr":[0,800],"n_samples":801,"intercept":0.046859067858285856,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":-0.05502581633856041,"b":-0.08817291779123937},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":0.09279775558199166,"b":-0.02977667406068102},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":-0.010012656094580574,"b":-0.07704160997146761},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":-0.09419381809492886,"b":0.12851567172260897},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":0.10859950358267217,"b":0.047579864077929246},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":-0.04990823093382407,"b":-0.07964809262078046},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.276994946163306,"b":0.00926415122903073},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":0.3547880848249641,"b":-0.052351365748380216},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":0.06428285052169697,"b":0.15614006470113517},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":-0.0006993222522351378,"b":0.036081791489203485},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":0.24141010444452482,"b":-0.30462281471181235},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":0.3836984182907175,"b":0.5239687215214576},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":0.010089991558071686,"b":-0.13652618209161096},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":0.005529988871878444,"b":0.21299239031525458},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":-0.07372084819661012,"b":0.14940549499811964},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":-0.6441116836693606,"b":1.102988108346497},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":-0.2088238849112716,"b":-0.01826389331084477},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":-0.26516527826439296,"b":-0.418771220927597},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":-0.2299701738219948,"b":-0.391265151247817},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":0.0013964992495686043,"b":-0.3098786533220057},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":0.26500617268684085,"b":-0.3451212480279362},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":0.5656854326815351,"b":-0.640241822606294},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":0.32830684416921263,"b":-0.8453396735317871},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":0.19276942810010606,"b":-0.371896364054894},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":0.32925574130129326,"b":0.1493384050539293},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.2700629118965029,"b":0.10153572629299597},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":0.22188281776008423,"b":-0.14650883954604466},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":0.40024011750532634,"b":0.2739964641050084}],"L2":[],"L3":[],"denormalization":{"y_mean":2.980553797944989e-14,"y_std":25.51737494167102,"trend_slope":-0.006455378442643299,"trend_intercept":227.89326737247322},"r2":{"l1_only":0.7301216245357616,"l1_l2":0.7301216245357616,"l1_l2_l3":0.7301216245357616,"delta_l2":0,"delta_l3":0},"carbon_amplification_ratios":{"19.0014":{"period_kyr":19.001447303419877,"lr04_post_mpt_amp":0.15804351911001602,"epica_amp":0.10393413248565476,"ratio":0.6576298292453545,"label":"climatic precession p+g2"},"19.1554":{"period_kyr":19.155372423274404,"lr04_post_mpt_amp":0.06675903081304436,"epica_amp":0.09745806154018814,"ratio":1.4598483583908672,"label":"climatic precession p+g3"},"22.4452":{"period_kyr":22.445158690369446,"lr04_post_mpt_amp":0.16985592178605624,"epica_amp":0.07768952921123978,"ratio":0.45738487298131664,"label":"climatic precession p+g1"},"23.1931":{"period_kyr":23.19314500119466,"lr04_post_mpt_amp":0.1204888945751306,"epica_amp":0.15933848639175013,"ratio":1.3224329674001196,"label":"climatic precession p+g4"},"23.7599":{"period_kyr":23.75990531384624,"lr04_post_mpt_amp":0.19613023743484156,"epica_amp":0.11856515358264859,"ratio":0.6045225618106863,"label":"climatic precession p+g0"},"27.4019":{"period_kyr":27.40194880073271,"lr04_post_mpt_amp":0.04018631126343096,"epica_amp":0.09399281979530318,"ratio":2.3389262870920793,"label":"obliquity p+s12"},"28.9913":{"period_kyr":28.991297467241527,"lr04_post_mpt_amp":0.4576768112898165,"epica_amp":0.277149823557597,"ratio":0.6055579324120406,"label":"obliquity p+s1"},"29.1554":{"period_kyr":29.15535881795139,"lr04_post_mpt_amp":0.4298243375306367,"epica_amp":0.35862968453473926,"ratio":0.8343633741055371,"label":"obliquity p+s14"},"29.7742":{"period_kyr":29.7742356119719,"lr04_post_mpt_amp":0.3786743562287093,"epica_amp":0.16885498120005082,"ratio":0.4459107896338955,"label":"obliquity p+s9"},"29.9682":{"period_kyr":29.968226489331563,"lr04_post_mpt_amp":0.39599797836963785,"epica_amp":0.03608856783917628,"ratio":0.0911332123152659,"label":"obliquity p+s3"},"39.8366":{"period_kyr":39.836645515864,"lr04_post_mpt_amp":0.13366754793640798,"epica_amp":0.38868225811176865,"ratio":2.9078281461157895,"label":"obliquity p+s2"},"40.5195":{"period_kyr":40.51952383736704,"lr04_post_mpt_amp":0.6492531771364091,"epica_amp":0.6494364459526653,"ratio":1.0002822763487498,"label":"obliquity p+s4"},"41.2244":{"period_kyr":41.22435050256062,"lr04_post_mpt_amp":0.7490595544420277,"epica_amp":0.13689852565368874,"ratio":0.18276053598390327,"label":"obliquity p+s0"},"41.9557":{"period_kyr":41.95568194851078,"lr04_post_mpt_amp":0.49397728153279397,"epica_amp":0.21306416664734792,"ratio":0.4313238171322725,"label":"obliquity p+s7"},"54.1343":{"period_kyr":54.13432708813487,"lr04_post_mpt_amp":0.08582838481840964,"epica_amp":0.16660361759115794,"ratio":1.9411249313807724,"label":"obliquity p+s10"},"94.8779":{"period_kyr":94.87791796545507,"lr04_post_mpt_amp":2.2080291588725576,"epica_amp":1.2772872144483254,"ratio":0.5784738889501447,"label":"eccentricity g0−g2"},"96.8490":{"period_kyr":96.84902527885197,"lr04_post_mpt_amp":1.3056032882609387,"epica_amp":0.2096210502509372,"ratio":0.16055493436306525,"label":"eccentricity g0−g6"},"98.8439":{"period_kyr":98.8438666515722,"lr04_post_mpt_amp":1.2390123695695643,"epica_amp":0.49566315202385497,"ratio":0.4000469762832549,"label":"eccentricity g0−g3"},"101.0051":{"period_kyr":101.00505626756528,"lr04_post_mpt_amp":0.2474596714793874,"epica_amp":0.4538443559511296,"ratio":1.8340134100959289,"label":"eccentricity g0−g5"},"103.1238":{"period_kyr":103.12379528134528,"lr04_post_mpt_amp":1.0744892137068973,"epica_amp":0.30988180003803684,"ratio":0.2883991724486193,"label":"eccentricity g0−g7"},"105.1372":{"period_kyr":105.13719125659492,"lr04_post_mpt_amp":1.0041659834042074,"epica_amp":0.43512865614952084,"ratio":0.43332343789858124,"label":"eccentricity g2−g4"},"110.0293":{"period_kyr":110.02930987106778,"lr04_post_mpt_amp":1.0360972607380339,"epica_amp":0.8543474703903119,"ratio":0.8245823078247907,"label":"eccentricity g3−g4"},"123.8462":{"period_kyr":123.84617993487996,"lr04_post_mpt_amp":0.42335148928019584,"epica_amp":0.9068542041448426,"ratio":2.1420834155720656,"label":"eccentricity g1−g2"},"130.6910":{"period_kyr":130.6909747037068,"lr04_post_mpt_amp":1.0520471181967754,"epica_amp":0.41888776301927494,"ratio":0.3981644507873895,"label":"eccentricity g1−g3"},"134.4960":{"period_kyr":134.49597699079135,"lr04_post_mpt_amp":0.2605904075830328,"epica_amp":0.3615401808982172,"ratio":1.387388677317366,"label":"eccentricity g1−g5"},"405.6256":{"period_kyr":405.6255674779031,"lr04_post_mpt_amp":0.09301806481809265,"epica_amp":0.2885194622479816,"ratio":3.1017573071662374,"label":"eccentricity fundamental g₂−g₅"},"202.8128":{"period_kyr":202.81278373895154,"lr04_post_mpt_amp":0.1815580198744495,"epica_amp":0.2658887453095437,"ratio":1.4644836151738732,"label":"climate-internal harmonic (g₂−g₅)/2"},"135.2085":{"period_kyr":135.20852249263436,"lr04_post_mpt_amp":0.7042829265781396,"epica_amp":0.48504248680164563,"ratio":0.6887040257504107,"label":"climate-internal harmonic (g₂−g₅)/3"}}},"cenco2pip":{"label":"CenCO2PIP CO₂ (deep-time)","regime":"cenco2pip","window_kyr":[0,66000],"n_samples":661,"intercept":0.012702098194848405,"L1":[{"period_kyr":19.001447303419877,"label":"climatic precession p+g2","a":-0.0021243741283090145,"b":0.00013548724514120258},{"period_kyr":19.155372423274404,"label":"climatic precession p+g3","a":-0.0026061706686473125,"b":-0.001156171110766574},{"period_kyr":22.445158690369446,"label":"climatic precession p+g1","a":-0.0005703262426389336,"b":0.000002889439913333902},{"period_kyr":23.19314500119466,"label":"climatic precession p+g4","a":-0.0009965605710626282,"b":0.0003819977695875363},{"period_kyr":23.75990531384624,"label":"climatic precession p+g0","a":0.0004393410903057657,"b":-0.00017231838110697137},{"period_kyr":27.40194880073271,"label":"obliquity p+s12","a":-0.00006353421547988618,"b":-0.00000976582315367295},{"period_kyr":28.991297467241527,"label":"obliquity p+s1","a":-0.0006469302133432693,"b":-0.0001368662414666362},{"period_kyr":29.15535881795139,"label":"obliquity p+s14","a":-0.0005047367149925721,"b":-0.0004533792427601508},{"period_kyr":29.7742356119719,"label":"obliquity p+s9","a":-0.0006676733303029193,"b":0.00006728169072694416},{"period_kyr":29.968226489331563,"label":"obliquity p+s3","a":-0.0009822980442648096,"b":0.0007769626044404599},{"period_kyr":39.836645515864,"label":"obliquity p+s2","a":-0.0002183827312121102,"b":-0.0002478194021528161},{"period_kyr":40.51952383736704,"label":"obliquity p+s4","a":-0.0002128118748836521,"b":-0.0003722626464152906},{"period_kyr":41.22435050256062,"label":"obliquity p+s0","a":-0.0001233238882620653,"b":-0.0002743396114553726},{"period_kyr":41.95568194851078,"label":"obliquity p+s7","a":0.00016008526708297804,"b":0.000008693300205839943},{"period_kyr":54.13432708813487,"label":"obliquity p+s10","a":-0.004354105153966059,"b":-0.0011342566213551342},{"period_kyr":94.87791796545507,"label":"eccentricity g0−g2","a":-0.03129958751742403,"b":-0.031773968284910165},{"period_kyr":96.84902527885197,"label":"eccentricity g0−g6","a":0.03167955956939116,"b":0.03578122270908842},{"period_kyr":98.8438666515722,"label":"eccentricity g0−g3","a":0.20008115386982128,"b":-0.164334623161599},{"period_kyr":101.00505626756528,"label":"eccentricity g0−g5","a":0.08063362437056623,"b":0.09522544093607753},{"period_kyr":103.12379528134528,"label":"eccentricity g0−g7","a":-0.024933504720187488,"b":-0.01404677401640559},{"period_kyr":105.13719125659492,"label":"eccentricity g2−g4","a":0.012145047610255168,"b":0.038633767870072146},{"period_kyr":110.02930987106778,"label":"eccentricity g3−g4","a":-0.0021452365150174697,"b":-0.015839945972565668},{"period_kyr":123.84617993487996,"label":"eccentricity g1−g2","a":-0.0004373999026252937,"b":0.0006849898533843757},{"period_kyr":130.6909747037068,"label":"eccentricity g1−g3","a":-0.00009493527100004964,"b":0.0017562823760871463},{"period_kyr":134.49597699079135,"label":"eccentricity g1−g5","a":0.00044391859070569547,"b":0.0003411812760362291},{"period_kyr":405.6255674779031,"label":"eccentricity fundamental g₂−g₅","a":0.00009474735876577756,"b":-0.00010991117383797426},{"period_kyr":202.81278373895154,"label":"climate-internal harmonic (g₂−g₅)/2","a":-0.0005357266658390022,"b":0.00013354527335245406},{"period_kyr":135.20852249263436,"label":"climate-internal harmonic (g₂−g₅)/3","a":-0.0013820909078533865,"b":0.0017815312141130305}],"L2":[],"L3":[{"label":"PETM","t_kyr":56000,"beta":-2.2503654728326334},{"label":"EOT","t_kyr":34000,"beta":1.5689300314238657},{"label":"Mi-1","t_kyr":23000,"beta":-0.2125247416130942},{"label":"MMCT","t_kyr":14000,"beta":-0.3699791032908535},{"label":"iNHG","t_kyr":2700,"beta":-0.24290653304467713},{"label":"MPT","t_kyr":1000,"beta":0.2506115924806964}],"denormalization":{"y_mean":-2.091425032821257e-13,"y_std":209.18154000668048,"trend_slope":0.013251639299066168,"trend_intercept":214.15971983891893},"r2":{"l1_only":0.04732358217840105,"l1_l2":0.04732358217840105,"l1_l2_l3":0.6918703763922935,"delta_l2":0,"delta_l3":0.6445467942138925}}},"meta":{"script":"export_climate_formula_browser.py","consumer":"src/script.js — Climate Formula Explorer modal","stitched_lr04_r2":0.916818639650688,"stitched_lr04_note":"R² of the three-regime stitched curve (post-MPT / iNHG-MPT / pre-iNHG blocks) against the raw gridded LR04 stack, 0-5320 kyr"}},
33
- DT_RESONATOR: {"display_name":"Core-mantle swing","driver":"Resonator","functional_class":"episode (2-kick IMPULSE-CONSISTENT windowed damped oscillation — sin-only kicks, displacement-continuous; zero before first kick)","kick_epochs_year":[-1600,1600],"kick_coefficients_s":[{"cos":0,"sin":493.0347425795158},{"cos":0,"sin":179.324}],"T0_lattice_n":685,"T0_yr":3916.1109489051096,"Q":1.8,"drive_tones":[{"pair":"bond-hallstatt","dn":726,"period_yr":3694.9531680440773,"phi_locked_rad":-0.4616152283022974,"amp_s":0,"phase_convention":"cos(2π·dn/8H·y − φ_locked), kick-1-envelope-shared","retired":"RETIRED (plan 06 D7 follow-up, 2026-09): shipped at amplitude 0 — measured to buy nothing once the GIA channel became the lagged response (kicks-only 11.89 / 21.04 s vs all three 12.04 / 21.34 s); dn/phase kept as the convention for the diagnostic column (DT_RESONATOR_COMPONENTS)."}],"rms_s":21.04259829068953,"raw_at_j2000_s":20.336554860847798,"lod_raw_at_j2000_s_per_day":0.0008021623611181848,"deep_time_checks_s":{"900":-245.8439379884609,"2000":-82.32559425279462,"5000":5.334235000224568,"100000":-1.545960510634632e-17,"-100000":0,"-5000":0,"-801":0},"regeneration_rule":"drive-tone menu = Δn difference tones of the ACTIVE flag set (any count); refit this script after any stack change (3rd/5th cycle)","status":"JOINT WORLD SHIPPED (--joint --write): the two impulse kicks from the joint equality-constrained fit, the drive tone retired at amplitude 0 (plan 06 D7 follow-up); phases/epochs/T0/Q remain the Stage-1/3 convention. Default-ON.","impulse_consistent":true},
34
- DT_STACK: {"bond":{"lattice_n":1830,"period_yr":1465.8666666666666,"cos_coeff_s":176.50831467679745,"sin_coeff_s":330.1468336789257,"raw_at_j2000_s":132.28379624524655,"amplitude_s":374.3689582995145,"phase_deg":61.869445035267226,"source":"Stage D anchored fit (USNO LOD constraint active)","joint_mode":true},"hallstatt":{"lattice_n":1104,"period_yr":2429.8333333333335,"cos_coeff_s":-66.24783743103622,"sin_coeff_s":44.846672515483206,"raw_at_j2000_s":-69.56840222954902,"amplitude_s":80,"phase_deg":145.90384620799105,"target_amp_source":"CAPPED from anchored quad-fit free amp 100.73 s → 80 s prior","joint_mode":true},"jose5":{"lattice_n":2989,"period_yr":897.469387755102,"cos_coeff_s":-43.18279937765315,"sin_coeff_s":25.20408375460928,"raw_at_j2000_s":19.15528234095081,"amplitude_s":50,"phase_deg":149.72958913334688,"target_amp_source":"CAPPED from anchored quad-fit free amp 86.44 s → 50 s prior","joint_mode":true},"jose4":{"lattice_n":3749,"period_yr":715.5337423312883,"cos_coeff_s":36.61173887400633,"sin_coeff_s":-29.389965591851784,"raw_at_j2000_s":38.4570308899006,"amplitude_s":46.948796585947306,"phase_deg":-38.755652114212005,"target_amp_source":"unconstrained: quad-fit free amp 47.06 s (below 50 s prior — no cap applied)","joint_mode":true}},
33
+ DT_RESONATOR: {"display_name":"Core-mantle swing","driver":"Resonator","functional_class":"episode (2-kick IMPULSE-CONSISTENT windowed damped oscillation — sin-only kicks, displacement-continuous; zero before first kick)","kick_epochs_year":[-1600,1600],"kick_coefficients_s":[{"cos":0,"sin":419.9875882265957},{"cos":0,"sin":179.324}],"T0_lattice_n":685,"T0_yr":3916.1109489051096,"Q":1.8,"drive_tones":[{"pair":"bond-hallstatt","dn":726,"period_yr":3694.9531680440773,"phi_locked_rad":-0.4616152283022974,"amp_s":0,"phase_convention":"cos(2π·dn/8H·y − φ_locked), kick-1-envelope-shared","retired":"RETIRED (plan 06 D7 follow-up, 2026-09): shipped at amplitude 0 — measured to buy nothing once the GIA channel became the lagged response (kicks-only 11.89 / 21.04 s vs all three 12.04 / 21.34 s); dn/phase kept as the convention for the diagnostic column (DT_RESONATOR_COMPONENTS)."}],"rms_s":28.75307216677656,"raw_at_j2000_s":30.176987637132378,"lod_raw_at_j2000_s_per_day":0.0007441702761267647,"deep_time_checks_s":{"900":-245.8439379884609,"2000":-82.32559425279462,"5000":5.334235000224568,"100000":-1.545960510634632e-17,"-100000":0,"-5000":0,"-801":0},"regeneration_rule":"drive-tone menu = Δn difference tones of the ACTIVE flag set (any count); refit this script after any stack change (3rd/5th cycle)","status":"JOINT WORLD SHIPPED (--joint --write): the two impulse kicks from the joint equality-constrained fit, the drive tone retired at amplitude 0 (plan 06 D7 follow-up); phases/epochs/T0/Q remain the Stage-1/3 convention. Default-ON.","impulse_consistent":true},
34
+ DT_STACK: {"bond":{"lattice_n":1830,"period_yr":1465.8666666666666,"cos_coeff_s":167.09990227109097,"sin_coeff_s":325.2328048123241,"raw_at_j2000_s":134.77948951840347,"amplitude_s":365.64840306652434,"phase_deg":62.806558031015285,"source":"Stage D anchored fit (USNO LOD constraint active)","joint_mode":true},"hallstatt":{"lattice_n":1104,"period_yr":2429.8333333333335,"cos_coeff_s":-66.48522407844091,"sin_coeff_s":44.49398812468381,"raw_at_j2000_s":-69.35751171098663,"amplitude_s":80.00000000000001,"phase_deg":146.20832618167242,"target_amp_source":"CAPPED from anchored quad-fit free amp 100.73 s → 80 s prior","joint_mode":true},"jose5":{"lattice_n":2989,"period_yr":897.469387755102,"cos_coeff_s":-44.72347669948116,"sin_coeff_s":22.356444974793412,"raw_at_j2000_s":16.126007614350147,"amplitude_s":50,"phase_deg":153.44037420439267,"target_amp_source":"CAPPED from anchored quad-fit free amp 86.44 s → 50 s prior","joint_mode":true},"jose4":{"lattice_n":3749,"period_yr":715.5337423312883,"cos_coeff_s":43.8800484872982,"sin_coeff_s":-23.969592085648,"raw_at_j2000_s":35.28587841410284,"amplitude_s":50,"phase_deg":-28.6456897704817,"target_amp_source":"unconstrained: quad-fit free amp 47.06 s (below 50 s prior — no cap applied)","joint_mode":true}},
35
35
  MEEUS_DISTANCE_TERMS: {"meanKm":385000.56,"terms":[[0,0,1,0,-20905355],[2,0,-1,0,-3699111],[2,0,0,0,-2955968],[0,0,2,0,-569925],[0,1,0,0,48888],[0,0,0,2,-3149],[2,0,-2,0,246158],[2,-1,-1,0,-152138],[2,0,1,0,-170733],[2,-1,0,0,-204586],[0,1,-1,0,-129620],[1,0,0,0,108743],[0,1,1,0,104755],[2,0,0,-2,10321],[0,0,1,2,0],[0,0,1,-2,79661],[4,0,-1,0,-34782],[0,0,3,0,-23210],[4,0,-2,0,-21636],[2,1,-1,0,24208],[2,1,0,0,30824],[1,0,-1,0,-8379],[1,1,0,0,-16675],[2,-1,1,0,-12831],[2,0,2,0,-10445],[4,0,0,0,-11650],[2,0,-3,0,14403],[0,1,-2,0,-7003],[2,0,-1,2,0],[2,-1,-2,0,10056],[1,0,1,0,6322],[2,-2,0,0,-9884],[0,1,2,0,5751],[0,2,0,0,0],[2,-2,-1,0,-4950],[2,0,1,-2,4130],[2,0,0,2,0],[4,-1,-1,0,-3958],[0,0,2,2,0],[3,0,-1,0,3258],[2,1,1,0,2616],[4,-1,-2,0,-1897],[0,2,-1,0,-2117],[2,2,-1,0,2354],[2,1,-2,0,0],[2,-1,0,-2,0],[4,0,1,0,-1423],[0,0,4,0,-1117],[4,-1,0,0,-1571],[1,0,-2,0,-1739],[2,1,0,-2,0],[0,0,2,-2,-4421],[1,1,1,0,0],[3,0,-2,0,0],[4,0,-3,0,0],[2,-1,2,0,0],[0,2,1,0,1165],[1,1,-1,0,0],[2,0,3,0,0],[2,0,-1,-2,8752]]},
36
36
  MEEUS_LATITUDE_TERMS: [[0,0,0,1,5128122],[0,0,1,1,280602],[0,0,1,-1,277693],[2,0,0,-1,173237],[2,0,-1,1,55413],[2,0,-1,-1,46271],[2,0,0,1,32573],[0,0,2,1,17198],[2,0,1,-1,9266],[0,0,2,-1,8822],[2,-1,0,-1,8216],[2,0,-2,-1,4324],[2,0,1,1,4200],[2,1,0,-1,-3359],[2,-1,-1,1,2463],[2,-1,0,1,2211],[2,-1,-1,-1,2065],[0,1,-1,-1,-1870],[4,0,-1,-1,1828],[0,1,0,1,-1794],[0,0,0,3,-1749],[0,1,-1,1,-1565],[1,0,0,1,-1491],[0,1,1,1,-1475],[0,1,1,-1,-1410],[0,1,0,-1,-1344],[1,0,0,-1,-1335],[0,0,3,1,1107],[4,0,0,-1,1021],[4,0,-1,1,833],[0,0,1,-3,777],[4,0,-2,1,671],[2,0,0,-3,607],[2,0,2,-1,596],[2,-1,1,-1,491],[2,0,-2,1,-451],[0,0,3,-1,439],[2,0,2,1,422],[2,0,-3,-1,421],[2,1,-1,1,-366],[2,1,0,1,-351],[4,0,0,1,331],[2,-1,1,1,315],[2,-2,0,-1,302],[0,0,1,3,-283],[2,1,1,-1,-229],[1,1,0,-1,223],[1,1,0,1,223],[0,1,-2,-1,-220],[2,1,-1,-1,-220],[1,0,1,1,-185],[2,-1,-2,-1,181],[0,1,2,1,-177],[4,0,-2,-1,176],[4,-1,-1,-1,166],[1,0,1,-1,-164],[4,0,1,-1,132],[1,0,-1,-1,-119],[4,-1,0,-1,115],[2,-2,0,1,107]],
37
37
  MEEUS_LONGITUDE_TERMS: [[0,0,1,0,6288774],[2,0,-1,0,1274027],[2,0,0,0,658314],[0,0,2,0,213618],[0,1,0,0,-185116],[0,0,0,2,-114332],[2,0,-2,0,58793],[2,-1,-1,0,57066],[2,0,1,0,53322],[2,-1,0,0,45758],[0,1,-1,0,-40923],[1,0,0,0,-34720],[0,1,1,0,-30383],[2,0,0,-2,15327],[0,0,1,2,-12528],[0,0,1,-2,10980],[4,0,-1,0,10675],[0,0,3,0,10034],[4,0,-2,0,8548],[2,1,-1,0,-7888],[2,1,0,0,-6766],[1,0,-1,0,-5163],[1,1,0,0,4987],[2,-1,1,0,4036],[2,0,2,0,3994],[4,0,0,0,3861],[2,0,-3,0,3665],[0,1,-2,0,-2689],[2,0,-1,2,-2602],[2,-1,-2,0,2390],[1,0,1,0,-2348],[2,-2,0,0,2236],[0,1,2,0,-2120],[0,2,0,0,-2069],[2,-2,-1,0,2048],[2,0,1,-2,-1773],[2,0,0,2,-1595],[4,-1,-1,0,1215],[0,0,2,2,-1110],[3,0,-1,0,-892],[2,1,1,0,-810],[4,-1,-2,0,759],[0,2,-1,0,-713],[2,2,-1,0,-700],[2,1,-2,0,691],[2,-1,0,-2,596],[4,0,1,0,549],[0,0,4,0,537],[4,-1,0,0,520],[1,0,-2,0,-487],[2,1,0,-2,-399],[0,0,2,-2,-381],[1,1,1,0,351],[3,0,-2,0,-340],[4,0,-3,0,330],[2,-1,2,0,327],[0,2,1,0,-323],[1,1,-1,0,299],[2,0,3,0,294]],
@@ -2,14 +2,14 @@
2
2
  // Gives the TypeScript website full type safety at the boundary (§2g) while
3
3
  // packages/physics stays JavaScript.
4
4
 
5
- export declare const CONSTANTS_HASH: "d94a9f41b4a85cb6";
5
+ export declare const CONSTANTS_HASH: "7940c564f7b5f0a6";
6
6
 
7
7
  export declare const MODEL_VERSION: string;
8
8
 
9
9
  export declare const PREPRINT_DOI: string;
10
10
 
11
11
  export declare const DEFAULT_CONSTANTS: {
12
- readonly hash: "d94a9f41b4a85cb6";
12
+ readonly hash: "7940c564f7b5f0a6";
13
13
  readonly additionalBodies: {
14
14
  "pluto": {
15
15
  "name": string;
@@ -33,7 +33,7 @@
33
33
  * carry it so a counterfactual is reproducible (§2d).
34
34
  * @type {string}
35
35
  */
36
- export const CONSTANTS_HASH = "d94a9f41b4a85cb6";
36
+ export const CONSTANTS_HASH = "7940c564f7b5f0a6";
37
37
 
38
38
  /** Model version label — single source: public/input/model-version.json (§10 two-axis scheme). */
39
39
  export const MODEL_VERSION = "v14.0";
@@ -43,7 +43,7 @@ export const PREPRINT_DOI = "10.21203/rs.3.rs-8758810/v4";
43
43
 
44
44
  /** @type {Readonly<Record<string, unknown>>} */
45
45
  export const DEFAULT_CONSTANTS = Object.freeze({
46
- hash: "d94a9f41b4a85cb6",
46
+ hash: "7940c564f7b5f0a6",
47
47
  additionalBodies: {
48
48
  "pluto": {
49
49
  "name": "Pluto",
@@ -230,7 +230,7 @@ export const DEFAULT_CONSTANTS = Object.freeze({
230
230
  "perihelionPassageJ2000_JD": 2451547.042,
231
231
  "earthInclinationJ2000_deg": 1.57869,
232
232
  "earthInclinationRate_arcsecPerCentury": -18,
233
- "deltaTStart": 53.83100012417801,
233
+ "deltaTStart": 54.546542433465675,
234
234
  "sunTilt": 7.155
235
235
  },
236
236
  foundational: {
@@ -68,6 +68,19 @@ const { createComposedPrecession } = require('../earth/precession-composed.cjs')
68
68
  * @property {(year: number) => number} cycleLodSumAt - gated δLOD sum (incl. swing)
69
69
  * @property {(year: number) => number} swingLodAt - gated swing δLOD alone
70
70
  * @property {(year: number) => number} swingLodRateAt - gated analytic swing rate
71
+ * @property {() => number} precessionPeriodJ2000YearsFn - the model's DERIVED
72
+ * J2000 axial precession period: the certified year-length laws' beat at
73
+ * 2000, sid/(sid − trop) ≈ 25,771.4 yr (plan 06 S5 — one J2000 precession
74
+ * reading; the same anchor the hybrid obliquity self-anchors on). Read
75
+ * LAZILY on the first composed-rate use, never at construction: every
76
+ * runtime's year laws read THIS factory's bases.
77
+ * @property {() => number} nodalPeriodYearsFn - the period of Earth's orbit
78
+ * plane's nodal regression on the invariable plane, 1,296,000/|s₃| with s₃
79
+ * the dominant ζ mode of the banked deep secular modes (≈ 68,751 yr). An
80
+ * ORBITAL quantity (μ-tier: it does not follow Earth's spin), the reference
81
+ * the solar day's "ecliptic missing motion" term rides (plan 06 T2 item —
82
+ * formerly the spin unit's H/5, 67,063 yr, 2.5 % off and scaling with the
83
+ * spin at deep time). Lazy, like the precession anchor.
71
84
  * @property {(tMa: number) => number} [lEmAtAgeKgm2S] - OPTIONAL time-dependent
72
85
  * Earth-Moon angular momentum (the Driver-1½ solar channels,
73
86
  * recession-history.cjs). Absent → the J2000 constant, which the budget
@@ -117,12 +130,15 @@ function createDeepTimeLod(deps) {
117
130
  return K.holisticYearJ2000 * LOD_s / K.lodNowH13Seconds;
118
131
  }
119
132
 
120
- // The unit H(t) ≡ 13 × the composed lunisolar precession period (plan 06
121
- // D6 → Phase 3): ψ̇(t) = [ω(t)/ω₀]·p₀·[f_S + (1 − f_S)(a₀/a_M(t))³], p₀ =
122
- // 1,296,000/(H₀/13). ONE formula home: earth/precession-composed, built
123
- // here on this factory's own LOD and recession history.
133
+ // The composed lunisolar precession rate (plan 06 D6 → Phase 3 → S5):
134
+ // ψ̇(t) = [ω(t)/ω₀]·p₀·[f_S + (1 − f_S)(a₀/a_M(t))³], p₀ the model's
135
+ // DERIVED J2000 rate 1,296,000/axial0 (the certified year-length laws'
136
+ // beat at 2000 ≈ 25,771.4 yr — NOT 1,296,000/(H₀/13) = 50.245 ″/yr, the
137
+ // fit anchor's reading, 0.086 % slow; S5). ONE formula home:
138
+ // earth/precession-composed, built here on this factory's own LOD and
139
+ // recession history; the anchor resolves lazily on the first rate use.
124
140
  const composed = createComposedPrecession({
125
- p0ArcsecPerYr: 1296000 / (K.holisticYearJ2000 / 13),
141
+ p0ArcsecPerYr: () => 1296000 / deps.precessionPeriodJ2000YearsFn(),
126
142
  solarShare: K.precessionSolarShareJ2000,
127
143
  lodSecondsAtAge,
128
144
  lodJ2000Seconds: K.lodNowH13Seconds,
@@ -131,11 +147,13 @@ function createDeepTimeLod(deps) {
131
147
  yearToTMa: /** @param {number} year */ (year) => (2000 - year) / 1e6,
132
148
  });
133
149
 
134
- /** The unit H(t) = 13·T_p,composed(t) — H is 13 lunisolar precession periods
135
- * at every epoch (plan 06: H is a UNIT). Written as H_era / [f_S + (1 − f_S)
136
- * (a₀/a_M)³] — algebraically 13·1,296,000/ψ̇_composed, spelled in the SAME
137
- * operations as layer0's holisticHCore so the layer0 gate holds the twins
138
- * bit-identical (13·T_p differs by one ULP). ≡ H_era wherever (a₀/a_M)³ ≈ 1.
150
+ /** The unit H(t) = H_era / [f_S + (1 − f_S)(a₀/a_M)³] — the internal unit
151
+ * scales WITH the composed lunisolar precession period (H(t)/T_p(t) =
152
+ * H₀/axial0 = 13.011 at every epoch) but is NOT 13 of them: H₀ was fitted
153
+ * on the perihelion-of-date beat, and the "H = 13·T_p" claim is retired
154
+ * (plan 06 S5; docs/retired-record.md). Spelled in the SAME operations as
155
+ * layer0's holisticHCore so the layer0 gate holds the twins bit-identical.
156
+ * ≡ H_era wherever (a₀/a_M)³ ≈ 1. Identifier kept (plan 06 P4).
139
157
  * @param {number} t_Ma @returns {number|null} */
140
158
  function hAtAge(t_Ma) {
141
159
  const hEra = eraClockHAtAge(t_Ma);
@@ -143,12 +161,20 @@ function createDeepTimeLod(deps) {
143
161
  return hEra === null || term === null ? null : hEra / term;
144
162
  }
145
163
 
146
- /** The composed lunisolar precession rate, ″/yr (= 1,296,000·13/H(t)).
164
+ /** The composed lunisolar precession rate, ″/yr — p₀·[ω/ω₀]·[f_S + (1 − f_S)
165
+ * (a₀/a_M)³] on the derived J2000 anchor (S5). ≡ 1,296,000·(H₀/axial0)/H(t).
147
166
  * @param {number} t_Ma @returns {number|null} */
148
167
  function lunisolarPrecessionRateArcsecPerYrAtAge(t_Ma) {
149
168
  return composed.composedRateArcsecPerYrAtAge(t_Ma);
150
169
  }
151
170
 
171
+ /** The mean lunisolar precession period T_p(t), years — 1,296,000/ψ̇(t);
172
+ * 25,771.4 at J2000 (the model's one J2000 precession reading, S5).
173
+ * @param {number} t_Ma @returns {number|null} */
174
+ function lunisolarPrecessionPeriodYearsAtAge(t_Ma) {
175
+ return composed.composedPeriodYearsAtAge(t_Ma);
176
+ }
177
+
152
178
  /** Sidereal year seconds (Kepler under linear mass loss, dT/T = −2 dM/M).
153
179
  * @param {number} t_Ma @returns {number} */
154
180
  function siderealYearSecondsAtAge(t_Ma) {
@@ -165,7 +191,16 @@ function createDeepTimeLod(deps) {
165
191
  return K.meanSiderealYearJ2000Seconds * (1 - mass_loss_fraction) * (1 - mass_loss_fraction);
166
192
  }
167
193
 
168
- /** @param {number} t_Ma @returns {number} tropical = sidereal · (1 − 13/H(t)) */
194
+ /** @param {number} t_Ma @returns {number} tropical = sidereal · (1 − 13/H(t)).
195
+ * The 13/H(t) here is the unit's CALENDAR convention (one turn per H₀/13
196
+ * of the unit — the kinematic day/year identities on H/(H − 13) and the
197
+ * deep JD↔year calendar ride it), NOT a precession claim: the published
198
+ * precession period is the composed T_p (S5), 0.086 % apart. Kept
199
+ * unchanged in S5 so nothing certified moves (calendar, goldens, CSV);
200
+ * plan-06 D2 DECIDED: relabel, not re-base — the 0.086 % is the fit
201
+ * anchor's convention (H₀/T_p = 13.011, constant at every epoch beyond
202
+ * ±2 Myr, measured), and re-basing would move every comb coefficient
203
+ * for a rounding-level gain. This tier stays a named device. */
169
204
  function tropicalYearSecondsAtAge(t_Ma) {
170
205
  const sidSec = siderealYearSecondsAtAge(t_Ma);
171
206
  const Ht = hAtAge(t_Ma);
@@ -206,11 +241,31 @@ function createDeepTimeLod(deps) {
206
241
  return eraClockTropicalYearSecondsAtAge(t_Ma) / LOD_s;
207
242
  }
208
243
 
244
+ /**
245
+ * The solar day's "ecliptic missing motion" correction, seconds: the mean
246
+ * solar day is counted against the Sun on the ECLIPTIC, whose plane turns
247
+ * on the invariable plane once per nodal period T_s₃, so Earth rotates
248
+ * 1/(T_s₃·mSY) of a turn more per solar day — δLOD = LOD_mean/(T_s₃·mSY)
249
+ * (≈ 3.44 ms at J2000). T_s₃ is an orbital quantity: constant at every
250
+ * epoch (μ-tier), so the term rides only LOD_mean and the year length at
251
+ * deep time. ONE home for the three runtimes' `h5Correction` twins (the
252
+ * identifier keeps its name; the divisor is the nodal period since the
253
+ * plan 06 T2 restatement, formerly the spin unit's H/5).
254
+ * @param {number} t_Ma @returns {number|null} seconds (null past tidal lock)
255
+ */
256
+ function eclipticLodCorrectionSecondsAtAge(t_Ma) {
257
+ const lodMean = lodSecondsAtAge(t_Ma);
258
+ if (lodMean === null) return null;
259
+ const mSY_days = tropicalYearDaysAtAge(t_Ma);
260
+ if (mSY_days === null) return null;
261
+ return lodMean / (deps.nodalPeriodYearsFn() * mSY_days);
262
+ }
263
+
209
264
  /**
210
265
  * RAW ΔT integral relative to J2000 (0 at t=0 by convention) — Simpson
211
- * over the H/5-raw kinematic LOD, WITHOUT the cycle corrections and
212
- * WITHOUT a cache. The engines wrap this: flag-keyed cache + their exact
213
- * sequential post-integration adds (see the module header).
266
+ * over the kinematic LOD plus the ecliptic missing-motion term, WITHOUT the
267
+ * cycle corrections and WITHOUT a cache. The engines wrap this: flag-keyed
268
+ * cache + their exact sequential post-integration adds (see the module header).
214
269
  * @param {number} t_Ma @returns {number} seconds (NaN past tidal lock)
215
270
  */
216
271
  function deltaTRawSecondsAtAge(t_Ma) {
@@ -227,15 +282,14 @@ function createDeepTimeLod(deps) {
227
282
  const lodMean = lodSecondsAtAge(tau);
228
283
  if (lodMean === null) return NaN;
229
284
  const yearS = tropicalYearSecondsAtAge(tau);
230
- // H/5 ecliptic "missing motion" — the solar day is measured against
231
- // the Sun on the ECLIPTIC (precesses at H/5), not the inclination
232
- // frame (H/3). Adds ~3.5 ms at J2000 (raw kinematic 86400.003 s); the
233
- // fitted cycle stack closes Layer-4 LOD_real onto the USNO anchor.
234
- // Non-null: both can only be null when lodSecondsAtAge(tau) is null,
235
- // which already returned NaN above — the checker can't see the chain.
236
- const H_local = /** @type {number} */ (hAtAge(tau));
237
- const mSY_days = /** @type {number} */ (tropicalYearDaysAtAge(tau));
238
- const lodH5Raw = lodMean + lodMean / ((H_local / 5) * mSY_days);
285
+ // Ecliptic "missing motion" — the solar day is measured against the
286
+ // Sun on the ECLIPTIC, whose plane turns on the invariable plane at the
287
+ // nodal rate s₃ (period ≈ 68,751 yr, an orbital quantity), not in the
288
+ // inclination frame. Adds ~3.4 ms at J2000; the fitted cycle stack
289
+ // closes Layer-4 LOD_real onto the USNO anchor. Non-null: the helper
290
+ // can only be null when lodSecondsAtAge(tau) is null, which already
291
+ // returned NaN above — the checker can't see the chain.
292
+ const lodH5Raw = lodMean + /** @type {number} */ (eclipticLodCorrectionSecondsAtAge(tau));
239
293
  const integrand = (86400 - lodH5Raw) * yearS * 1e6 / 86400;
240
294
  const w = (i === 0 || i === n) ? 1 : (i % 2 === 1 ? 4 : 2);
241
295
  sum += w * integrand;
@@ -331,11 +385,13 @@ function createDeepTimeLod(deps) {
331
385
 
332
386
  return {
333
387
  lodSecondsAtAge, lodSecondsAtAgeWithAlpha, lodHoursAtAge, hAtAge,
334
- lunisolarPrecessionRateArcsecPerYrAtAge,
388
+ lunisolarPrecessionRateArcsecPerYrAtAge, lunisolarPrecessionPeriodYearsAtAge,
335
389
  // the composition's terms (plan 06 Phase 3 S3, the lunisolar surface): (a₀/a_M)³ and f_S + (1 − f_S)(a₀/a_M)³
336
390
  lunarTorqueFactorAtAge: composed.lunarTorqueFactorAtAge,
337
391
  precessionTorqueTermAtAge: composed.torqueTermAtAge,
338
392
  siderealYearSecondsAtAge, tropicalYearSecondsAtAge, tropicalYearDaysAtAge,
393
+ // the solar day's ecliptic missing-motion term on the nodal period (plan 06 T2 item; one home)
394
+ eclipticLodCorrectionSecondsAtAge,
339
395
  yearInDaysAtAge, deltaTRawSecondsAtAge, lodSecondsWithCorrectionsAtAge,
340
396
  lodSecondsActualAtAge, dLodDtDecompositionAtAge,
341
397
  // the frozen era clock's named counter and bases (device tier, plan 06 D8)
@@ -12,15 +12,25 @@
12
12
  * derived from the shared constants (two-body point-mass torques with the
13
13
  * (1 − e²)^(−3/2) eccentricity factors and the lunar-inclination factor
14
14
  * 1 − 3/2·sin² i_M; ≈ 0.316, the textbook value). At J2000 every factor is 1.
15
- * Plan 06 Phase 3: the unit H(t) IS 13 of these periods at every epoch
16
- * (deltat/deep-time.cjs hAtAge builds on this factory), so H(t)/13 and the
17
- * composed period are one quantity. The pre-Phase-3 structural clock
18
- * 13·1,296,000/H_era(t) (pure ω-scaling, H_era = H₀·LOD/LOD₀) survives only
19
- * as the FROZEN ERA CLOCK's named phase convention (eraClockHAtAge) and in
20
- * docs/retired-record.md, with its record: it read 70.9 ″/yr against
21
- * Lantink et al. 2022's 108.6 ± 8.5 at 2.46 Ga and 65.2 against Meyers &
22
- * Malinverno 2018's 85.79 ± 2.72 at 1.4 Ga, where the composed rate reads
23
- * 104.5 and 86.5.
15
+ *
16
+ * THE ANCHOR p₀ (plan 06 S5 — one J2000 precession reading): p₀ is the
17
+ * model's DERIVED J2000 rate, 1,296,000/axial0 with axial0 the certified
18
+ * year-length laws' beat at 2000 (sid/(sid − trop) = 25,771.4 yr = 50.2883
19
+ * ″/yr, IAU 50.2879 to 8×10⁻⁶) — the SAME anchor the hybrid obliquity
20
+ * self-anchors on. It is NOT 1,296,000/(H/13): H₀ = 335,317 was fitted on
21
+ * the 1246 AD perihelion–solstice alignment (the perihelion-of-date beat),
22
+ * so H₀/13 = 25,793.6 yr is the fit anchor's reading, 0.086 % slow, and
23
+ * is not a period of anything the model computes (nor a window mean: the
24
+ * published period averages 25,598 yr over ±26 kyr). The unit H(t) =
25
+ * H_era/[torque term] (deltat/deep-time.cjs hAtAge) scales WITH the
26
+ * composed period — H(t)/T_p(t) = H₀/axial0 = 13.011 at every epoch — but
27
+ * is not 13 of them; the 13 is a fit-era label that leaves the physics.
28
+ * The pre-Phase-3 structural clock 13·1,296,000/H_era(t) (pure ω-scaling,
29
+ * H_era = H₀·LOD/LOD₀) survives only as the FROZEN ERA CLOCK's named phase
30
+ * convention (eraClockHAtAge) and in docs/retired-record.md, with its
31
+ * record: it read 70.9 ″/yr against Lantink et al. 2022's 108.6 ± 8.5 at
32
+ * 2.46 Ga and 65.2 against Meyers & Malinverno 2018's 85.79 ± 2.72 at
33
+ * 1.4 Ga, where the composed rate reads 104.6 and 86.6.
24
34
  *
25
35
  * Pure factory: the tidal chain is injected (each runtime's own LOD and
26
36
  * moon-distance evaluators), no artifact reads, no globals.
@@ -47,15 +57,18 @@ function computeSolarTorqueShare(c) {
47
57
 
48
58
  /**
49
59
  * @param {{
50
- * p0ArcsecPerYr: number,
60
+ * p0ArcsecPerYr: number | (() => number),
51
61
  * solarShare: number,
52
62
  * lodSecondsAtAge: (tMa: number) => (number | null),
53
63
  * lodJ2000Seconds: number,
54
64
  * moonDistanceMetresAtAge: (tMa: number) => (number | null),
55
65
  * moonDistanceJ2000Metres: number,
56
66
  * yearToTMa: (year: number) => number,
57
- * }} deps - p0 = 1,296,000/(H/13) (the model's J2000 rate); lodJ2000Seconds
58
- * the SAME day basis lodSecondsAtAge(0) returns.
67
+ * }} deps - p0 = the model's derived J2000 rate, 1,296,000/axial0 (S5; a
68
+ * number or a LAZY getter — the callers' certified year laws read the
69
+ * deep-time factory this is built inside, so the anchor is resolved on
70
+ * the first RATE use, never at construction; the torque term needs no
71
+ * anchor); lodJ2000Seconds the SAME day basis lodSecondsAtAge(0) returns.
59
72
  * @returns {{
60
73
  * composedRateArcsecPerYrAtAge: (tMa: number) => (number | null),
61
74
  * composedPeriodYearsAtAge: (tMa: number) => (number | null),
@@ -69,7 +82,18 @@ function computeSolarTorqueShare(c) {
69
82
  * }}
70
83
  */
71
84
  function createComposedPrecession(deps) {
72
- const { p0ArcsecPerYr: p0, solarShare: fS } = deps;
85
+ const { solarShare: fS } = deps;
86
+ /** @type {number|undefined} */
87
+ let p0Memo;
88
+ /** The J2000 anchor, resolved once on first use (lazy getter allowed). */
89
+ const p0 = () => {
90
+ if (p0Memo === undefined) {
91
+ const v = typeof deps.p0ArcsecPerYr === 'function' ? deps.p0ArcsecPerYr() : deps.p0ArcsecPerYr;
92
+ if (!(v > 0)) throw new Error(`createComposedPrecession: p0ArcsecPerYr must resolve to a positive rate, got ${v}`);
93
+ p0Memo = v;
94
+ }
95
+ return p0Memo;
96
+ };
73
97
  /** @param {number} tMa */
74
98
  const lunarTorqueFactorAtAge = (tMa) => {
75
99
  const a = deps.moonDistanceMetresAtAge(tMa);
@@ -88,7 +112,7 @@ function createComposedPrecession(deps) {
88
112
  const lod = deps.lodSecondsAtAge(tMa);
89
113
  const term = torqueTermAtAge(tMa);
90
114
  if (lod === null || !(lod > 0) || term === null) return null;
91
- return (deps.lodJ2000Seconds / lod) * p0 * term;
115
+ return (deps.lodJ2000Seconds / lod) * p0() * term;
92
116
  };
93
117
  /** @param {number} tMa */
94
118
  const composedPeriodYearsAtAge = (tMa) => {
@@ -96,13 +120,13 @@ function createComposedPrecession(deps) {
96
120
  return r === null ? null : 1296000 / r;
97
121
  };
98
122
  /** ψ̇(t)/ψ̇₀ — the factor a consumer scales ITS OWN certified J2000
99
- * anchor by (the hybrids anchor on the of-date beat 25,771.4 yr, not on
100
- * p₀'s 25,793; the ratio is what D6 changes, the anchor stays theirs).
101
- * ≡ 1 at J2000; null out of the tidal chain's domain.
123
+ * anchor by (since S5 p₀ and the hybrids' anchor are the same derived
124
+ * value, 25,771.4 yr; the ratio is what D6 changes). ≡ 1 at J2000; null
125
+ * out of the tidal chain's domain.
102
126
  * @param {number} tMa */
103
127
  const composedRateRatioAtAge = (tMa) => {
104
128
  const r = composedRateArcsecPerYrAtAge(tMa);
105
- return r === null ? null : r / p0;
129
+ return r === null ? null : r / p0();
106
130
  };
107
131
  return {
108
132
  composedRateArcsecPerYrAtAge,
@@ -113,7 +137,7 @@ function createComposedPrecession(deps) {
113
137
  torqueTermAtAge,
114
138
  lunarTorqueFactorAtAge,
115
139
  solarShare: fS,
116
- p0ArcsecPerYr: p0,
140
+ get p0ArcsecPerYr() { return p0(); },
117
141
  };
118
142
  }
119
143
 
package/src/index.js CHANGED
@@ -227,19 +227,22 @@ export const createModel = (constants = GENERATED, opts = {}) => {
227
227
  hash,
228
228
 
229
229
  /**
230
- * H-lattice periods — the structural identities, in years.
230
+ * The fit-era lattice identities H/13, H/3, H/16, in years — DEVICE tier.
231
231
  *
232
- * PURE ALGEBRA OVER THE CONTEXT. No epoch, no formula, no fit. These are
233
- * the divisor relationships H/13, H/3, H/16 that define the lattice, and
234
- * they exist here in Phase 5 for one reason: a hash-only counterfactual
235
- * test would still pass if `createModel` ignored its argument entirely.
236
- * Something has to READ the context and return a number for injection to be
237
- * demonstrated end to end.
232
+ * PURE ALGEBRA OVER THE CONTEXT. No epoch, no formula, no fit. They exist
233
+ * here for one reason: a hash-only counterfactual test would still pass if
234
+ * `createModel` ignored its argument entirely. Something has to READ the
235
+ * context and return a number for injection to be demonstrated end to end.
238
236
  *
239
- * The motion model is Phase 6. This is not it.
237
+ * These are NOT the published periods (plan 06 S5): the axial precession
238
+ * period is `epoch.axialPrecessionYearsAtYear` (25,771.4 yr at J2000, the
239
+ * of-date year laws' beat); H/13 = 25,793.6 is the fit anchor's reading,
240
+ * 0.086 % slow — H₀ was fitted on the perihelion-of-date beat. Likewise
241
+ * H/3 and H/16 against the chain's apsidal and perihelion-of-date periods.
242
+ * The property names keep their historical form (plan 06 P4).
240
243
  *
241
244
  * `divisor` and `period` are never interchangeable (CLAUDE.md): 13 is the
242
- * divisor, H/13 years is the period. The names say which.
245
+ * divisor, H/13 years is the identity's value. The names say which.
243
246
  *
244
247
  * @returns {{axialPrecessionPeriodYears: number, inclinationPrecessionPeriodYears: number, perihelionPrecessionPeriodYears: number}}
245
248
  */
@@ -149,7 +149,10 @@ export const createEpochPrimitives = ({ params: p, alphaAtAgeMa }) => {
149
149
  };
150
150
 
151
151
  /**
152
- * Tropical year — sidereal less one axial-precession turn, H/13.
152
+ * Tropical year — sidereal less one calendar turn of the unit, 13/H(t): the
153
+ * unit's CALENDAR convention (plan 06 S5 — a device identity, 0.086 % from
154
+ * one turn per the published precession period; D2 decided: it stays a
155
+ * named device, never re-based).
153
156
  * Falls back to the J2000 H past the asymptote, matching the shipped chain.
154
157
  * @param {number} t age in Ma
155
158
  * @returns {number} seconds