@essrt/physics 1.3.0 → 1.3.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 +1 -1
- package/package.json +1 -1
- package/src/deltat/deep-time.cjs +9 -1
- package/src/layer0/index.js +6 -1
package/README.md
CHANGED
|
@@ -53,7 +53,7 @@ The canonical assembly, wired once inside the package:
|
|
|
53
53
|
import { createModel, DEFAULT_CONSTANTS } from '@essrt/physics';
|
|
54
54
|
|
|
55
55
|
const model = createModel();
|
|
56
|
-
model.identity.modelVersion; // '
|
|
56
|
+
model.identity.modelVersion; // the shipped model identity (e.g. 'v11.0') + both content hashes
|
|
57
57
|
model.epoch.hAtYear(2000 - 380e6); // 306189 — Devonian H (the Wells 1963 match)
|
|
58
58
|
model.earth.obliquityDeg(2000); // 23.4393
|
|
59
59
|
model.cardinal.jd(2000, 'SS'); // 2451716.575 — June solstice 2000 (USNO)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@essrt/physics",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "ESSRT (Expanding Solar System Resonance Theory) physics core \u2014 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": "v11.0",
|
package/src/deltat/deep-time.cjs
CHANGED
|
@@ -113,7 +113,15 @@ function createDeepTimeLod(deps) {
|
|
|
113
113
|
function siderealYearSecondsAtAge(t_Ma) {
|
|
114
114
|
if (t_Ma === 0) return K.meanSiderealYearJ2000Seconds;
|
|
115
115
|
const mass_loss_fraction = K.solarMassLossFracPerYear * t_Ma * 1e6;
|
|
116
|
-
|
|
116
|
+
// Exact Kepler under the model's mass-history convention (a·M = const,
|
|
117
|
+
// a(t) = a₀·(1−Δm)): T ∝ M⁻² ⇒ T(t) = T₀·(1−Δm)² — the SAME Driver-2
|
|
118
|
+
// law the planet chains use (orbit-chain driver2PeriodSecondsAtAge).
|
|
119
|
+
// The previous (1 − 2Δm) was this law's first-order Taylor — the one
|
|
120
|
+
// form in the model inconsistent with it, and the entire source of the
|
|
121
|
+
// day-count invariant's 0.17 ppm residual: with the product form,
|
|
122
|
+
// H·(days/yr)·(AU₀/AU)² = TOTAL_DAYS_IN_H holds EXACTLY
|
|
123
|
+
// (tools/explore/deep-time-sensitivity.js §5; docs/99 §near-invariant).
|
|
124
|
+
return K.meanSiderealYearJ2000Seconds * (1 - mass_loss_fraction) * (1 - mass_loss_fraction);
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
/** @param {number} t_Ma @returns {number} tropical = sidereal · (1 − 13/H(t)) */
|
package/src/layer0/index.js
CHANGED
|
@@ -118,7 +118,12 @@ export const createEpochPrimitives = ({ params: p, alphaAtAgeMa }) => {
|
|
|
118
118
|
*/
|
|
119
119
|
const siderealYearSecondsCore = (t) => {
|
|
120
120
|
if (t === 0) return p.siderealYearJ2000Seconds;
|
|
121
|
-
|
|
121
|
+
// Exact Kepler product form (T ∝ M⁻² under a·M = const, a(t) = a₀·(1−Δm))
|
|
122
|
+
// — the same Driver-2 law as the planet chains and deltat/deep-time.cjs.
|
|
123
|
+
// MUST stay the bit-exact twin of siderealYearSecondsAtAge there (the
|
|
124
|
+
// transparency gate holds the pair at 84/84 round-trip).
|
|
125
|
+
const dm = p.solarMassLossFracPerYear * t * 1e6;
|
|
126
|
+
return p.siderealYearJ2000Seconds * (1 - dm) * (1 - dm);
|
|
122
127
|
};
|
|
123
128
|
|
|
124
129
|
/**
|