Repository navigation
Conversation
…, and what ends a Kepler region A study for #36, which asks whether a galaxy is a big solar system. - orbits/model.js: - Kepler's law against JPL's approximate elements; - the tidal (Jacobi) radius and the density ratio 4A/Omega; - S2's orbit; - a power-law star cusp around Sgr A*; - MWPotential2014 plus Sgr A*; - a Hill-problem integrator for a point-mass or disk host; - the planets' tilts to the invariable plane. - orbits/table.mjs prints every number in the README; quick mode skips the stability scans. - tests/orbits.mjs has 21 checks. - The README gains a bullet on solar systems and galaxies, and CI runs the quick table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
These come from three reviewers with refuters (physics, claims against output, tests and code).
- Blocking: the vertical tide cannot act on orbits that start in the plane. In-plane retrograde orbits last to
0.925 r_J because Gam = 4A/Omega is 2.25, not 3. The table gains a column with (nu/Omega)^2 = 1, which shows this.
- Blocking: the Kepler-exponent check's tolerance is now the bound the excess check implies, 4.1e-4, and is
labelled model-internal.
- Kepler's law:
- n = Ldot is stated as the angular rate (Ldot - wdot would give Neptune 4.2e-3).
- The planets' total mass is an observed size, not a bound.
- A ring-averaged secular estimate is added (ringExcess) and printed.
- The great inequality is named as a long-period term the fit carries.
- Density ratio: the comparison is to the host's mean density inside the orbit (spherical), not the local
density. 4A/Omega = 2(1 - dln v/dln R).
- Sgr A*:
- The short answer gives the slope -1/4 radius, 1.0 to 1.8 pc, and the equal-mass radius separately.
- Cusp radii past the 3 pc break are flagged as lower limits.
- The 3.9 pc is credited to GRAVITY 2024, using Merritt's definition, and Feldmeier-Krause's black-hole mass is
noted.
- The Kepler region is "about 1.3 pc in radius", and it is the Milky Way's, not every galaxy's.
- Oort cloud: its edge is attributed to Correa-Otto & Calandra (near 1e5 au) and Dones et al. (as far as 2e5 au),
which is 0.35 to 0.7 r_J. A new check compares the model's edge with that range.
- Tests:
- A Jacobi-integral conservation check is added.
- A retrograde check that distinguishes the hosts is added.
- nu2 is computed in SI, independently of C.G.
- 4A/Omega is taken from the model's own curve.
- A hillScan edge is compared with Shen & Tremaine.
- The unverified Hamilton & Krivov values are dropped.
- S2's pericentre values are labelled as from the introduction.
- The 0.3 r_J check prints its plunges.
- Table:
- A long mode prints the 100-turn runs.
- New printed numbers: the vertical period, the cusp density ratio, the Eilers comparison numbers and the
bulge's flat run.
- Neptune's inside-mass is fixed.
- The A, B errors now include the systematic.
- Code: dead keplerEdge and rar are removed; flatRange defaults to outside the bulge; hillOrbit returns its
final state.
- Wording: the scale height is written as an axis ratio, and the Eilers speeds and the root bullet are made
precise.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
- n^2 a is the mean inward pull at a. It equals G M(<a)/a^2 only for a spherical mass inside, as the ring row shows. - The ring row is relabelled "own mass + the other planets as rings". The other planets' share is printed on its own; Jupiter's is -2.9e-5. - The observed irregular moons are credited to Shen & Tremaine's paper text: 0.05 to 0.6 r_H, retrograde ones further out (about 0.6 against 0.4 r_H). - New printed numbers: the 100-turn duration, the mean tilt, Saturn's gap below the ring estimate, and the plunge radius in au and in Jupiter radii (0.74). - A new check: MWPotential2014's halo mass inside 245 kpc against Bovy 2015's 0.8e12 (search text, secondary), which pins r_s. The Checks table now says the disk and bulge shapes are not otherwise tested. - Checks 18 and 19 print their thresholds. - Smaller fixes: - Uranus 1.02e-3. - The short answer gives the precession as 12.2' from GRAVITY's elements (they quote 12.1'). - The great inequality is labelled "recalled". - Bovy 2017's volume and page are marked unconfirmed. - Eilers' initials are A.-C. - The root bullet says "the Milky Way's centre". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
zero-aska
left a comment
There was a problem hiding this comment.
Independent review of commit 34593f2. Separate agent instances that did not draft the branch wrote it. Five reviewers covered Solar System sources, Galaxy and disk sources, Galactic-centre sources, physics and numerics, and tests, code and claims. Each blocking finding was then re-checked against the primary text, or recomputed, by a check separate from the reviewer that raised it.
Every source below with an arXiv version was read in its arXiv LaTeX. JPL's Table 1 was read on the SSD page, and the DE430 masses in Folkner et al.'s Table 8 and NAIF's gm_de431.tpc.
What was verified
Solar System
- JPL Table 1: all 32 values in
orbits/model.js:46-54match digit for digit, and so does Neptune's ϖ̇ intable.mjs:20-21. The frame (mean ecliptic and equinox of J2000), the units and the 36525-day century match the page. - DE430:
sunOvermatches Table 8 to 7×10⁻⁸. These are system masses, the right choice for elements that follow system barycentres. The sum is 1.34183×10⁻³. GM☉ matches IAU 2015 B3 (Prša et al. Table 1). - The excess row, Neptune's 4.2×10⁻³, the exponent 1.499857, Jupiter's Hill radius (0.3552 au) and the Sun's r_J (1.372 pc = 2.830×10⁵ au) recompute.
- r_J³ = Gm/(4AΩ) and κ² = 4Ω(Ω − A) are as Jiang and Tremaine 2010 write them, so 4Ω² − κ² = 4A(A − B).
- Bovy 2017's A and B, Correa-Otto and Calandra's "r_J ∼ 2.8 × 10^5 au", and Shen and Tremaine's 0.5 and 0.7 r_H, 0.05-0.6 r_H and 0.6 against 0.4 r_H all match their text.
- The invariable plane is 1°34′43.3″ and 107.58°, as Li, Xia and Zhou 2019 recompute Souami and Souchay's basic system. From Table 1 and the DE430 masses it recomputes to 1°34′41.6″ and 107.575°.
Galactic centre
- GRAVITY 2020 Table E.1 (M 4.261 ± 0.012, R₀ 8246.7, a 125.058, e 0.884649, P 16.0455, f_SP 1.10 ± 0.19), "the 12.1′ precession" in appendix B, and "120 AU (≈ 1400 R_S) ... 7700 km/s" in Sect. 1.2. The Kepler mass (4.2606×10⁶), 12.156′, 118.96 au, 1414 R_S and 7738 km/s recompute.
- GRAVITY 2022: 4.297 ± 0.012×10⁶ M☉ (Sect. 6, Table B.1).
- GRAVITY 2024 Sect. 4.3: 3.9 pc is the radius where the stellar mass equals 2m•, citing Merritt 2013.
- Schödel, Merritt and Eckart 2009: "0.5−1.5 × 10^6 M_⊙ in the central parsec". Schödel et al. 2018: γ = 1.13 is the 3D density slope, with a break at 3.1 ± 0.3 pc.
- The cusp model agrees with Schödel et al. 2018's own masses: 7.80×10⁶ inside 3 pc against their 7.8 ± 0.6×10⁶, and 182 against "180±30" inside 0.01 pc.
Galaxy and disk
- MWPotential2014: every parameter matches Bovy 2015 Table 1 and galpy's
mwpotentials.py. The bulge density and its incomplete-gamma mass match galpy'sPowerSphericalPotentialwCutoff. Table 1 itself gives r_vir = 245 kpc and M_vir = 0.8×10¹², so the halo-mass check's inputs are primary. - Eilers et al.'s fit (eq. 7), R☉ = 8.122 kpc and the 5-25 kpc range. The speeds, slopes, 3.65-fold growth and 131 km/s recompute.
- McKee et al.'s ρ₀ = 0.097 is the total of baryons and dark matter, so its use in Poisson's equation is right.
- Bland-Hawthorn and Gerhard: 5 ± 1×10¹⁰ M☉, and an exponential scale height of 300 ± 50 pc over a 2.6 ± 0.5 kpc scale length.
- McGaugh et al.'s g†, Chae's 1.43 ± 0.06, Banik et al.'s 19σ, 16σ and 2-30 kAU, Jiao et al.'s decline and Koop et al.'s 15 kpc match their text.
- Journal, volume, page and DOI match Crossref for every entry that has them.
Physics and numerics (recomputed in an independent Python script and a separate DOP853 integrator, not with model.js)
- The derivations are right: the tidal radius, the density ratio 4A/Ω = 2(1 − d ln v/d ln R), Hill's equations with Γ = 4A/Ω, and ν² = 4πGρ₀ + 2(A² − B²). The Jacobi integral is conserved analytically, and the independent integrator drifts by 1.8×10⁻⁷ against the PR's 1.69×10⁻⁷.
- The ring potential matches direct quadrature to 10⁻¹⁰. A coplanar ring inside an orbit does pull harder than the same mass at the centre. The indirect term averages to zero, so the ring estimate is the right first-order secular one. L̇ is the azimuthal rate and L̇ − ϖ̇ the radial one, as README:27-30 says.
- The MWPotential2014 table, the cusp radii, the S2 numbers, ν²/Ω² = 7.56, the 82 Myr vertical period, 7,030 au and the planets' tilts all reproduce to every printed digit.
- The in-plane edges reproduce to every digit, and they do not move with tolerance (10⁻⁸ to 10⁻¹³), escape radius (2 to 10 r_J) or a tilt of up to 10°. In-plane orbits never feel the vertical tide, and Γ alone sets the 0.925 retrograde edge.
- The Sun's plunges follow the averaged-tide (Heisler-Tremaine) prediction for e_max: 0.520 against 0.507 at 40°, and 0.841 against 0.827 at 60°.
Tests, code and claims
tests/orbits.mjsandtable.mjs quickgive byte-identical output on Node 18, 20, 21 and 22. All 24 checks pass, and CI is green on 18, 20 and 22.- Every computed number in both READMEs and the PR body matches the program output at the stated rounding.
- The Dormand-Prince tableau matches Hairer, Nørsett and Wanner, including the fifth-order conditions to 4×10⁻¹⁶. The step control,
hillDeriv,hillStart,sphere,ellipticK,gammaPandlgammawere checked against references. window.ORBloads with onlywindowdefined.tests/run.mjspicks up the new file, andscripts/check_site.pyis clean.- The branch merges cleanly with main and with #26. With #34 it conflicts only in
.github/workflows/test.yml, where both add CI lines at the same place. Whichever merges second keeps both.
Blocking findings
- The polar rows are not retention edges.
orbits/README.md:92-98and:109,table.mjs:112-121, and the PR body's "loses polar orbits sooner".- The table reports where half the orbits have escaped beyond 3 r_J (README:89 counts only that as lost), and its scan starts at 0.3 r_J. Polar circular orbits (i = 90°) are lost much earlier, by plunging. Run with the PR's own
hillFatesand 8 phases, the Sun's polar orbits plunge inside 10⁻³ r_J at 0.1, 0.2 and 0.3 r_J: all of them in the across-plane, and 100%, 100% and 75% in the through-plane. - Around a point mass, 50-100% plunge at 0.2-0.3 r_H in the two polar planes. Tilted to 75° instead, none plunge between 0.1 and 0.4, around either host.
- The cause is the Lidov-Kozai cycle, whose eccentricity reaches 1 at 90°. Counting a plunge as a loss, half are lost by about 0.06 r_J for the Sun (0.16-0.17 with ν²/Ω² = 1) and 0.14-0.15 r_H for a point mass.
- So "it loses polar orbits sooner, at 0.43 and 0.39 r_J" understates the loss in a section about how much of the region a body keeps. README:113's "up to 17%" covers only the all-directions sample.
- Suggested fix: a "half lost (escaped or plunged)" column, or plunge fractions, for the polar rows, and a sentence that polar circular orbits (i = 90°) are Lidov-Kozai unstable and plunge from about 0.06 r_J (the Sun) or 0.15 r_H (a planet) within 20 turns.
- The table reports where half the orbits have escaped beyond 3 r_J (README:89 counts only that as lost), and its scan starts at 0.3 r_J. Polar circular orbits (i = 90°) are lost much earlier, by plunging. Run with the PR's own
- The in-plane retrograde edge is compared with a number for all inclinations.
orbits/README.md:100-101and:222,tests/orbits.mjs:100-102, and the PR body.- Shen and Tremaine's "∼0.7r_H" is for "many ... retrograde satellites". For coplanar orbits their abstract says "some coplanar retrograde satellites of Jupiter and Neptune can survive out to ∼ r_H". Their extents are instantaneous positions, not semi-major axes.
- So the check's "lost by 0.9 (published limit about 0.7)" contradicts the coplanar figure in its own source.
- The matching published comparison is Nesvorný et al. 2003, as Shen and Tremaine quote it: semi-major axes of "∼0.7r_H for retrograde satellites and ∼0.4r_H for prograde ones ... achieved only for nearly circular orbits close to the plane of the ecliptic".
- With 64 starting phases, the PR's code puts the retrograde edge at 0.775 (also at 32) and the prograde at 0.46, against 0.75 and 0.45 with 8. Against 0.7 and 0.4, "within 0.05" holds only at the coarse sampling.
- Suggested fix: the comparison made against Nesvorný et al. as quoted, the edges given as 0.45-0.46 and 0.75-0.78, Shen and Tremaine's coplanar ∼r_H stated, and the 0.9 bound either justified or dropped.
- Correa-Otto and Calandra put the Oort cloud's outer limit at 6.5×10⁴ au, not near 10⁵.
orbits/README.md:19,:108,:226and:246,tests/orbits.mjs:121-123, and the PR body.- Their Sect. 4.3: "the fraction of bound particles beyond 6.5 × 10^4 au is less than 0.05 and it decrease to 0 at 10^5 au ... we can qualitatively define a_crit ∼ 6.5 × 10^4 au as the outer limit for the Oort Cloud". Half the particles are bound at about 2×10⁴ au.
- The abstract's "structure around 10^5 au" is made of objects already unbound from the Sun. The introduction's 10⁵ au is quoted from Dones et al. 2015.
- Their conclusions name the frequency of stellar passages, not the tide, as "the main modulator of these structures and the external limit of the Oort Cloud".
- With 6.5×10⁴ au the quoted range becomes 0.23-0.71 r_J. The model's 0.45 r_J (1.26×10⁵ au) lies past the point where their bound fraction reaches zero. README:20's "each ending at its host's tide" then needs a qualifier for comets.
- Suggested fix: a_crit ∼ 6.5×10⁴ au and the 2×10⁴ au half-bound radius quoted as theirs, passing stars named as what sets that limit, and the test's lower bound and label changed to match. The model's 1.13×10⁵ au still passes a 6.5×10⁴ to 2×10⁵ au check.
- Feldmeier-Krause et al.'s 4 pc goes with a black-hole mass of 4×10⁶, not 3.0×10⁶.
orbits/README.md:136,tests/orbits.mjs:66.- Their Sect. 3.3.2: "With this definition and a black hole mass of 4 × 10^6 M_⊙, we obtain r_infl = (104^{+56}{-29}) arcsec, i.e. approximately (4.0^{+2.2}{-1.1}) pc." The definition is Merritt's (2004).
- Their best-fit 3.0×10⁶ appears in that paragraph only for the 2 pc equal-mass comparison.
- Suggested fix: "about 4 pc (4.0 +2.2/−1.1), with M_BH = 4×10⁶ M☉ and Merritt's (2004) definition", in both places.
- Alexander 2005's 3 pc is not a "twice" radius.
orbits/README.md:134-135and:218,tests/orbits.mjs:62and:66.- His Sect. 3.1.2 defines r_h = Gm/σ². He then writes "M_⋆(≲2 pc) ≃ m and M_⋆(≲4 pc) ≃ 2m ... and so the MBH radius of influence in the GC can be estimated at r_h ∼ 10^19 cm ∼ 3 pc". His own twice radius is 4 pc.
- Schödel et al. 2018 Sect. 4.5 supplies the 3 pc end directly: "within r=3 pc of Sgr A* is 7.8±0.6×10^6 M_⊙, roughly twice the mass of Sgr A*".
- Suggested fix: Schödel et al. 2018 for the 3 pc end, or Alexander described as "r_h ∼ 3 pc (Gm/σ²), with 2m reached by ≲4 pc". The 3-4 pc range and the test result stand.
- "A's 0.5 systematic" has no source.
orbits/README.md:60,orbits/table.mjs:35-36(coded as A ± 0.9).- Bovy 2017 gives A = 15.3 ± 0.4 and no systematic for it. The only systematic in the paper is Metzger et al.'s "15.5±0.4±1.2 (syst.)", and the only ±0.5 is A − B = 27.1 ± 0.5. The 1.33-1.42 pc range also adds the two errors linearly (1.34-1.40 pc in quadrature).
- Suggested fix: a source for the 0.5, or the 1.33-1.42 pc clause and its output line removed.
- Jupiter's ring term is labelled as the outer planets'.
orbits/README.md:44.- "less 2.9×10⁻⁵ from the outer planets' rings": −2.89×10⁻⁵ is the net of all seven rings. The outer planets give −3.51×10⁻⁵ and the inner planets +0.61×10⁻⁵. Two reviewers found this separately, and a third script that reproduces
ringExcess's total confirms the split. - Suggested fix: "from the other planets' rings".
- "less 2.9×10⁻⁵ from the outer planets' rings": −2.89×10⁻⁵ is the net of all seven rings. The outer planets give −3.51×10⁻⁵ and the inner planets +0.61×10⁻⁵. Two reviewers found this separately, and a third script that reproduces
Non-blocking findings
Physics
- All-directions edges (README:19, :98). The 0.1 r_J grid with linear interpolation biases them high. At 400 directions × 8 phases on a 0.025 grid they converge to 0.517 (point mass) and 0.435 (the Sun, 1.23×10⁵ au), against the quoted 0.53 and 0.45. "About half at both scales" holds. Quoting 0.52 and 0.43-0.44, or adding ±0.02, matches the converged values.
- Starting phases. Hill's equations are symmetric under r → −r, v → −v, and phase φ + π starts at the inverted state. So 8 starting angles are 4 independent orbits (fates agree in 474 of 480 pairs), and plane fractions move in steps of 0.25. Changing
>=to>atmodel.js:326moves 0.45 to 0.475 and 0.75 to 0.85. Phases taken in [0, π) would double the independent sample at no cost. - Run length (README:88-89, :104). 20 turns is 237 years for Jupiter. In a 48-orbit sample run to 3000 turns, the point-mass edge drifts from 0.50 to 0.475, and the Sun's from 0.41 to 0.39 escaped and from 0.39 to 0.325 lost. A sentence on this drift would cover it.
- The plunges (README:112-114).
- The point-mass plunges (6-10% at 0.2-0.5 r_H) come only from near-polar directions, |cos i₀| ≤ 0.21. They are Lidov-Kozai cycles (Lidov 1962, Kozai 1962), the point-mass form of the tide README:114 credits to Heisler and Tremaine.
- "Up to 17%" for the Sun ranges from 0.146 to 0.250 across tolerances of 10⁻⁹ to 10⁻¹³, and is 0.198 at 400 directions × 8 phases, so "about a fifth" is closer.
- The −1/4 threshold (README:17, :140-145). For the middle cluster mass the boundary is 0.70, 1.09, 1.27, 1.46 or 1.87 pc at slopes of −0.4, −0.3, −0.25, −0.2 and −0.1. The "match" with 1.4 pc depends on calling −1/4 the midpoint between Kepler and flat. "Turns positive by 3 pc" (:140) fails for the low cluster mass, which crosses zero at 3.40 pc.
- The spherical reading (README:234). For MWPotential2014, v²R/G overstates the true mass inside 8 kpc by 12% (9.00 against 8.00×10¹⁰ M☉). Against the true spherical mean density the Sun's ratio is 2.53, not 2.25, and the 5-25 kpc growth is 4.03, not 3.65. "Somewhat" can be "about 10-15% in MWPotential2014".
- Γ from the Oort constants (README:55-65, :82).
- Bovy 2017 warns that A and B "cannot be directly related to the Milky Way's circular velocity and its slope at the Sun", because |C| ≈ |K| ≈ 0.2|A|.
- r_J hardly moves (1.366 pc from Eilers et al.'s curve), but Γ is 2.12 from Eilers et al.'s slope and 2.20 from MWPotential2014's, against 2.25. In the mutation runs Γ × 0.9 moved the Sun's retrograde edge from 0.925 to 1.05 and its all-directions edge from 0.45 to 0.43.
- Thin disks (README:20, :190-194). h_z/h_R = 0.115 is compared with the planets' rms sin i. The like-for-like ratio is h_z/R₀ = 0.037, close to the planets' 0.045. The thin disk's present thickness is also set by stellar heating, which a clause could say.
- "The planets pull on one another" (README:16). That explains the outer planets' excesses, but Jupiter's comes mostly from its own mass in the two-body law.
tests/orbits.mjs:28says the rings alone give up to 1.5×10⁻³. They reach 1.36×10⁻³ (Uranus), and 1.54×10⁻³ is Saturn's own mass plus rings.
Sources and wording
orbits/README.md:18. "Satellites are held only inside its tidal radius" is contradicted by point (iv) of Shen and Tremaine's abstract: "at distances ≳2r_H stable satellite orbits exist around Jupiter, Uranus and Neptune ... as large as ∼10r_H". A qualifier for quasi-satellites would fix it. (Raised as blocking. Kept non-blocking because it is wording, not a number or an attribution.)tests/orbits.mjs:48-49. Correa-Otto and Calandra's 2.8×10⁵ au uses Jiang and Tremaine's constants (A ≈ 14.8, Ω ≈ 29.6 km/s/kpc), which give 2.78×10⁵ au. The check confirms the formula on nearby inputs, not Bovy's values independently.orbits/README.md:137,tests/orbits.mjs:66-67. GRAVITY 2024's 3.9 pc comes from one Fokker-Planck cusp simulation, so "in their cusp simulation" is closer than "in their models".orbits/README.md:128,model.js:137. Schödel et al. 2018's γ = 1.13 ± 0.03 ± 0.05 is a light-density slope for "the innermost 1-2 parsecs", with mass following it only at constant M/L. Their conclusions give "a robust range ... γ=1.1-1.4". At γ = 1.4 the middle "twice" radius is about 3.8 pc. Their 1.0×10⁶ (1 pc) and 7.8×10⁶ (3 pc) masses would make a direct check of the cusp model.orbits/README.md:151,tests/orbits.mjs:82. Eilers et al.'s 2-5% systematic holds "out to R∼20 kpc" and rises beyond. The shape test divides out the level, so its tolerance comes from the slope's own 0.46 km s⁻¹ kpc⁻¹ systematic (0.6% at 5 kpc, 3.9% at 25 kpc). 5% remains fair.model.js:20-21. "v stays constant": Eilers et al. find the curve "gently but significantly declining", with a flat curve excluded at >3σ.orbits/README.md:165. Koop et al.'s 15 kpc is where their own statistics are robust. They also find Jeans-inferred curves off by "of order 10%" in simulations. The sentence reads broader than that.orbits/README.md:177-178. Chae's 1.43 ± 0.06 is g_obs/g_pred at g_N = 10^−10.15 m s⁻². Banik et al.'s 19σ compares the best Newtonian and MOND models, and the 16σ comes from the fit to α_grav.tests/orbits.mjs:59. The arXiv text reads "7700 km/s", not "7700 km s^-1".- Sources,
orbits/README.md:240-266.- Koop's initial is O. (Orlin), not H. Heisler's is J., not M.
- Bovy 2017 is MNRAS 468, L63-L67, DOI 10.1093/mnrasl/slx027 (now confirmed). Shen and Tremaine is AJ 136, 2453, DOI 10.1088/0004-6256/136/6/2453.
- Correa-Otto and Calandra's title is Stability in the most external region of the Oort Cloud: evolution of the ejected comets.
- GRAVITY 2022 has no title. GRAVITY 2024 is A&A 692, A242, DOI 10.1051/0004-6361/202452274. Schödel et al. 2018's DOI is 10.1051/0004-6361/201730452, Alexander's is 10.1016/j.physrep.2005.08.002 (pp. 65-142) and Feldmeier-Krause et al.'s is 10.1093/mnras/stw3377.
- Feldmeier-Krause et al. cite Merritt 2004 for the definition. Merritt 2013 is GRAVITY 2024's citation.
- The JPL page credits Standish and Williams (1992).
- The formula credited to Binney and Tremaine sec. 8.3 "from memory" is confirmed in Jiang and Tremaine 2010. The section number is not.
- Provenance labels. README:238, the labels in
tests/orbits.mjs, the Checks table and the PR body's Sources paragraph can now say "checked in the arXiv source" for every arXiv paper above, with the sections named in this review. The labels that stay are Souami and Souchay (below), Dones et al. 2004 and Merritt's books.
Tests and code
tests/orbits.mjs:97-99. The prograde-edge check cannot fail low.- Its grid is 0.4-0.6 and its tolerance 0.1, and
hillScanreturns 0.4 when every orbit already escapes there. An all-escape run (rEsc 0.35) and a flipped rotating frame both printed 0.40 and passed. - A wider grid (0.3-0.7), or asserting escapes(0.4) < 0.5 ≤ escapes(0.6), makes it two-sided. (Raised as blocking. Kept non-blocking because the neighbouring model checks catch the frame-sign error.)
- Its grid is 0.4-0.6 and its tolerance 0.1, and
tests/orbits.mjs:108-111. The Jacobi-integral check also passes when the orbit escapes. Requiringend.fate === 'stays'closes that..github/workflows/test.yml:34,table.mjs.table.mjsnever sets an exit code, so the CI line passes on NaN output (SGRA.M = 4.297e9 printed "inside NaN pc" and exited 0). Section 5 never runs in CI.model.js:272-291.hillOrbitloops forever on a NaN state: NaN err makes h NaN and t never advances. A typo in an error coefficient made runs about 6000 times slower instead of failing. A finite-err guard, a step cap andtimeout-minutesin the workflow would bound it.- Section 5 sensitivities. The plunge radius rIn moves the Sun's edge from 0.445 to 0.461 between 10⁻³ and 10⁻². A 10⁻⁴ change in ν² moves the polar-across row from 0.392 to 0.400. The rIn dependence belongs under "What the model leaves out".
- PR body, mutation claim. Of 47 mutations run against the tests, these survive while changing README numbers: Γ × 0.9, point-mass Γ = 3.3, GM☉ × (1 + 10⁻⁴), a flipped
ringExcesssign, cusp γ = 1.2, SGRA.M = 4.0×10⁶, the bulge and disk shape parameters,cuspSlope's mass term andhillScanwithout interpolation. Γ × 1.1 is caught only by the 0.875 r_J check, at its margin. - Cheap checks for code that feeds README numbers: the inner four planets' |excess| ≤ 5×10⁻⁵ (pins GM☉ and the century), ellipticK(1/√2) = 1.8540746773, gammaP(½, x) = erf √x, the closed-form quarter-slope radius of 1.272 pc, and Bovy 2015 Table 1's M_b, M_d, M(<60 kpc), slope at R₀ and ρ_DM, which the model gives as 0.450, 6.82, 4.09, −0.101 and 0.0075.
- "Every number above" (README:200, the PR body). Some quoted numbers are not printed by any script: McKee's 0.097 ± 0.013, g†'s errors, Chae's and Banik's figures, Gaia's 19 and 15 kpc, Shen and Tremaine's ranges and r^1.87. "Every computed number" is accurate.
- Runtimes. Measured 33 s, 81 s and 1.3 s for the default,
longand test runs, against "about 50 s", "about 2 minutes" and "about 2 s". This may depend on the machine. - Small mismatches:
orbits/README.md:109says 0.43 where :96 has 0.425.- The ρ₀ range at :107 runs the wrong way (0.08 gives 0.456 and 0.12 gives 0.436).
- :20 says 0.1 where :191 has 0.12.
- Root
README.md:23says 235 km/s where the study has 234,:24says "a third of an au" for 0.355 au, and:26says "about a parsec" for 1.3 pc. - Root
README.md:215says CI runs every Run-it line exceptcritical/table.mjs, but CI now also runsorbits/table.mjs quick, which the block does not list.
Could not check
- Souami and Souchay 2012. No open copy was reachable, so Jupiter's 0.3219° and Saturn's 0.9254° (
tests/orbits.mjs:91-92) are unverified. Li, Xia and Zhou and Volk and Malhotra quote only the plane's orientation. Whether the paper lists per-planet tilts at all is not confirmed. - Dones et al. 2004 (the 2×10⁵ au edge) and Heisler and Tremaine 1986's abstract: no open copy.
- Whether Table 1's Saturn and Uranus elements are secular means. This decides whether the 1.3×10⁻³ ring-minus-fit residual is the great inequality, as README:46 suggests.
- Journal-typeset versions. Section, appendix and table numbers are from the arXiv versions.
Verdict: do not merge until the seven blocking findings are fixed: the polar rows, the in-plane retrograde comparison, the Oort cloud's outer limit, the Feldmeier-Krause black-hole mass, Alexander's definition, "A's 0.5 systematic" and Jupiter's ring-term label
Automated posting by agentic team with human oversight.
Generated by Claude Code
Blocking: 1. Polar orbits are lost by plunging (Lidov-Kozai), not only by escaping. The table and README now give escaped and lost (escaped or plunged) edges. Polar orbits are lost by 0.14-0.15 r_H around a planet and by 0.06 r_J for the Sun within 20 turns; a check covers the Sun's polar plunges. 2. The in-plane edges are compared with Nesvorny et al. 2003 as Shen & Tremaine quote it (0.4 and 0.7 r_H for near-circular, near-ecliptic orbits), with S&T's coplanar ~r_H stated. The edges are now 0.46 and 0.775. The prograde check is two-sided, and the retrograde check uses the range 0.7 to 1 r_H. Starting angles span [0, pi) because Hill's equations are symmetric under inversion, so every angle is a different orbit. 3. Oort cloud: Correa-Otto & Calandra's a_crit is 6.5e4 au, set by passing stars, and half of their comets are bound at about 2e4 au. The quoted outer limits are now 0.23 to 0.71 r_J, and the check's lower bound is 6.5e4 au. 4. Feldmeier-Krause et al.: 4.0 pc with M_BH = 4e6 and Merritt's (2004) definition. 5. The "twice" radius at 3 pc is credited to Schodel et al. 2018 (7.8e6 inside 3 pc). Alexander's r_h ~ 3 pc is Gm/sigma^2, with 2m reached by about 4 pc. 6. The unsourced 0.5 systematic on A is removed. 7. Jupiter's ring term is the net of all the other planets' rings (outer -3.5e-5, inner +0.6e-5), now printed. Non-blocking, also applied: - All-directions scans use 48 directions on a 0.05 grid: 0.52 and 0.435 r_J. - The 100-turn values, and the plunge-radius, rho0 and Gam sensitivities, are printed. - Model: hillOrbit throws on a non-finite step or a step cap. Gauss's-theorem sphere mass for MWPotential2014 (v^2 R/G overstates the mass inside 8 kpc by 12%; the true 5-25 kpc growth is 4.03). Closed-form cusp slope radii. - The text now gives: - the -1/4 threshold's dependence and the zero crossings at 1.9-3.4 pc; - the gamma range 1.1-1.4; - Bovy's warning on A and B, with Gam = 2.12 from Eilers et al.'s slope; - the like-for-like disk ratio 0.037; - wording for the Eilers, Koop, Chae and Banik results. - New checks: - the inner planets' excess, which pins GM_sun and the century; - ellipticK, and gammaP against erf; - the cusp mass against Schodel et al. 2018; - the closed-form slope radius; - the disk sphere mass; - the Jacobi-integral check now requires the orbit to stay. - table.mjs exits 1 on NaN or Infinity; the CI job gets a timeout. - Sources: corrected citations, DOIs and provenance labels, as read in #37's review. - Root README: the numbers match the study, and the run block lists the orbits table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
- Saturn's fitted excess is below its own mass, so only Uranus's and Neptune's are mostly the other planets' pull. - In-plane orbits plunge only outside their escape edge; the table prints where each first plunges. - Polar "lost" is the first radius where half are lost. The table prints the lost-fraction profile: around a point mass it falls back below half from about 0.35 r_H. - The 75 deg results are printed: none plunge for a planet, nor inside 0.3 r_J for the Sun; 25-38% of the Sun's plunge at 0.35-0.4. So is the inclination range of plunging directions: within 11 deg of polar for a planet, 29 deg for the Sun. - The ratio is 2.53 (2.25 times the 12% overstatement); 2.56 is against the true mean inside 8.122 kpc. - Checks: Kuzmin and Plummer limits of the disk sphere mass; the edgeLost path; the Oort grid starting at 0.2 r_J, so its 6.5e4 au bound can fail; the inner-planet bound's asymmetric window stated. - The chaos of single-plane edges is stated (nu2 +- 1e-4 moves 0.394 to 0.412) and printed. - Wording: thin-disk height over orbital radius; the run-length bullet; the 24-direction comparison for rIn; "every computed number except the values credited to #37's review". - Sources: Standish & Williams (1992), Li, Xia & Zhou 2019, and Binney & Tremaine's section left unconfirmed in model.js too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
zero-aska
left a comment
There was a problem hiding this comment.
Independent re-review of 624ece2, after the fixes in 2db95f6 and 624ece2. Separate agent instances that did not draft the branch wrote it. Three reviewers covered sources and wording, physics and numerics, and tests, code and claims against output. Each finding raised as blocking was then re-checked with the PR's own code or against the source text.
What was verified
The seven blocking fixes
- Polar rows. The table now gives escaped / lost radii. The half-lost radii reproduce with an independent DOP853 integrator: 0.139 and 0.150 r_H around a point mass [0.140, 0.150], and 0.164 for the Sun with ν²/Ω² = 1 [0.159-0.166]. Every polar orbit inside the 20-turn radius plunges within 100 to 400 turns, as README:113 says. The averaged tide gives e_max = 1 at 90° for both hosts.
- Retrograde comparison. The Nesvorný et al. quote matches Shen and Tremaine's text word for word, and the coplanar ∼r_H and quasi-satellite notes match their abstract. The edges are 0.458 and 0.775 [0.460 and 0.787 with 64 starting angles]. The [0.7, 1] window and the prograde check are both two-sided.
- Oort cloud. Correa-Otto and Calandra's a_crit and half-bound radius are quoted from sect. 4.3, and the 0.23-0.71 r_J range matches the table. The test's 6.5×10⁴ au bound can fail (rEsc = 0.35 gives 5.7×10⁴ au). The tide-only edge stays past a_crit even for eccentric starts: 1.18×10⁵ au escaped and 1.10×10⁵ au lost, for isotropic orbits with thermal e.
- Feldmeier-Krause et al. README:155 and tests:74 match sect. 3.3.2 and its Merritt (2004) reference.
- Schödel et al. 2018 sect. 4.5 (7.8 ± 0.6×10⁶ inside 3 pc, 180 ± 30 inside 0.01 pc) is quoted, and the new checks pass.
- A's systematic is gone, and table.mjs:42 uses ±0.4.
- Jupiter's ring term reads "net from the other planets' rings", with −3.505×10⁻⁵ and +6.124×10⁻⁶ printed.
Physics and numerics
- All-directions edges: 0.520 / 0.515 and 0.435 / 0.421 [0.521 / 0.516 and 0.437 / 0.423]. At 400 directions × 8 angles they converge to 0.518 and 0.432. The 100-turn values reproduce.
diskSphereMass: the integrand is the exact radial derivative of the Miyamoto-Nagai potential, and Gauss's normalisation is right. Direct volume integration of the density gives the same 8.0048 against 9.0032×10¹⁰ M☉. The growth 4.028 and the ratios 2.531 and 2.557 recompute, and so do the Kuzmin and Plummer limits.- Γ = 2.1206 from Eilers et al.'s slope and 2.2055 from MWPotential2014's. r_J = 1.3664 pc.
- The slope-threshold radii (0.701, 1.087, 1.272, 1.460, 1.867 pc) and zero crossings (1.891, 3.403 pc) recompute in closed form.
- The ν² sensitivity (0.394 to 0.412) reproduces. The quasi-satellite, stellar-heating and oblateness wording is correct.
Sources
- Every changed quotation matches its source, including Bovy 2017's warning on C and K, Eilers et al.'s "gently but significantly declining" and 2-5% out to 20 kpc, Koop et al.'s scope, Chae's g_N, Banik et al.'s 19σ and 16σ, GRAVITY 2024's cusp simulation, and Standish and Williams (1992).
- Every "#37's review" label names a section the first review read.
- Title, journal, volume, page, year and DOI match Crossref (or ADS, for Feldmeier-Krause et al.) for every entry that has them.
Tests, code and claims
- All 38 checks pass, and
tests/orbits.mjsandtable.mjs quickgive byte-identical output on Node 18, 20, 21 and 22.npm testpasses,scripts/check_site.pyis clean and CI is green. - Every computed number in both READMEs and the PR body matches
table.mjsandtable.mjs longat the stated rounding. hillOrbitthrows on every NaN or Infinity path tried, and the 5×10⁶ step cap turned two hanging integrator typos into failures in about 9 s. The cap does not fire on any documented run: the longest orbit needs 1,462,056 steps.table.mjsexits 1 on a NaN or Infinity anywhere in its output, on Node 18, 20 and 22.- 77 mutants were run. Newly caught: GM☉ × (1 + 10⁻⁴), cusp γ = 1.2,
cuspSlope's mass term,hillScanwithout interpolation, disk b = 0.5, and the two integrator typos. - The branch merges cleanly with main and with #26, and on that merge
npm testpasses 8 check files. With #34 it still conflicts only in.github/workflows/test.yml.
Blocking findings
orbits/README.md:19: "(up to about 0.3 r_H; from 0.35 r_H on, half or more survive the run)".- The table's own profile shows 0.63 of polar orbits lost at 0.45 r_H in the plane through the host. That is inside its 0.463 escape edge, so fewer than half survive there. With 64 starting angles, 55% and 61% are lost at 0.35 r_H.
- README:114 states the same profile correctly for the printed radii ("0.25-0.5 at 0.35-0.4 r_H").
- Suggested fix: "the lost fraction dips below half near 0.4 r_H".
Non-blocking findings
Sampling precision
- The starting angles still pair up.
- Hill's equations are also symmetric under time reversal, (x, −y, ±z, −t). With r → −r, the start at π − φ is the time-reversed mirror of the start at φ, in all four planes (checked to 10⁻¹⁵). So in [0, π) the 8 angles form 4 reversal pairs.
- On in-plane retrograde rows their fates agree at 96-97% where outcomes are mixed, against 65-76% by chance. The first review's suggestion of [0, π) missed this second symmetry. Angles over [0, π/2), or more of them, would remove it.
- README:131 and table.mjs:172, "with Γ = 2.12 the edge is 0.975". With 64 starting angles the PR's own code gives 1.017 (1.015 with 256). That is 0.04 off, and the edge moves past r_J. "About 1.0" is the converged value. (Raised as blocking. Kept non-blocking because the table prints 0.975 at its stated sampling, so the issue is the precision claim in item 3.)
- README:270, "single-plane edges are chaotic at about the 0.02 level". This is fair for the polar rows. In-plane retrograde edges are not chaotic: a 10⁻³ change in Γ moves them by less than 0.004. Their 8-angle error is sampling, and it reaches 0.04 (item 2).
- README:115 and table.mjs:181, "within 11° of polar for a planet".
- That is the resolution of the 48-direction sample. The PR's own
hillFates, with 16 normals × 8 angles at 0.4 r_H, gives 20% plunged at 11°, 13% at 12°, 5% at 13°, 3% at 14° and none at 15°. - The cone widens with a (about 8°, 10°, 12° and 15° at 0.2, 0.3, 0.35 and 0.4 r_H). "Within about 15°" matches. (Raised as blocking. Kept non-blocking for the same reason as item 2.)
- That is the resolution of the 48-direction sample. The PR's own
- README:107-108, in-plane orbits "plunge only outside their escape edge". That holds with 8 angles. With 64, the point mass's first retrograde plunge is at 0.75, inside its edge of about 0.79. The escaped and lost radii still agree to 0.003.
- README:114, "63-100% ... from 0.075 to 0.45 r_J". The minimum is 0.50-0.52 with 64 angles. "Half or more" holds at any sampling.
- The Sun's polar half-lost radius, 0.063, interpolates between 0.05 (none lost) and 0.075 (all lost). A 0.0025 grid gives 0.055-0.056. "0.06" is fine at one figure.
Physics wording
8. README:115, "For comets this is the tide driving them inward (Heisler and Tremaine 1986)".
- The averaged tide predicts a plunge cone only 3.6-5.1° wide for the Sun at 0.2-0.4 r_J, and no plunges at 75° (e_max 0.957). So the Sun's 29° cone and its 25-38% at 75° come from non-secular effects near the escape edge.
- They also depend steeply on rIn: at 75° with 64 angles, 28-44% plunge at rIn = 10⁻³ and 2-6% at 10⁻⁴. "The averaged tide accounts for the near-polar core" matches.
- README:127 and :269, the rIn sensitivity. Raising rIn to 10⁻² moves the escaped edge out (0.448 to 0.469) but the lost edge in (0.425 to 0.400), and doubles the Sun's plunge fraction to 33-40%. Quoting both edges shows that.
- README:217-219, h_z/R₀ = 0.037 "like-for-like" with the planets' 0.045. An exponential scale height and an rms sin i differ by about √2 in convention. As rms z/R it is 0.052 for the Galaxy against 0.032 for the planets. "Both a few percent" is safe. The first review suggested the "like-for-like" wording.
Sources and wording
11. README:154, "Alexander 2005: r_h ~ 3 pc from Gm/σ²".
- He calls Gm/σ² customary but "not a well defined quantity", and estimates 3 pc from the enclosed mass: "M⋆(≲2 pc) ≃ m and M⋆(≲4 pc) ≃ 2m ..., and so the MBH radius of influence in the GC can be estimated at r_h ∼ 10^19 cm ∼ 3 pc".
- The wording came from the first review's suggestion. "r_h ∼ 3 pc, estimated from the stars' mass reaching m by ≲2 pc and 2m by ≲4 pc" matches.
12. README:129 and tests:170, "passing stars, not the tide".
- Correa-Otto and Calandra's sect. 4.3 describes "a synergy effect of ejection" between "the Galactic potential and the stellar passages", and their conclusions name "the frequency of the stellar passages" as "the main modulator".
- "Not the tide" overstates it, and the phrase came from the first review. "The frequency of stellar passages, acting with the tide" matches.
- Their axis is also the initial semi-major axis, and the 2×10⁴ au half-bound radius is a mean over three samples.
13. README:119, "Their extents are instantaneous distances". After the moved sentence, "their" now reads as the observed moons, whose 0.6 against 0.4 r_H are semi-major axes. Placing it right after the 0.5 / 0.7 / ∼r_H sentence fixes the antecedent.
14. README:46, "Whether Table 1's outer-planet elements are secular means ... is not checked." The SSD page answers it: "Such elements are not intended to represent any sort of mean; they are simply the result of being adjusted for a best fit." That supports the README's point.
15. README:264, "molecular clouds, which set the Oort cloud's actual edge". No cited source says this, and Correa-Otto and Calandra leave molecular clouds out. "Which also strip it" is supported.
16. README:272, "Table 1's derived masses were not read".
- They are in Bovy 2015's arXiv source (mwpotential2014.txt): M_b 0.5 and M_d 6.8×10¹⁰ M☉, M(r < 60 kpc) 4.1×10¹¹ M☉, d ln v_c/d ln R −0.10 and ρ_DM(R₀) 0.008 M☉ pc⁻³. The model gives 0.450, 6.82, 4.09, −0.101 and 0.0075, which agree at that rounding.
- The Plummer check also hard-codes b = 0.28 and catches b = 0.5, so "not otherwise tested" is now too modest.
17. Sources list.
- Li, Xia and Zhou is A&A 630, A68 (2019), DOI 10.1051/0004-6361/201834196.
- Jiang and Tremaine is MNRAS 401, 977, DOI 10.1111/j.1365-2966.2009.15744.x.
- Nesvorný et al. (AJ 126, 398), Lidov (PSS 9, 719), Kozai (AJ 67, 591) and Dones et al. (Comets II, 153-174) match Crossref.
- Shen and Tremaine's title mixes the Crossref and arXiv versions. Bland-Hawthorn and Gerhard lack the subtitle ": Structural, Kinematic, and Integrated Properties". Merritt 2004 is p. 263. GRAVITY 2022 and 2024 still have no titles.
- The SSD page read is "Approximate Positions of the Planets". The title given is that of the older PDF, whose URL now redirects to the page.
18. Smaller points. table.mjs:47's Ω = 29.6 is Correa-Otto and Calandra's rounding (Jiang and Tremaine give 236 km/s over 8 kpc, which is 29.5). Koop et al. say "as high as 15%, but ... likely ... of order 10%".
19. PR body. The "remain unread" list omits Nesvorný et al. (read only as quoted), Lidov, Kozai, Merritt and Binney and Tremaine. "Also applied" omits the Table 1 checks that were not added. The mutation sentence is inaccurate both ways:
- Now caught but listed as surviving: hillScan without interpolation and disk b = 0.5.
- Not listed but surviving while moving README numbers: point-mass Γ = 2.7 to 3.3, disk Γ × 1.05 and × 0.6, cross(), flatRange's tolerance, sphere(), the bulge-free or v²R/G sphereMass, phases over [0, 2π), edgeLost counting plunges only, > in halfPoint, and rIn = 10⁻².
Tests and code
20. tests:155-158, the point-mass polar check. Its label says "before any escapes", but it requires only escapes below half. Requiring rows.every(r => r.escapes === 0) matches the label. It also fails if 4 of the 8 orbits are lost at 0.2.
21. tests:130-132, prograde edge 0.4 ± 0.1 on a grid starting at 0.3. An edge at or below 0.3 returns 0.3 and fails only by rounding (0.10000000000000003). The new check at tests:127-129 is two-sided, so this one adds little. A grid starting at 0.25 makes it fail cleanly.
22. tests:167-170, the Oort check. It can fail, but it is insensitive: disk Γ × 0.6 or × 1.5 moves the edge only within 1.235-1.281×10⁵ au.
23. model.js:288, maxSteps = 5e6 does not scale with orbits. The worst orbit needs about 14,600 steps per turn, so runs beyond about 340 turns throw at default settings. Separately, NaN for orbits, rEsc or rIn returns "stays". A cap of about 2.5×10⁵ × orbits would scale.
24. table.mjs:150 prints a NaN first-plunge radius as "none", which the exit-1 guard cannot see. CI runs only quick, so this path is not covered there.
Could not check
- Souami and Souchay's per-planet tilts, the texts of Heisler and Tremaine, Nesvorný et al., Dones et al., Lidov and Kozai, and the Merritt books (metadata only).
- Runtimes on an idle machine. Scaled from a loaded one, "about 3 s / 3 min / 5 min" is consistent.
Verdict: do not merge until README:19's "from 0.35 r_H on, half or more survive the run" is fixed
Generated by Claude Code
Blocking: README:19 said polar orbits around a planet are mostly kept "from 0.35 r_H on". The table's own profile loses more than half at 0.35; the row now says the lost fraction dips below half near 0.4 r_H, and the polar bullet gives the profile at the printed radii. Sampling and numerics: - Starting angles span the quarter turn [0, pi/2): besides r -> -r, Hill's equations are symmetric under time reversal with y -> -y, which pairs the start at pi - phi with the start at phi for every single-plane scan. hillFates takes quarter = 1 for [pi/2, pi); the table prints the all-directions fractions from that quarter, which agree to 0.03. Section 5 was re-run and every number in the README updated. - 64-angle in-plane edges, the 64-angle lost edge and first plunge, the Gam = 2.12 edge (about 1.0 r_J), tilt-from-polar plunge profiles, 75 deg plunges, both edges under the plunge radius, and the nu^2 sensitivity are printed; the chaos caveat now separates polar chaos from in-plane sampling error. - hillOrbit's step cap scales with the number of turns (2.5e5 per turn) and it throws on non-finite settings. A missing first plunge prints "none" without hiding a NaN radius. Checks (43): Bovy 2015 Table 1's bulge and disk masses, M(<60 kpc), slope at R0 and local dark-matter density (haloDensity added); the point-mass polar check requires no escapes at all; the prograde grid starts at 0.25; the Oort label states the check's range. Wording and sources: Alexander's r_h as he estimates it; Correa-Otto and Calandra's limit set by stellar passages acting with the tide; Shen and Tremaine's extents placed after their 0.5/0.7/r_H sentence; the SSD page's "not intended to represent any sort of mean"; molecular clouds "also strip it"; h_z/R0 against rms sin i as "both a few percent"; Koop et al.'s 15% / 10%; the averaged tide explains the near-polar core only; Table 1's derived values now checked. Li, Xia and Zhou's and Jiang and Tremaine's journal references, Bland-Hawthorn and Gerhard's subtitle, Merritt 2004's page, GRAVITY 2022 and 2024 titles, the SSD page title, and provenance for Nesvorny et al., Lidov, Kozai and Dones et al. Runtimes remeasured: about 7 minutes full, 10 long. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
Sampling (blocking): the quarter turn [0, pi/2) assumed the start at pi - phi duplicates the start at phi. It is that start's time-reversed mirror, whose fate matches nearly always in the plane but differs for 7-17% of polar pairs, so polar edges depended on which quarter was sampled (the Sun's polar-across edge moved 0.39 -> 0.43). Starting angles now span the half turn [0, pi), a quarter step off the grid pi p/n, so no inverted or mirrored pair falls in one sample. Section 5 re-run; the table prints the polar rows with 16 angles too (they move by at most 0.01) and the README carries the new numbers. Chaos (blocking): "the in-plane edges are not [chaotic]" was wrong: changing Gam by 1e-4 moves the Sun's retrograde edge 0.925 -> 0.95. The table prints that line; the caveat now says single orbits near any edge are chaotic. Also: - 64-angle lost edges and first plunges printed for every in-plane scan (with Gam = 2.12 the lost radius is 1.01 against 1.03 escaped). - The tilt-from-polar scan used node azimuths om and om + pi, which are the same orbits under z -> -z; it now uses 0 and 90 deg with 16 angles. - The symmetry text names z -> -z and the inversion for y-z planes. - Thin disks: an exponential scale height and rms sin i differ by a factor of about 2, not sqrt2; as rms z/r the disk is 0.052 against the planets' 0.032, printed; table.mjs no longer says "like-for-like". - The averaged-tide cone: 5.1 deg at 0.2 r_J to 3.6 deg at 0.4 r_J, and the Sun's whole cone beyond it, not only near the escape edge, is non-secular. - The polar check accepts half lost exactly at 0.2; the Oort check's label states its measured insensitivity to Gam; "#37's re-review" is defined; the Kuzmin limit pins a; the bulge's slope and cut-off are untested; Alexander's m is the black hole's mass; "Galactic center" as A&A prints it; the step-cap comment's figure; runtimes measured on an idle machine (about 10 minutes full, 13 long, 6 s for the checks). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
…0438b7 - The polar lost-fraction wording rested on 8-angle values at a few printed radii; the unprinted grid points swing by about 0.25, and at 0.325 r_H across the host the converged fraction is about a third. table.mjs now prints 32-angle polar profiles from 0.1 to 0.5 r_J on the 0.025 grid, with their edges, and the README describes those: half or more lost from 0.15 to 0.3 r_H around a point mass, then swinging between about a fifth and two-thirds out to 0.45 r_H; half or more at every radius for the Sun with its vertical tide. - The polar sampling error is stated from the mirrored set of 8 angles (escape edges up to 0.025), printed, as well as against 32 angles. - Printed now: the mirror-pair fate differences around a point mass (0, 16 and 32 of 64 in the plane and the two polar planes) and the orbits escaped at 0.925 r_J behind the Gam +- 1e-4 line (4, 3, 3 of 8). - The averaged-tide sentence separates the secular cone (to 5.1 deg at 0.2 r_J) from the rest; the Gam = 2.12 first-plunge clause is dropped; the Oort label gives the dense-grid range, 1.20 to 1.33e5 au; "#37's re-review" covers its calculations, and the Run-it line and the table's header credit it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
- The 75 deg rows used 8 angles; with 32 the Sun's prograde orbits plunge from 0.3 r_J (up to 16%) and up to 44% at 0.4 r_J, not 63%. The table prints 32-angle 75 deg rows, labelled as the prograde side; the tilt-from-polar cone counts both senses. - Row 19 and the 'When' bullet: half lost by 0.14 to 0.15 r_H; beyond 0.3 r_H the 32-angle fraction runs between about a fifth and two-thirds. - 32-angle fractions are rounded and given +-0.1 sampling noise; the lost-edge bound names the edges the 32-angle grid measures; the mirror-pair count in the plane is for retrograde orbits. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
zero-aska
left a comment
There was a problem hiding this comment.
Check of 905eb6e, after the fixes in 99ec2bc, 80438b7, 9ec913e and 905eb6e for the re-review of 624ece2. It was done by an agent instance that did not draft the branch, with an independent DOP853 integrator and the PR's own code at more starting angles.
What was verified
- The blocking item. README:19 and :123 now describe the 32-angle polar profiles that
table.mjsprints, and every statement holds against them.- Around a point mass the lost fraction is 0.84-1.00 and 0.53-0.97 from 0.15 to 0.3 r_H, 0.19-0.69 from 0.325 to 0.45 r_H, and 0.25 and 0.19 at 0.4 r_H.
- With 512 angles the same ranges are [0.54-1.00], [0.23-0.63] and [0.28, 0.24].
- The Sun loses half or more everywhere [minimum 0.56], and with ν²/Ω² = 1 it loses 0.19-0.47 from 0.325 to 0.45 r_J [0.20-0.54].
- Starting angles. With π(p + ¼)/n, the mirror π − φ falls on the ¾ offset, so no mirror pair shares a sample for any n. The start at π − φ is the time-reversed mirror of the start at φ to 10⁻¹²: plain reversal in the x-z planes, and reversal with z → −z and inversion in the y-z planes. Mirror pairs end differently in 0, 16 and 32 of 64 cases [0, 16, 32].
- Edges.
- With 512 angles the in-plane edges are [0.460, 0.787, 0.491, 0.948, and 1.018 for Γ = 2.12], so the 8-angle errors are at most 0.023, inside "about 0.03".
- The polar escape edges are within 0.008 of 512 angles, and the mirrored set is within 0.021, inside 0.025.
- The Section 5 table in the reply matches the program output in every cell.
- Chaos. Γ ± 10⁻⁴ moving the Sun's 8-angle retrograde edge from 0.925 to 0.95 reproduces at rtol 10⁻¹⁰ and 10⁻¹². Escape times jump between runs, so this is chaos, not run length.
- Other numbers.
- The averaged-tide limits are 5.09° at 0.2 r_J and 3.60° at 0.4 r_J, with none at 75°, from 1 − e_max² = 1.2654 cos² i₀.
- The rIn change moves both edges in the stated directions.
- rms z/R is 0.052 and 0.032.
- Bovy 2015 Table 1: [M_b 0.4501, M_d 6.819, v²R/G at 60 kpc 4.082, slope −0.1009, ρ_DM 0.007544]. Comparing v²R/G at 60 kpc is right, since Table 1 sets its 4.1 beside Xue et al.'s curve-implied 4.0 ± 0.7.
- The Oort label's 1.20-1.33×10⁵ au range and the 100-turn values reproduce.
- Tests and code.
- All 43 checks pass, and CI is green on Node 18, 20 and 22. Each of the five new Table 1 checks can fail (
haloDensityscale, f_b, disk a and b, the force fractions). - The point-mass polar check now requires zero escapes. It fails for rIn = 10⁻⁴, ν² = 0, plunges counted as escapes, and start speed × 1.15.
- The prograde grid from 0.25 fails cleanly.
- The new input guards throw on every non-finite input tried. The worst staying orbit needs 73,103 steps per turn, 3.4 times under the cap.
- All 43 checks pass, and CI is green on Node 18, 20 and 22. Each of the five new Table 1 checks can fail (
- Claims and sources.
- Every number in the changed lines of both READMEs and the PR body matches
table.mjs,longand the tests. - The new titles and references match Crossref, apart from the one below.
- The full table took 10 min and
longabout 13 min on a shared machine, consistent with "about 11" and "about 14".
- Every number in the changed lines of both READMEs and the PR body matches
Blocking findings
None.
Non-blocking findings
- README:124 and :126, "about 8° from polar at 0.2 r_J". The 4° scan step understates the cone. At 1° steps the PR's code gives 0.63, 0.36 and 0.125 plunged at 8°, 9° and 10°, and none at 11°, so the reach is about 10°. The Sun at 0.3 r_J reaches about 26-27°, and a planet about 11° at 0.3 r_H and 15-16° at 0.4 r_H. The conclusion, non-secular plunges beyond 5.1°, is unchanged.
- README:123, "sampling noise of about ±0.1". That is the 1σ level (0.088 at 32 angles). The largest deviations from near-converged values are 0.15-0.19, for example 0.75 against 0.56 for the Sun at 0.35 r_J in the plane through the host. At 0.4 r_H the converged lost fraction is about a quarter to a third, not a fifth to a quarter. "±0.1 (up to 0.2)" covers it.
- README:19 and the PR body, "further out between about a fifth and two-thirds". It has no outer bound, and past the escape edge the printed values are 0.69-0.88. README:123 bounds it, and "to 0.45 r_H" would close it here.
- README:309, Shen and Tremaine's title. Crossref (DOI 10.1088/0004-6256/136/6/2453) gives "Stability of the Distant Satellites of the Giant Planets in the Solar System". The README lacks "the" before "Distant".
- model.js:292, the per-turn step cap. Steps per turn grow roughly as a^−1.5, so the cap fires below about 0.012 r_J (a polar orbit at 0.01 r_H over 30 turns throws). No documented run goes below 0.025, and the comment could say so.
- What the tests still do not catch.
- Removing the new input guards, or unscaling the cap.
edgeLostcounting plunges only, since the point-mass polar check now requires zero escapes.- rIn = 10⁻²,
>inhalfPoint, point-mass Γ 2.7 and 3.3, phases over [0, 2π), and the bulge's α and r_c (as README:291 says).
- tests:97, the bulge-mass check, passes by 1.4×10⁻⁴ (0.45014 against 0.5 ± 0.05). That is right at Table 1's rounding, but any f_b from 0.050 to 0.061 passes, so it pins the bulge to about 10%.
Also: README:94 does not say which polar plane has 16 and which 32 differing mirror pairs (16 through the host, 32 across), and the PR body's CI box is unchecked although CI is green.
Verdict: merge
Generated by Claude Code
- Plunge cones are given as brackets on the scan's steps (8-10, 10-12 and 14-16 deg for a planet; 8-12 and 24-28 deg for the Sun), not as the last step with plunges. - 32-angle sampling noise: about +-0.1, and up to 0.2; at 0.4 r_H a fifth to a quarter are lost here, about a quarter with 512 angles. - Row 19 bounds its outer range at 0.45 r_H; the polar mirror-pair counts name their planes. - Shen and Tremaine's title as Crossref gives it. - The bulge-mass check pins the bulge's force share only to about 10%; the step cap would fire only below about 0.012 r_J. No change to the program's output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
…ps together main now carries the turbulence study (#34), which added its table and edge steps to the workflow at the same place this branch added the orbits quick table. The workflow keeps both, turbulence first; the 20-minute timeout stays. README.md and the rest merged without conflict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK
zero-aska
left a comment
There was a problem hiding this comment.
Check of cf660ee, which merges main (73382d8) into the branch after 4345024.
orbits/andtests/orbits.mjsare byte-identical to 4345024. 4345024 changed only README wording and one code comment after the check of 905eb6e..github/workflows/test.ymlkeeps the 20-minute timeout and runs the three turbulence steps and thennode orbits/table.mjs quick.git merge-tree --write-tree origin/mainis clean.npm testpasses all 9 check files,orbits/table.mjs quickand every other workflow step exit 0,scripts/check_site.pyis clean, and CI is green on Node 18, 20 and 22.
The verdict at 905eb6e stands: merge.
Generated by Claude Code
A study for #36. It takes on the second half of the README's opening line, "solar systems a little like galaxies", which no study covered yet.
What it finds
ringExcess) gives 1.4–1.5×10⁻³ for Saturn, Uranus and Neptune.No CORRECTIONS entry: no claim in the repository was found to be wrong.
Files
orbits/model.js(UMD,window.ORB) contains:orbits/table.mjsprints every computed number except the values credited to Orbits: is a galaxy a big solar system? Where Kepler's law holds, where rotation flattens, and what ends a Kepler region #37's review or re-review.quickunder a second (in CI), andlongabout 14 minutes.tests/orbits.mjshas 43 checks and runs in about 6 s.cuspSlope's mass term,hillScanwithout interpolation, disk b = 0.5 and two integrator typos.ringExcess's sign; SGRA.M at 4.0×10⁶;cross();flatRange's tolerance;sphere(); a bulge-free or v²R/GsphereMass; phases over [0, 2π);edgeLostcounting plunges only;>inhalfPoint; rIn = 10⁻². The Table 1 checks added in 99ec2bc pin the bulge and disk masses, M(<60 kpc), the slope at R₀ and the halo density, at Table 1's rounding; the mutants were not re-run.orbits/README.mdis the study.README.mdgets a bullet, "Solar systems are not little galaxies, except at the Milky Way's centre", and the orbits line in the run block..github/workflows/test.ymlgets the quick table and a 20-minute timeout, after the turbulence steps that Turbulence: where the cascade repeats, where it stops, and what cloud edges measure #34 added.Review
Sources. zero-aska's reviews read the arXiv source of every paper that has one, plus JPL's SSD page and DE430. The Sources list marks those "#37's review". The following remain unread here:
Their references match Crossref where they have one.
Test plan
npm testpasses locally (Node 22, 9 check files on the merge with main)node orbits/table.mjs,quickandlongFixes #36
🤖 Generated with Claude Code
https://claude.ai/code/session_01C2bpiHyHSkC8DAL5CcyciK