@essrt/physics 6.0.1 → 7.0.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@essrt/physics",
3
- "version": "6.0.1",
3
+ "version": "7.0.0",
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: "3f803b0a4e2b0b3c";
5
+ export declare const COEFFICIENTS_HASH: "78f99d98186e50d9";
6
6
 
7
7
  export declare const FITTED_COEFFICIENTS: {
8
8
  readonly ANOMALISTIC_YEAR_HARMONICS: Array<[number, number, number]>;
@@ -624,6 +624,10 @@ export declare const FITTED_COEFFICIENTS: {
624
624
  "joint_mode": boolean;
625
625
  };
626
626
  };
627
+ readonly EARTH_OSCULATING_MEAN_OFFSET: {
628
+ "dPomArcsec": number;
629
+ "dE": number;
630
+ };
627
631
  readonly MEEUS_DISTANCE_TERMS: {
628
632
  "meanKm": number;
629
633
  "terms": Array<number[]>;
@@ -17,7 +17,7 @@
17
17
  */
18
18
 
19
19
  /** @type {string} */
20
- export const COEFFICIENTS_HASH = "3f803b0a4e2b0b3c";
20
+ export const COEFFICIENTS_HASH = "78f99d98186e50d9";
21
21
 
22
22
  /** @type {Readonly<Record<string, unknown>>} */
23
23
  export const FITTED_COEFFICIENTS = Object.freeze({
@@ -32,6 +32,7 @@ export const FITTED_COEFFICIENTS = Object.freeze({
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
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
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
+ EARTH_OSCULATING_MEAN_OFFSET: {"dPomArcsec":70.07583630940354,"dE":0.000005809952284235912},
35
36
  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
37
  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
38
  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]],
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * ΔT cycle-correction stack — THE shared implementation (Phase 8.4, slice 2).
3
3
  *
4
- * The four anchored lattice-cycle ΔT corrections (Bond 8H/1830, Hallstatt
5
- * 8H/1104, Jose5 8H/2989, Jose4 8H/3749 — Jose5/Jose4 are a COUPLED PAIR,
6
- * fitted jointly), their implied δLOD twins (the d/dy of each correction:
7
- * physical consistency between the corrected ΔT curve and the LOD curve),
8
- * and the Core-mantle swing episode (Resonator driver: 2-kick damped
9
- * eigenmode T₀ = 8H/685, Q = 1.8, plus one switch-on-compensated drive
4
+ * The four anchored millennial ΔT corrections (Bond 1,466 yr, Hallstatt
5
+ * 2,430 yr, Jose5 897 yr, Jose4 716 yr — fitted periods STATED IN YEARS,
6
+ * plan 06 T5: the former 8H/n labels carry no information; Jose5/Jose4 are
7
+ * a COUPLED PAIR, fitted jointly), their implied δLOD twins (the d/dy of
8
+ * each correction: physical consistency between the corrected ΔT curve and
9
+ * the LOD curve), and the Core-mantle swing episode (Resonator driver:
10
+ * 2-kick damped eigenmode T₀ = 3,916 yr, Q = 1.8, plus one switch-on-compensated drive
10
11
  * tone at the bond−hallstatt difference frequency — the §10g-adjacent
11
12
  * phase-locked construction; docs/104 §6/§8).
12
13
  *
@@ -32,20 +33,21 @@
32
33
  'use strict';
33
34
 
34
35
  /**
35
- * @typedef {{ latticeN: number, cosCoeffSeconds: number, sinCoeffSeconds: number }} CycleSpec
36
+ * @typedef {{ periodYears: number, cosCoeffSeconds: number, sinCoeffSeconds: number }} CycleSpec
36
37
  * @typedef {{ tYear: number, cosSeconds: number, sinSeconds: number }} ResonatorKick
37
- * @typedef {{ dn: number, phiLockedRad: number, ampSeconds: number }} ResonatorTone
38
+ * @typedef {{ periodYears: number, phiLockedRad: number, ampSeconds: number }} ResonatorTone
38
39
  */
39
40
 
40
41
  /**
41
42
  * @typedef {Object} DeltaTCyclesDeps
42
- * @property {number} eightHYears - 8 × the holistic year (J2000)
43
43
  * @property {number} taperFullHalfwidthYears - full strength within |y−2000| ≤ this
44
44
  * @property {number} taperTotalHalfwidthYears - zero beyond
45
45
  * @property {number} tropicalYearSecondsJ2000 - δLOD denominator (variation ≤1e-8 in-window)
46
- * @property {Record<string, CycleSpec>} cycles - keyed bond/hallstatt/jose5/jose4
47
- * @property {{ t0LatticeN: number, q: number, kicks: ResonatorKick[],
48
- * tones: ResonatorTone[] }} resonator
46
+ * @property {Record<string, CycleSpec>} cycles - keyed bond/hallstatt/jose5/jose4; each
47
+ * period in YEARS (the fit file's `period_yr` — the former 8H/n divisor is
48
+ * gone from the runtime, plan 06 T5 / layer B item 3)
49
+ * @property {{ t0Years: number, q: number, kicks: ResonatorKick[],
50
+ * tones: ResonatorTone[] }} resonator - T₀ and the tones' periods in years
49
51
  */
50
52
 
51
53
  /**
@@ -86,8 +88,7 @@ function createDeltaTCycles(deps) {
86
88
  /** @type {Record<string, {omega: number, cosC: number, sinC: number, rawAtJ2000: number}>} */
87
89
  const cyc = {};
88
90
  for (const [key, c] of Object.entries(deps.cycles)) {
89
- const periodYears = deps.eightHYears / c.latticeN;
90
- const omega = 2 * Math.PI / periodYears;
91
+ const omega = 2 * Math.PI / c.periodYears;
91
92
  cyc[key] = {
92
93
  omega, cosC: c.cosCoeffSeconds, sinC: c.sinCoeffSeconds,
93
94
  rawAtJ2000: c.cosCoeffSeconds * Math.cos(omega * 2000) + c.sinCoeffSeconds * Math.sin(omega * 2000),
@@ -120,13 +121,13 @@ function createDeltaTCycles(deps) {
120
121
 
121
122
  // ── Core-mantle swing (Resonator driver) ─────────────────────────────────
122
123
  const R = deps.resonator;
123
- const RES_T0_YR = deps.eightHYears / R.t0LatticeN;
124
+ const RES_T0_YR = R.t0Years;
124
125
  const RES_W0 = 2 * Math.PI / RES_T0_YR;
125
126
  const RES_LAMBDA = RES_W0 / (2 * R.q);
126
127
  const RES_WD = RES_W0 * Math.sqrt(1 - 1 / (4 * R.q * R.q));
127
128
  const RES_KICKS = R.kicks.map((k) => ({ t: k.tYear, cos_s: k.cosSeconds, sin_s: k.sinSeconds }));
128
129
  const RES_TONES = R.tones.map((t) => ({
129
- omega: 2 * Math.PI * t.dn / deps.eightHYears, phi_locked: t.phiLockedRad, amp_s: t.ampSeconds,
130
+ omega: 2 * Math.PI / t.periodYears, phi_locked: t.phiLockedRad, amp_s: t.ampSeconds,
130
131
  }));
131
132
 
132
133
  // IMPULSE-CONSISTENT episode: kicks are sin-only (displacement-continuous —
package/src/model.js CHANGED
@@ -30,7 +30,6 @@ import { createDeltaTCycles } from './deltat/cycles.cjs';
30
30
  import { createDeepTimeLod } from './deltat/deep-time.cjs';
31
31
  import { createMoonRecessionHistory, createSolarChannelBudget } from './deltat/recession-history.cjs';
32
32
  import { evalClimateL1OrbitalPermil, createAlphaGiaChannel } from './climate/l1-orbital.cjs';
33
- import { createMoonEccChannel } from './moon/ecc-channel.cjs';
34
33
  import { createDeepEccChannel } from './moon/deep-ecc-channel.cjs';
35
34
  import { DEEP_MODES_ARTIFACT } from './moon/deep-modes-artifact.cjs';
36
35
  import { createMoonMonthChain } from './moon/month-chain.cjs';
@@ -232,26 +231,29 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
232
231
 
233
232
  const DT = F.DT_STACK;
234
233
  const RES = F.DT_RESONATOR;
234
+ // Periods STATED IN YEARS (the fit files' period_yr / T0_yr): plan 06 T5
235
+ // measured the former 8H/n labels chance-level; layer B item 3 removed the
236
+ // divisor from every runtime. Twins: tools/lib/deep-time.js, src/script.js,
237
+ // the website's essrt.ts.
235
238
  const dtCycles = createDeltaTCycles({
236
- eightHYears: 8 * H,
237
239
  taperFullHalfwidthYears: C.deepTime.dtStackTaperFullHalfwidthYr,
238
240
  taperTotalHalfwidthYears: C.deepTime.dtStackTaperTotalHalfwidthYr,
239
241
  tropicalYearSecondsJ2000: meanTropicalYearJ2000Seconds,
240
242
  cycles: {
241
- bond: { latticeN: DT.bond.lattice_n, cosCoeffSeconds: DT.bond.cos_coeff_s, sinCoeffSeconds: DT.bond.sin_coeff_s },
242
- hallstatt: { latticeN: DT.hallstatt.lattice_n, cosCoeffSeconds: DT.hallstatt.cos_coeff_s, sinCoeffSeconds: DT.hallstatt.sin_coeff_s },
243
- jose5: { latticeN: DT.jose5.lattice_n, cosCoeffSeconds: DT.jose5.cos_coeff_s, sinCoeffSeconds: DT.jose5.sin_coeff_s },
244
- jose4: { latticeN: DT.jose4.lattice_n, cosCoeffSeconds: DT.jose4.cos_coeff_s, sinCoeffSeconds: DT.jose4.sin_coeff_s },
243
+ bond: { periodYears: DT.bond.period_yr, cosCoeffSeconds: DT.bond.cos_coeff_s, sinCoeffSeconds: DT.bond.sin_coeff_s },
244
+ hallstatt: { periodYears: DT.hallstatt.period_yr, cosCoeffSeconds: DT.hallstatt.cos_coeff_s, sinCoeffSeconds: DT.hallstatt.sin_coeff_s },
245
+ jose5: { periodYears: DT.jose5.period_yr, cosCoeffSeconds: DT.jose5.cos_coeff_s, sinCoeffSeconds: DT.jose5.sin_coeff_s },
246
+ jose4: { periodYears: DT.jose4.period_yr, cosCoeffSeconds: DT.jose4.cos_coeff_s, sinCoeffSeconds: DT.jose4.sin_coeff_s },
245
247
  },
246
248
  resonator: {
247
- t0LatticeN: RES.T0_lattice_n,
249
+ t0Years: RES.T0_yr,
248
250
  q: RES.Q,
249
251
  kicks: RES.kick_epochs_year.map(/** @param {number} t @param {number} i */ (t, i) => ({
250
252
  tYear: t,
251
253
  cosSeconds: RES.kick_coefficients_s[i].cos,
252
254
  sinSeconds: RES.kick_coefficients_s[i].sin,
253
255
  })),
254
- tones: RES.drive_tones.map(/** @param {{dn: number, phi_locked_rad: number, amp_s: number}} t */ (t) => ({ dn: t.dn, phiLockedRad: t.phi_locked_rad, ampSeconds: t.amp_s })),
256
+ tones: RES.drive_tones.map(/** @param {{period_yr: number, phi_locked_rad: number, amp_s: number}} t */ (t) => ({ periodYears: t.period_yr, phiLockedRad: t.phi_locked_rad, ampSeconds: t.amp_s })),
255
257
  },
256
258
  });
257
259
 
@@ -346,14 +348,21 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
346
348
 
347
349
  // ── Earth scalars (integrated-phase display semantics) ────────────────────
348
350
  /** @param {number} year @returns {number} */
349
- const earthPerihelionDeg = laws.perihelionLongitudeDegAt ?? ((year) => {
350
- let longitude = 270.0 + 360.0 * cyclesBetween(balancedYear, year, 16);
351
- for (const [div, sinC, cosC] of F.PERI_HARMONICS_RAW) {
352
- const ph = phaseRadians(balancedYear, year, div);
353
- longitude += sinC * Math.sin(ph) + cosC * Math.cos(ph);
354
- }
355
- return (((longitude + F.PERI_OFFSET) % 360) + 360) % 360;
356
- });
351
+ // Plan 06 layer B — the eclipse Sun onto the series. The PUBLISHED Earth
352
+ // ϖ of date is the one-source series (the secular orbit; its J2000 element
353
+ // ≡ La2004's — the same field the D4c apsidal wheel renders). The SUN's
354
+ // equation of centre needs the MEAN elements of the era: the series plus the
355
+ // derived mean offset of the osculating channel (F.EARTH_OSCULATING_MEAN_
356
+ // OFFSET, tools/verify/earth-osculating-offset.js — the 1890–2110 mean of
357
+ // osculating − secular from the Horizons-seeded nine-body run). Measured:
358
+ // the fast osculating wobble is carried by the completion's direct terms and
359
+ // double-counts if added; the window mean is what the Sun residual holds
360
+ // (all-phase JPL sd 3.23″ → 1.59″; the former K law's Standish anchor
361
+ // 1.58″). The former K perihelion Fourier law (H divisors) is retired here.
362
+ const earthPerihelionDeg = (year) => oneSourceM.periOfDateDegAt(year);
363
+ const SUN_OFF = F.EARTH_OSCULATING_MEAN_OFFSET;
364
+ /** The eclipse Sun's ϖ of date (mean elements). @param {number} year @returns {number} */
365
+ const sunPerihelionDegAt = laws.perihelionLongitudeDegAt ?? ((year) => oneSourceM.periOfDateDegAt(year) + SUN_OFF.dPomArcsec / 3600);
357
366
  /** @param {number} year @returns {number} */
358
367
  const obliquityDeg = (year) => {
359
368
  let obliq = solsticeObliquityMean;
@@ -395,13 +404,10 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
395
404
  // (θ₀ = ϖ_ICRF(J2000) − 21.77° = 81.178°, the System-Reset anchor in
396
405
  // anchor form — doc 66 §1); base' is derived inside from the observed
397
406
  // J2000 eccentricity.
398
- const moonEcc = createMoonEccChannel({
399
- cyclesBetween,
400
- eccentricityBase: C.earth.eccentricityBase,
401
- perihelionLongitudeJ2000Deg: C.earthOrbital.earthPerihelionLongitudeJ2000,
402
- inclinationCycleAnchorDeg: C.earthOrbital.earthInclinationCycleAnchor,
403
- eccentricityJ2000: C.earthOrbital.earthEccentricityJ2000,
404
- });
407
+ // (The H/3 eccentricity-law channel — createMoonEccChannel — left this
408
+ // package with plan 06 layer B: the Sun's e is the one-source series plus
409
+ // the derived mean offset above; the browser's scene Sun still reads the
410
+ // law through its own _moonEcc until the cardinal points move.)
405
411
  // Engine-switch decision (ii) (plan 02 §8): the ONE deep e — the engine's
406
412
  // own ±10-Myr mode table, anchored form — feeds the ENTIRE lunar chain
407
413
  // (modulation, cycle counts, arguments eccAt/channelIntegral, E-factor).
@@ -411,10 +417,16 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
411
417
  // laws hook deliberately does NOT reach this channel.
412
418
  const deepEcc = createDeepEccChannel(DEEP_MODES_ARTIFACT);
413
419
  /** @param {number} year @returns {number} */
414
- const eccentricityAt = laws.eccentricityAt ?? ((year) => moonEcc.eccAt(year - 2000));
415
- /** de/dyear of the one law — the cardinal braid's equation-of-centre
416
- * derivative rides it. @param {number} year @returns {number} */
417
- const eccentricityRateAt = laws.eccentricityRateAt ?? ((year) => moonEcc.eccRateAt(year - 2000));
420
+ // Plan 06 layer B: the PUBLISHED Earth eccentricity is the one-source series
421
+ // (|z|, the secular orbit); the SUN's e adds the derived mean offset (see
422
+ // sunPerihelionDegAt). The former H/3 eccentricity law is retired here.
423
+ const eccentricityAt = (year) => oneSourceM.eAt(year);
424
+ /** The eclipse Sun's e (mean elements). @param {number} year @returns {number} */
425
+ const sunEccentricityAt = laws.eccentricityAt ?? ((year) => oneSourceM.eAt(year) + SUN_OFF.dE);
426
+ /** de/dyear of the Sun's e — the cardinal braid's equation-of-centre
427
+ * derivative rides it (±0.5-yr central difference; the constant offset
428
+ * cancels). @param {number} year @returns {number} */
429
+ const sunEccentricityRateAt = laws.eccentricityRateAt ?? ((year) => oneSourceM.eAt(year + 0.5) - oneSourceM.eAt(year - 0.5));
418
430
  /** @param {number} year @returns {number} */
419
431
  const inclinationDeg = (year) => earthInclMean
420
432
  - earthInclAmplitude * Math.cos(phaseRadians(balancedYear, year, 3));
@@ -519,8 +531,8 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
519
531
  },
520
532
  meanHAtAgeMa: (tMa) => deepLod.eraClockHAtAge(tMa),
521
533
  meanYearRealLodDays: (tMa) => deepLod.eraClockYearInDaysAtAge(tMa),
522
- eccentricityAt,
523
- eccentricityRateAt,
534
+ eccentricityAt: sunEccentricityAt,
535
+ eccentricityRateAt: sunEccentricityRateAt,
524
536
  },
525
537
  });
526
538
  // ── One-source cardinal structure (D4b) ───────────────────────────────────
@@ -625,6 +637,10 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
625
637
  });
626
638
  return {
627
639
  yearLengths,
640
+ /** EXPERIMENT accessors: the series' e and equinox-referenced ϖ of date. @param {number} year @returns {number} */
641
+ eAt: (year) => sampleAt(year).e,
642
+ /** @param {number} year @returns {number} */
643
+ periOfDateDegAt: (year) => sampleAt(year).periOfDateDeg,
628
644
  /** The hybrid's obliquity at a decimal year, degrees — the banked series inside its span, the α(t)-coupled ζ-tail integration beyond (the deep sampler grows ~0.1 s/Myr). @param {number} year @returns {number} */
629
645
  epsAt: (year) => sampleAt(year).epsDeg,
630
646
  };
@@ -651,7 +667,9 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
651
667
  const syS = solarYearSeconds(year);
652
668
  const syD = tropicalYearDays(year);
653
669
  const sidDay = siderealDaySeconds(year);
654
- const raProjection = Math.cos((obliquityDeg(year) * Math.PI) / 180);
670
+ // Layer A (plan 06): the RA projection reads the published ε (the one-source
671
+ // hybrid), not the K comb — the browser's _sceneEpsTargetDeg twin; 1e-8 s.
672
+ const raProjection = Math.cos((oneSourceM.epsAt(year) * Math.PI) / 180);
655
673
  return (syS / (syD + 1) / Tp / (syD + 1)) * raProjection + sidDay;
656
674
  };
657
675
  /** @param {number} year @returns {number} */
@@ -926,20 +944,8 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
926
944
  return (dr === null || t === null) ? null : dr - t;
927
945
  };
928
946
 
929
- // Snapshot-phase obliquity — the engine's computeObliquityEarth convention
930
- // for the lunar chain (linear H-lattice phase; orbital-engine.js). NOT the
931
- // integrated-phase display obliquity above — the chain was certified
932
- // against this form.
933
- /** @param {number} year @returns {number} */
934
- const obliquitySnapshotDeg = (year) => {
935
- const t = year - balancedYear;
936
- let obliq = solsticeObliquityMean;
937
- for (const [div, sinC, cosC] of F.SOLSTICE_OBLIQUITY_HARMONICS) {
938
- const ph = (2 * Math.PI * t) / (H / div);
939
- obliq += sinC * Math.sin(ph) + cosC * Math.cos(ph);
940
- }
941
- return obliq;
942
- };
947
+ // (The K snapshot-phase obliquity the lunar chain was certified against left
948
+ // with layer A / item 3c: the arguments' carrier reads the published ε.)
943
949
 
944
950
  // The argument skeleton (the _FW_MOON bundle; Sun secular deviations on
945
951
  // the CALENDAR year coordinate — S3)
@@ -964,7 +970,10 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
964
970
  fns: {
965
971
  eccAt: /** @param {number} tYr */ (tYr) => deepEcc.eccAt(tYr),
966
972
  channelIntegral: /** @param {number} T @param {number} s */ (T, s) => deepEcc.channelIntegral(T, s),
967
- computeObliquityEarth: obliquitySnapshotDeg,
973
+ // Layer A / item 3c (plan 06): the arguments' obliquity carrier reads the
974
+ // PUBLISHED ε (the one-source hybrid), not the K snapshot comb — one ε
975
+ // everywhere. Twins: script.js (_sceneEpsTargetDeg), scene-graph.js.
976
+ computeObliquityEarth: /** @param {number} year @returns {number} */ (year) => oneSourceM.epsAt(year),
968
977
  jdToSIyear: yearFromJD,
969
978
  tropicalOrbitsBetween: mcTropical,
970
979
  apsidalOfDateCyclesBetween: mcApsidalOfDate,
@@ -1180,8 +1189,8 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
1180
1189
  frameworkSun: {
1181
1190
  sunMeanLongitudeJ2000Deg: sunL0Deg,
1182
1191
  tropicalRateDegPerCy: sunTropicalRateDegPerCy,
1183
- eccentricityAt,
1184
- perihelionLongitudeDegAt: earthPerihelionDeg,
1192
+ eccentricityAt: sunEccentricityAt,
1193
+ perihelionLongitudeDegAt: sunPerihelionDegAt,
1185
1194
  meanLongitudeDegAt: sunMeanLongitudeDegAt,
1186
1195
  },
1187
1196
  constants: {
@@ -1232,8 +1241,8 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
1232
1241
  moonExtensionAt: moonSeriesExtensionDeg,
1233
1242
  deltaTSecondsAt: /** @param {number} jd */ (jd) => (jdTTFromUT(jd) - jd) * 86400,
1234
1243
  obliquityDegAt: obliquityDeg,
1235
- eccentricityAt,
1236
- perihelionLongitudeDegAt: earthPerihelionDeg,
1244
+ eccentricityAt: sunEccentricityAt,
1245
+ perihelionLongitudeDegAt: sunPerihelionDegAt,
1237
1246
  yearFromJD,
1238
1247
  constants: {
1239
1248
  j2000JD,
@@ -1451,8 +1460,8 @@ export function assembleModel(C, F, laws = {}, secularSeriesArtifact = /** @type
1451
1460
  frameworkSunDeps: Object.freeze({
1452
1461
  sunMeanLongitudeJ2000Deg: sunL0Deg,
1453
1462
  tropicalRateDegPerCy: sunTropicalRateDegPerCy,
1454
- eccentricityAt,
1455
- perihelionLongitudeDegAt: earthPerihelionDeg,
1463
+ eccentricityAt: sunEccentricityAt,
1464
+ perihelionLongitudeDegAt: sunPerihelionDegAt,
1456
1465
  meanLongitudeDegAt: sunMeanLongitudeDegAt,
1457
1466
  }),
1458
1467
  // 20.3g location tier (see eclipse/besselian.cjs):
@@ -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: "3f803b0a4e2b0b3c";
5
+ export declare const COEFFICIENTS_HASH: "78f99d98186e50d9";
6
6
 
7
7
  export declare const FITTED_COEFFICIENTS: {
8
8
  readonly ANOMALISTIC_YEAR_HARMONICS: Array<[number, number, number]>;
@@ -624,6 +624,10 @@ export declare const FITTED_COEFFICIENTS: {
624
624
  "joint_mode": boolean;
625
625
  };
626
626
  };
627
+ readonly EARTH_OSCULATING_MEAN_OFFSET: {
628
+ "dPomArcsec": number;
629
+ "dE": number;
630
+ };
627
631
  readonly MEEUS_DISTANCE_TERMS: {
628
632
  "meanKm": number;
629
633
  "terms": Array<number[]>;
@@ -1,5 +1,5 @@
1
1
  export type CycleSpec = {
2
- latticeN: number;
2
+ periodYears: number;
3
3
  cosCoeffSeconds: number;
4
4
  sinCoeffSeconds: number;
5
5
  };
@@ -9,15 +9,11 @@ export type ResonatorKick = {
9
9
  sinSeconds: number;
10
10
  };
11
11
  export type ResonatorTone = {
12
- dn: number;
12
+ periodYears: number;
13
13
  phiLockedRad: number;
14
14
  ampSeconds: number;
15
15
  };
16
16
  export type DeltaTCyclesDeps = {
17
- /**
18
- * - 8 × the holistic year (J2000)
19
- */
20
- eightHYears: number;
21
17
  /**
22
18
  * - full strength within |y−2000| ≤ this
23
19
  */
@@ -31,30 +27,36 @@ export type DeltaTCyclesDeps = {
31
27
  */
32
28
  tropicalYearSecondsJ2000: number;
33
29
  /**
34
- * - keyed bond/hallstatt/jose5/jose4
30
+ * - keyed bond/hallstatt/jose5/jose4; each
31
+ * period in YEARS (the fit file's `period_yr` — the former 8H/n divisor is
32
+ * gone from the runtime, plan 06 T5 / layer B item 3)
35
33
  */
36
34
  cycles: Record<string, CycleSpec>;
35
+ /**
36
+ * - T₀ and the tones' periods in years
37
+ */
37
38
  resonator: {
38
- t0LatticeN: number;
39
+ t0Years: number;
39
40
  q: number;
40
41
  kicks: ResonatorKick[];
41
42
  tones: ResonatorTone[];
42
43
  };
43
44
  };
44
45
  /**
45
- * @typedef {{ latticeN: number, cosCoeffSeconds: number, sinCoeffSeconds: number }} CycleSpec
46
+ * @typedef {{ periodYears: number, cosCoeffSeconds: number, sinCoeffSeconds: number }} CycleSpec
46
47
  * @typedef {{ tYear: number, cosSeconds: number, sinSeconds: number }} ResonatorKick
47
- * @typedef {{ dn: number, phiLockedRad: number, ampSeconds: number }} ResonatorTone
48
+ * @typedef {{ periodYears: number, phiLockedRad: number, ampSeconds: number }} ResonatorTone
48
49
  */
49
50
  /**
50
51
  * @typedef {Object} DeltaTCyclesDeps
51
- * @property {number} eightHYears - 8 × the holistic year (J2000)
52
52
  * @property {number} taperFullHalfwidthYears - full strength within |y−2000| ≤ this
53
53
  * @property {number} taperTotalHalfwidthYears - zero beyond
54
54
  * @property {number} tropicalYearSecondsJ2000 - δLOD denominator (variation ≤1e-8 in-window)
55
- * @property {Record<string, CycleSpec>} cycles - keyed bond/hallstatt/jose5/jose4
56
- * @property {{ t0LatticeN: number, q: number, kicks: ResonatorKick[],
57
- * tones: ResonatorTone[] }} resonator
55
+ * @property {Record<string, CycleSpec>} cycles - keyed bond/hallstatt/jose5/jose4; each
56
+ * period in YEARS (the fit file's `period_yr` — the former 8H/n divisor is
57
+ * gone from the runtime, plan 06 T5 / layer B item 3)
58
+ * @property {{ t0Years: number, q: number, kicks: ResonatorKick[],
59
+ * tones: ResonatorTone[] }} resonator - T₀ and the tones' periods in years
58
60
  */
59
61
  /**
60
62
  * Build the cycle-correction evaluators over one engine's constant set.
package/types/model.d.ts CHANGED
@@ -156,7 +156,7 @@ export function assembleModel(C: Readonly<Record<string, any>>, F: Readonly<Reco
156
156
  frameworkSunDeps: Readonly<{
157
157
  sunMeanLongitudeJ2000Deg: any;
158
158
  tropicalRateDegPerCy: number;
159
- eccentricityAt: (year: number) => number;
159
+ eccentricityAt: (year: number) => any;
160
160
  perihelionLongitudeDegAt: (year: number) => number;
161
161
  meanLongitudeDegAt: (year: number) => number;
162
162
  }>;