a place for friends (8)

instruments / chronology / README.md · raw

topics/chronology — line them up

Kieran, 2026-09-08: "if you're talking about cycles of Halley's comet or eclipses... line them up. for real. there's def no unbroken world history lineage from first principles."

First test: the Spring and Autumn Annals against the computed sky

Record. The 春秋 jing text as transmitted on zh.wikisource (12 dukes, fetched 2026-09-08, sources/wikisource/, revision ids in the manifest). 37 entries say 日有食之 ("the sun was eaten"); 31 carry a sixty-day cycle day; reign-years total 242 by the text's own count. Parsed by pipeline/ (see derived/chunqiu_eclipses.json). Nothing taken from a concordance: no BCE year, no month table, no cycle anchor.

Sky. Solar eclipses from orbital mechanics (astronomy-engine, VSOP87/ELP), no calendar assumed; restricted to eclipses visible at Qufu (35.6 N 117.0 E), the capital of Lu, on the local date.

Search. Two free parameters, exhaustively: the astronomical year of Duke Yin's first year (−1000 to −442) and the phase of the sixty-day cycle (60). A record matches a cell when an eclipse visible at Lu falls in that reign-year, within a month of the stated Zhou month (Zhou month 1 ≈ December/January), on a day whose cycle name is the one stated.

Result, first pass (derived/align_chunqiu_local.txt): with a month of slack, 722 BCE scores 21 of 31, but the sky is cyclic and the slack lets the cycles through: 54 years either way (three saros, the exeligmos) scores 15 and 14. Kieran's objection, verbatim: "this is cyclic. if you miss years they can be 'matched' later... take any of those and shift left or right." He was right, and the first write-up of this section explained the misses instead of counting them. Retracted.

Result, cycle-proof (derived/align_combined.json). The exeligmos moves an eclipse one lunation against the seasons, so requiring the annal's Zhou month EXACTLY (Zhou month 1 = December/January, no slack) is the test the cycle cannot pass:

first year of Duke Yinmonth ±1month exact
722 BCE (conventional)2114
776 BCE, −1 exeligmos142
668 BCE, +1 exeligmos152
±1 saros, ±1 inex, ±19 y, ±1 y0–30–3
best of the other 33,000 cells6

Ten records match nothing at 722 BCE under any tolerance. They are listed in align_chunqiu_local.txt; two are the annal recording eclipses in consecutive months, which the sky cannot do. They are counted, not explained.

The solstices (derived/align_solstices.json, align_combined.json). The Zuozhuan commentary dates two winter solstices to the day (僖公 5, 辛亥, on a new moon; 昭公 20, 己丑). A solstice recurs with no eclipse cycle: 54 years shifts its cycle-day by 43. At 722 BCE with the eclipse-fitted phase, BOTH stated days fall two days BEFORE the computed solstice, the same sign and size; the stated new moon is one day from the solstice as computed. At the 54-year aliases the stated days miss the solstice by 25 to 30 days. No cell on the grid matches both solstices exactly and more than one eclipse. Read it either way: the earliest dated solstice observations on record are two days early by gnomon, or something in the count is off by two days that the eclipses do not see. That two-day residue stays visible here.

What survives. With exact months, no eclipse cycle reproduces the annal's pattern anywhere but 722 BCE; the one cycle-free constraint sits within two days of the same cell and a month from every alias. What does not survive: any claim that the count is "pinned" to the day, or that the misses are noise.

Second test: the Anglo-Saxon Chronicle's own AD count

Record. Ingram's 1823 translation (Project Gutenberg #657, sources/gutenberg/). Fifteen entries say the sun or moon was eclipsed; eleven give a day, in Roman reckoning (calends, nones, feasts), which pipeline/align_ad.py converts. The AD year is the chronicle's own label.

Sky. Solar eclipses visible at Winchester and lunar eclipses with the Moon up there, computed as above.

Result (derived/align_asc.txt, derived/align_asc_per_record.json). Over a single offset searched ±400 years, offset 0 is the lone spike (z ≈ 13). Record by record, the chronicle's year labels sit on the sky for 538, 540, 800, 806 and 1121; run one year behind the sky for 795, 827 and 1077 and two years behind for 807; and two entries (664, 802) have no eclipse on the stated day in any nearby year, a slip of days in the day count or the translation. The one-to-two year lag in the 795–827 stretch is a real drift in the chronicle's own count, found here from the sky alone.

Third test: Ptolemy's era of Nabonassar

Record. Halma's 1813 French Almagest (IA india.history.resource.111794, OCR; sources/ia/). The local model read each passage that names the era near an eclipse (pipeline/extract_almagest.py); every quote is checked against the archived text. Seven calendar dates (year of the era, Egyptian month, night of the Nth to the N+1th) and two interval statements (N years D days from the epoch), derived/almagest_eclipses.json. Ptolemy's stated hours of night were read by me into local hours, kept as a separate labelled claim (derived/almagest_hours.json).

Sky and search. The Egyptian year is exactly 365 days, so a date is a pure day count from the era's first day. One free parameter, the Julian day of that first day, searched over ±300 years day by day (pipeline/align_nab.py).

Result (derived/align_almagest.txt). By days alone, 95 epochs tie at 8 of 9: lunar eclipses recur every saros and days cannot tell the copies apart. The alias landscape, days and hours:

shift from the conventional epochdayshours
none87
−1, −2, −3 saros80–2
−1, −2 exeligmos82
+2 inex82
+1..+3 saros, +1, +2 exeligmos3–60
±1, ±3, ±7 years (no cycle)0–10–1

Only the hours separate the conventional epoch from its backward saros copies, and the hours are MY readings of Ptolemy's temporal hours (derived/almagest_hours.json), a labelled claim, not the text. Anyone redoing the readings can move that column. The one day-miss (year 546, Mesori

  1. matches at no tested epoch.

What the three tests say together, after the objection

The sky is cyclic, so a match is only evidence where the test cannot be passed by a cycle. Lu: exact months defeat the eclipse cycles and the solstices are cycle-free; both point at the same cell, the solstices two days off. England: the chronicle's own count drifts by one to two years in one stretch and by days elsewhere; it is not a pinned chain, it is a count with visible slop. Ptolemy: days alone alias every saros; only the read hours separate the epoch, and those are a claim of mine. Nothing here is "pinned"; each chain is constrained, with its residue listed.

What "playing the universe in reverse" actually assumes, and which tests lean on which

Kieran, 2026-09-09: "we're not trying to reproduce lu's pattern. we're trying to reproduce what actually happened. this is 100% calculable... if something like the tennis racket effect happened that would break the actual projected reverse history of eclipses."

The reverse projection is two computations with very different standing:

  1. The orbits (Sun, Earth, Moon; VSOP87/ELP here, JPL DE422 for cross-check). These fix the dates of eclipses, new moons and solstices anywhere on Earth. They do not care how the Earth spins. Robust over 3000 years to a fraction of a day.
  2. The spin (Earth's rotation history, "ΔT", about 5 to 6 hours of accumulated offset at 700 BCE in the standard curve). This fixes where on Earth an eclipse was seen and at what hour. It is the assumption. A tennis-racket flip, a pole shift, or any change in the day's length changes only this. And it is measurable from the records themselves.

Rotation-free test (derived/align_chunqiu_rotationfree.json, align_rotationfree_combined.json): eclipse dates anywhere on Earth, exact Zhou month, cycle day, plus the two solstice days. Orbits only. Result: 722 BCE scores 15 of 31 with the solstices two days off, and it is NOT alone:

first yeareclipse dates (orbits only)solstice offsets
917 BCE17−7, −6
871 BCE17−5, −5
657 BCE160, 0
722 BCE (conventional)15−2, −2

By dates alone the annal fits 657 BCE as well as 722 BCE, and fits its solstices better there.

What decides between them is the spin (derived/spin_sensitivity.json). Requiring the date-matched eclipses to have been above Lu's horizon:

first yeardates matchedof those, visible at LuLu moved 3 h east / westmoved 6 h
722 BCE151414 / 83 / 3
657 BCE1621 / 21 / 2
917 BCE1730 / 52 / 0
871 BCE1713 / 43 / 3

At 722 BCE nearly every eclipse the annal dates was over Lu's sky. At every alternative, the date-matched eclipses mostly happened over the other side of the planet. That is the physical discriminator, and it depends on the spin history being right to within about three hours; a six-hour error, or a pole shift, erases it.

The spin measured from the records, not assumed (derived/deltaT_from_records.json). For every eclipse with a stated hour: implied ΔT = the peak in dynamical time from the orbits, minus the stated local hour as UT. Ptolemy's eclipses (my hour readings) and the chronicle's:

yearsourceimplied ΔT (h)standard curve (h)
−620Ptolemy, Babylon5.15.3
−522Ptolemy, Babylon4.74.9
−490Ptolemy2.24.7
−381Ptolemy, Babylon5.3, 4.64.2
−173Ptolemy, Alexandria1.73.5
−140Hipparchus, Rhodes2.93.4
+125Ptolemy, Alexandria2.92.6
538, 540Chronicle1.3, −0.51.5
800, 809Chronicle1.3, −0.80.8

The stated hours are seasonal hours, "at dawn," "half an hour over nine," so ±2 h is their precision, and within that the records follow the standard curve from −620 to +809 with no step. A spin event of an hour or two would hide in this; one of six hours would not. Nothing here tests the spin before −620 except the Lu visibility itself.

Where that leaves Lu. 722 BCE is what the physics selects, conditional on the Earth having spun in the standard way between 720 and 480 BCE to within about three hours. The orbits alone would also accept 657 BCE and a few others. That conditional is the honest statement, and the place a spin event would have to hide.

Fit maps: every segment of the sky each record fits (pipeline/fitmap.py, derived/fitmap.*)

Kieran, 2026-09-09: "im trying to assess today backwards through lu's first recording. if there are multiple segments that any of these sequences can fit, that's the pattern to notice."

Sky computed from −2600 to +1500, orbits only, then the spin-dependent check on each fit.

Lu, 31 dated eclipses over 242 reign-years.

filterfirst-years that fit
≥ 12 of 31 eclipse dates (exact month, cycle day), orbits only381
… and both solstices within ±2 days (cycle-free, orbits only)57
… and ≥ 10 of the dated eclipses visible at Lu (spin)3: 2545 BCE, 722 BCE, 201 BCE
both1: 722 BCE (14 visible, solstices −1, −1)

The 381 fall at Metonic spacings (18–19 years and multiples); the sequence is degenerate by orbits alone. The spin cuts it to three, 521 and 1823 years apart, long eclipse periods. The solstices then leave one. Runner-up under both: 201 BCE (10 visible, solstices +2, +3).

Ptolemy, 9 dated lunar eclipses over 485 years of his era.

filterepochs that fit
≥ 8 of 9 on the stated nights, orbits only304
… and ≥ 5 of the stated hours (spin; my readings)2: 747 BCE (7 hours), 2002 BCE (5 hours)

Lunar eclipses recur every 3, 4, 7, 8 and 18 years, so nine nights fit hundreds of segments. The hours cut it to two, 1255 years apart, with the conventional epoch ahead 7 to 5.

The pattern. By the orbits alone every sequence here fits hundreds of segments of the sky. Everything that picks one segment is the spin: what was above the horizon where, at what hour. The spin history is measured, not assumed, from −620 onward (previous section) to ±2 hours, and is untested before that except by these same fits.

One-time witnesses inside the same primaries: planets and comets

Kieran, 2026-09-09: "if you also have the one time occurrences inside of these first hand accounts, these should be pretty compelling. they should match right? haley's comets etc."

Ptolemy's planets (pipeline/extract_almagest_planets.py, derived/almagest_planets.json, pipeline/align_planets.py, derived/align_planets.json). Halma's text reports 21 dated planetary observations (Ptolemy's own, Babylonian, Dionysian, Hipparchan): a planet at a stated longitude or beside a named star, on an Egyptian date, at an hour. A planet's place among the stars does not recur on any eclipse cycle. Eight could be read to the degree (the OCR mangles the minutes; degrees only, ±3° tolerance); regnal years are converted with Ptolemy's OWN equivalence in the text ("la seconde année d'Antonin, qui étoit la 886e de l'ère de Nabonassar"), Hadrian's via his 21-year reign, a labelled claim.

epochplanets within 3° of where he puts them
conventional (747 BCE)6 of 8 (differences +1.1 to +4.7°, all positive: his known ~1° longitude offset plus the dropped minutes)
±1 saros, ±1 exeligmos, the 14.7 y and 228 y day-level ties, ±1 year0 to 2 of 8
best other cell, coarse scan ±300 years5 of 8, at −263 years

The eclipse aliases do not survive the planets. What remains is one chance-level cell at 5 of 8, which more teeth would settle: 13 records are still unparsed (Dionysian and Chaldean dates, star references without a longitude).

Comets (derived/halley_apparitions.json, derived/asc_comets_raw.json, the annals' other_sky_events). The annals record four comets, a meteor storm and a meteorite; the Chronicle sixteen comet sightings; Procopius the year-long veil. Halley's returns are the only comet whose apparitions are computed, and the available table (Wikipedia's list from Kiang, Yeomans and Kiang, Sitarski; Landgraf 1984 archived but its table unparsed) starts at 240 BCE, so the annals' comet of 文公 14 cannot yet be tested. The Chronicle's 1066 comet, "the fourteenth before the kalends of May," falls on Halley's 1066 return; its other comets are other comets. The fit map carries a comet column for the Chronicle. A backward integration of Halley with the nongravitational terms is its own project and is what the annals' comet needs.

Honest scope. Each of these one-time teeth pins a single comb to the sky. None of them ties one primary to another; that still needs the joints between counts.

Next

Halley's apparitions in the Chinese annals and the European chronicles; the Miyake 774/993 rings as the calendar-free tie; the Babylonian diaries; a Fomenko-style redating tested the same way.

Corrections inside the primaries, and precession as the clock (2026-09-08)

Kieran: "remember we're looking for primary sources, not retranscribed and corrected. i bet history is full of scribe notes that are like 'and the record says this happened, but it couldnt have been this day cuz that was like a way different time'… historical 'Corrections' against primary sources… and this is all because no one bothered to note precession across their lifetimes… that would at least quiet the slippage to 26kish years."

Two lines followed from that. First, catalogue the places where a primary corrects or disputes its own dates (derived/corrections.json, 21 entries, each with the verbatim words and the layer they come from). Second, use the one clock that has no short cycle: the slow turning of the equinox against the stars, which repeats only every 25,800 years. Both are done from the archived texts and the physics in pipeline/; translations (Halma, Crawley, Spillan, Macaulay, Stewart & Long, Ingram) are secondary layers over the primaries and are labelled as such everywhere.

The corrections the sources make themselves

  • Zuozhuan. "不書日,官失之也" (the day is not written; the officials lost it) twice, on the eclipses of 桓公17 and 僖公15. "閏三月,非禮也" (an intercalary third month, improper) at 文公1, and "閏月不告朔, 非禮也" at 文公6. On the eclipse of 襄公27: "辰在申.司曆過也.再閏失矣" (the sun's station was 申; the calendar officer erred; two intercalations were missed), with the annal itself saying the 12th month and the commentary the 11th. At 昭公17 the Grand Historian and a minister argue at court over which month the eclipse belongs to ("日過分而未至… 當夏四月"). At 哀公12 Confucius corrects the calendar from a star: "火伏而後蟄者畢.今火猶西流.司厤過也" (after the Fire star sets the hibernators are all in; the Fire star is still flowing west, so the calendar officer erred). At 襄公28, 梓慎: "歲在星紀.而淫於玄枵" (the count puts Jupiter in 星紀; it has strayed into 玄枵).
  • Ptolemy, Almagest VII.3. Seventeen stars with three generations of declinations, "par Timocharis… par Hipparque… et par nous", then the conclusion of one degree per hundred years. The old lunar occultation records are re-reduced: Timocharis' "3½ seasonal hours after midnight" becomes "nous ne trouvons que 2 heures équinoxiales" — the later writer correcting the earlier one's hour.
  • Thucydides 5.20 refuses the magistrate lists as a clock: "This must be calculated by the seasons rather than by trusting to the enumeration of the names of the several magistrates."
  • Livy records that his annals disagree on which consuls held a given year (2.54, 4.23, 7.18, 21.25: "Instead of Virginius I find Vopiscus Julius consul in some annals. In this year (whatever consuls it had)…"; "some annals, as if in mourning, present nothing but the names of the consuls"). The Rome column's teeth are made of this list.
  • Herodotus 2.142 turns 341 generations into 11,340 years by a rule of thumb, and 2.53 dates Homer by "I suppose… four hundred years before my time and not more".
  • Plutarch (Solon 27): the chronologers "without their being ever able to make their dates agree"; (Camillus 22): "if we can believe that any accurate record has been kept".
  • Halma's preface (secondary) carries the modern accusation that Ptolemy's catalogue is Hipparchus' with 2°40' added. The declination test below is the check on that from the primary's own numbers.

襄公27: the correction against the sky

At the eclipse-fitted first-year (−721, phase 49) the 乙亥朔 eclipse of 襄公27 is the one of JD 1522281.4 (13 October 546 BCE, Julian), and the sun on that day is at λ 193°, the 建酉 month, which is the Zhou 10th month by the solar terms. The annal says the 12th month: two months between the sky and the annal. "再閏失矣", two intercalations missed, is exactly what the sky shows. The commentary's own "11th month" is one off, and its "辰在申" (the 9th) overshoots by one in the other direction. Script: pipeline/align_lodges.py; result: derived/align_lodges.json.

Precession: the epoch each observer's declinations imply

pipeline/align_precession.py, derived/almagest_declinations.json (my transcription from the French and Greek columns of Halma vol. 2 pp. 17–20; ambiguous fraction glyphs flagged, four settled by Ptolemy's own stated differences on p. 20), derived/align_precession.{json,txt}. Method: the modern position and proper motion of each star (SIMBAD, archived under sources/simbad/) carried to a trial year and rotated to the true equator of that date; the stated declination then names the year. A star crosses a given declination once per 25,800 years, so there are no aliases: within −3000…+2000 every star crosses its stated value once (Sirius, Castor, Pollux twice, sitting near the solstitial colure where the change is slow), and the joint fit has one minimum.

observer (as the book names them)starsbest year1σ2σrmsthe count saysΔχ² there
Timocharis / Aristyllus17−276−288…−264−302…−2500.25°−290 (Nab. 454–466)+1.1
Hipparchus17−118−132…−104−144…−920.15°−128+0.5
Ptolemy, "nous"17+114+102…+126+88…+1420.20°+137 (Nab. 885)+2.4

Intervals by precession: 158 years from the first observers to Hipparchus (the book's Nabonassar years give about 160), 232 years from Hipparchus to Ptolemy (the book says 265). Ptolemy's own set sits 23 years early of the count, at the 2σ edge. It does not sit at Hipparchus' epoch: Halma's accusation is not what the declinations say. The catalogue longitudes themselves could not be read (the OCR lost the table numerals), so the longitude offset seen in the planets test is not re-examined here. Largest residual: Arcturus, −0.70° for Timocharis, with its 2″/yr proper motion included.

Seven lunar occultations: one-time teeth with the moon

derived/almagest_occultations.json (Halma vol. 2 pp. 21–27), pipeline/align_occultations.py, derived/align_occultations.json. Each record: an observer's own date (Callippic period and Athenian month, or regnal year and local month), Ptolemy's conversion to the Egyptian calendar and the era of Nabonassar, the hour, the place, and the star the moon was on. The moon is on a given star at a given phase and calendar date essentially never twice, so this test has none of the saros aliasing.

recordobserver, placeNab. yearstarmoon–star at the conventional epochas minutes of the moon's motion
R1Timocharis, Alexandria465η Tau (Pleiades)0.70°76
R2Agrippa, Bithynia840η Tau0.64°70
R3Timocharis, Alexandria454Spica0.36°39
R4Timocharis, Alexandria466Spica0.31°33
R5Menelaus, Rome845Spica0.13°14
R6Menelaus, Rome845β Sco0.46°50
R7Timocharis, Alexandria454β Sco0.60°65

All seven within a moon's diameter or so. Scanning the epoch of Nabonassar over ±400,000 days (±1,095 years) at one-day steps: 7/7 only at the conventional epoch; 6/7 at +186.0 years; 5/7 at −186 and +558 years; everything else 4 or fewer (3,770 candidate epochs put the moon within 2.5° of the Pleiades for R1; histogram 0:2393, 1:1282, 2:75, 3:13, 4:2, 5:3, 6:1, 7:1). So the Ptolemy column's 304 eclipse aliases collapse to one within ±1,100 years, and the precession test above covers the rest of the 26,000. The residuals in minutes are the spin witness: the stated hours agree with the standard ΔT to about an hour, which is the precision of seasonal hours rounded to halves and thirds. The one assumption besides orbital mechanics is that spin history; a two-hour error in it would be one degree.

The Zuozhuan's own sky statements at each candidate first-year

pipeline/align_lodges.py over the 40 best eclipse cells. Frames: sun and Jupiter in the true ecliptic of date; the 28 lodges from their determinative stars (SIMBAD) rotated to the same frame; the twelve 次 from the Han 律曆志 lodge-degree boundaries (a later definition, flagged).

  • 僖公5, "丙子旦,日在尾" on the new moon of the 12th month. At −721 the computed conjunction falls one day after the stated day, in the right month, with the sun at λ 227.1°: in 尾. Of the 40 cells, six pass (first-years −721, −851, −767, −897, −545, −461). The lodge is 18° wide and the lunar month wanders, so this comb is coarse; it agrees, it does not pin.
  • Jupiter, 歲在 ×9 (襄公19 to 昭公32). 0 of 9 at −721, and 0 at nearly every cell. The offsets (stated minus sky) are 2, 4, 2, 2, 2, 3, 2, 2, 3 stations: a uniform twelve-year count gains one station on the sky every 86 years, so these numbers are what a count calibrated around −380…−300 produces for events of −553…−509. The Jupiter lines were computed by a later hand, not seen, and the primary says so itself: "歲在星紀.而淫於玄枵". The only cells reaching half are −897 (5/9) and −648 (6/9), and both fail the eclipses (6 and 5 of 31).
  • 昭公17, "日過分而未至". No eclipse falls on a 甲戌 day anywhere in −525…−524 (the eclipse test already counts this record as a miss); the eclipses of that window fall on 壬午, 辛亥, 己酉, 丁丑, 癸酉 (the annular one of −524-08, visible at Qufu, sun at λ 142°). The Grand Historian's seasonal claim cannot be tested at the anchor. Counted, not explained.
  • 哀公12, Confucius on the Fire star. In a properly counted 12th month at −482 Antares is 17° behind the sun, invisible at dusk, and its last evening visibility falls in the Zhou 11th month by the solar terms; so the rule "火伏 before the 12th month" holds at that epoch, and the miscounted month is the natural reading. The same holds at every cell tested: this rule is compatible with any epoch before about +3000. A consistency, not a pin.

What this does to the fit map

Pins added to the map (purple): where the sky puts the writer, independent of any comb. Ptolemy's column: three precession epochs and the occultation result; Lu's column: the 僖公5 sun, the 襄公27 correction, and the Jupiter offsets. Rome and Athens are unchanged, and Livy's own words say why their teeth cannot be trusted as a list.

Our calendar: the anchor (2026-09-08)

Kieran: "we need to anchor against something. let's assume the physics calendar is our best effort truth going backward. today is 0, going backwards positive so yesterday was one, tomorrow is minus one. we need to stop thinking in terms of dates being truthful, assess whether or not these corrections were firsthand or not first hand and start building a probability this happened at our calendar date. i prefer a 13 month calendar with a new years day between march and april."

The frame (pipeline/ourcal.py). Day 0 is 2026-09-08, the day the frame was fixed (a moving origin would change every stored number daily). Days count backward positive. Year 0 begins on the day of the March equinox of 2026 as the orbits give it; year k begins on the equinox day k years earlier; thirteen months of 28 days, and the one or two days left before the next equinox are year-days (YD, LD) outside any month, just before New Year's Day. There is no leap rule to get wrong: the year is the tropical year by construction. A date in a source (a duke's year, a year of Nabonassar, an AD number) is never a coordinate here; it is a claim attached to a position on the count. Written year·month·day, e.g. today is 0·7·5.

Firsthand or not (pipeline/witness.py). Every record is graded by its own account of where its words stand from the event: own (the writer's own observation), office (a contemporary institutional record), quoted (a later writer quoting a named earlier one), commentary (a later hand on an existing record), computed (a later count presented as record), editor (not a witness). What we physically hold is in every case a modern print or transcription of a manuscript tradition, so no witness is firsthand as an object. The 21 corrections now carry their grade: 2 own (Ptolemy's declination chain, Thucydides), 1 office, 11 quoted, 5 commentary, 1 computed (the Zuozhuan's Jupiter lines), 1 editor.

The probability (pipeline/anchor.py, derived/anchor_lu.*, derived/anchor_ptolemy.*, derived/anchor_events.json). Flat prior over every position the comb search covered; explicit likelihoods with their parameters written down; each record's landing day at each position inherits that position's mass. Parameters, all ours or from the search itself: Lu orbits q = 0.0113 (the grid's null rate), ε = 0.194 (the count's own miss share at its best cell); visibility p_true = 0.9, p_false = 0.142 (share of eclipses visible at Qufu); solstices 0.8·Normal(σ = 3 d) + 0.2·uniform. Ptolemy nights q = 0.0042 (umbral eclipses per night), ε = 0.05; hours p_true = 0.75, p_false = 0.116 (the aliases' own rate); occultations q = 0.0015, ε = 0.1; precession from the χ² curves.

Lu, 559 first-years × 60 phasesmass at (−721, 49)top cells
orbits only0.0014−934 and −526 tie at 25/31 landed (1 and 3 visible), 0.497 each
orbits + visibility1.0000−721: 24 landed, 21 visible
orbits + visibility + solstices1.0000−721: solstices −2, −2 days
Ptolemy, 304 positionsmass at the conventional epochnext
nights0.0033flat: every position has 8 of 9 nights
nights + hours0.9974−1254 y at 0.0019
+ occultations1.0000nothing above 10⁻⁶
+ precession1.0000same

So the anchoring of Lu rests on the spin evidence (which survives a three-hour spin error, see the sensitivity test above), and the anchoring of Ptolemy's era on stated hours and the occultations. Orbits alone anchor neither. That is the honest shape of it.

Events in our calendar. 47 events written with a day, a probability, aliases, and the witness grade. Every landed tooth carries mass 1.000 because both posteriors collapsed to one cell; the seven Lu records that land nowhere at that cell carry 0 and are listed as such (僖公12, 宣公8, 宣公17, 襄公15, 襄公21 月10, 襄公24 月8, 昭公17). A few, as the table reads:

recordwitnessour calendardays ago
隱公3 月2 己巳 (the annals' first eclipse)office2746·12·241,002,796
襄公27 乙亥朔 (the corrected one; its 乙亥 eclipse found by align_lodges, the record itself is missing from the extracted eclipse list and should be added)office2571·8·4939,011
哀公14 月5 庚申朔 (the last)office2506·1·25915,445
Nabonassar 1 Thoth 1 (the epoch)computed2773·12·281,012,654
Nab 127 Athyr 27 (Babylonian eclipse, quoted)quoted2646·1·27966,577
R5 Menelaus, Spica occulted at Romequoted1929·11·16704,429
Nab 607 Tybi 2 (Ptolemy's own, Alexandria)own2167·12·2791,343

Three things are still not in the model and are said here rather than hidden: a record that lands gets the full cell mass, though even at the true cell a fifth of Lu's records do not land, so the "1.000" is the position's certainty, not the record's; a miss is a miss, no nearby-day rescue; the Chronicle, Rome and Athens are not yet anchored this way (the Chronicle's own count slips by entry, so its events will get per-entry offsets rather than one cell).

The strict anchor, and the register of papering-over (2026-09-08)

Kieran: "we have to try to anchor based on what we know. again. later historians and scribes will have 'helpfully papered over' what they see as incorrect data. we need to specifically note this stuff."

Two files. derived/papering.json is the register: fifteen places where a later hand can be seen smoothing, correcting, converting or computing the record we hold, each with the hand named, the evidence, the effect on the anchor, and the witness grade; two of them record an absence of papering where its signature was looked for and not found. pipeline/anchor_strict.py rebuilds the anchor from only what stands on its own account plus physics, and nothing that passed through a later hand.

What the register holds

  • Computed by a later hand: the Zuozhuan's nine Jupiter lines (P1). 0 of 9 on the sky; offsets a consistent 2–4 stations; the values a twelve-year count calibrated around −380…−300 gives.
  • Corrected by a later hand: the commentary's month change and 辰在申 on the 襄公27 eclipse (P2). The sky sides with its diagnosis (two months) and against its replacement value; the day-name, which nobody corrected, is what lands. The 大史's calendar equation at 昭公17 (P3), untestable. The two solstice days (P4), −2 and −2, kept out of the strict anchor.
  • Corrected by a modern editor: the Wikisource text of 昭公10 changes 宋公成 to 宋公戌 from another book and a bronze (P5); the only editorial mark in the 24 files we hold.
  • Not papered (P6): at the fitted cell the annals' eclipse day-names land 24 on the exact day, 0 off by one day, 4 off by one lunation, 3 with no eclipse in the window. A later calendar hand would scatter day-names by a day or two and would not leave eclipses that never happened; the 官失之 entries were left without day-names rather than filled in. The day-names are taken as unsmoothed.
  • Duplicated inside the primary (P7): two consecutive-month pairs, 襄公21 and 襄公24; in each the first lands and the second is exactly one lunation later on a day with no eclipse.
  • Ptolemy's hand: his re-reduction of Timocharis' hour from 3½ seasonal to "only 2 equinoctial" (P8): the sky puts the moon's centre nearest Spica at about 2½; both values are within the moon's diameter, his moved toward the sky and overshot. His conversions of everyone's calendars into Nabonassar years (P9): consistent with the sky (7/7), but the joints are his. His own declinations dated 23 years before the epoch he states (P10).
  • Counts applied to older material: the Chronicle's AD numbers (P11), one to two years behind the sky on some entries and on it for others. The consular list as a reconciliation of disagreeing annalists (P12). Herodotus' three-generations-a-century (P14).
  • Editors: Halma (P13); ourselves (P15): the hour readings, the declination fractions, the Han lodge boundaries, the tolerance and reliability parameters, all written down as parameters.

The strict anchor

countevidence admittedresult
Luthe 經's eclipse day-names (office) and their visibility at Qufu; nothing from the 傳mass 1.0000 at first-year −721, phase 49 (24 landed, 21 visible); the next cell carries < 10⁻⁴
Ptolemyhis four planetary observations dated in Hadrian's and Antoninus' years (Mercury Nab 881 and 886, Jupiter 880, Saturn 886), and his own declinations; no Babylonian eclipses, no occultations, no Theon, no Dionysian-era Mercuryplanets alone: 98.3% of the mass within 30 days of the textbook epoch; with precession 99.7%; 95% band offsets −3…+2 days; mode 2–3 days earlier than the textbook JD (4 of 4 land there against 3 of 4 at the textbook day)

So the Lu anchor never needed the commentary, and Ptolemy's era is fixed to a few days by what he says he saw himself. The strict Ptolemy anchor is coarser than the full one (planets to 2.5°, not eclipse nights to the day): the epoch of Nabonassar comes out as 2773·12·25 or 26 in our calendar rather than 2773·12·28, and every one of his own observations carries about 0.49 on each of two adjacent days. That is the resolution of his own evidence. Support for the Ptolemy search: every day in ±300 years (219,001 epochs, derived/planets_scan.npz); the hits histogram over them is 0: 207,649 · 1: 10,846 · 2: 490 · 3: 14 · 4: 2, and the two 4-of-4 days are the two at the mode.

What is still excluded and unanchored: the Chronicle (per-entry offsets), Rome and Athens (their teeth are reconciled lists), the Zuozhuan's speeches and solstices (checked against the anchor, never part of it).

The dynastic spine: one tally of days from Lu to today (2026-09-08)

Kieran: "do we really not have good data for both roman empires? what about 1000-today? we should be getting close to putting our own calendar together (ignoring the stated date(d)s)" — and, on the multiplicity of fits: "it's ok that there are multiple eras that information fits in. thats the point we can dupe when a recordset might have happened. building an argument."

The tally checked at both ends

The Lu eclipse comb found, on its own, that the annals' sixty-day day-names sit at phase 49 of our day numbering. The modern convention, which everyone still uses, puts 2000-01-01 at 戊午; under the same numbering that is phase 49. Nothing connects the two computations except the claim that the sixty-day count has never been broken. So the tally of days runs from the annals' first eclipse (our 2746·12·24, 1,002,796 days ago) to today (乙酉) as one count, or was restored to exactly the same phase. Every eclipse alias of a comb needs a different phase (a saros shifts the day-name by 45, an exeligmos by 16), so the tally is what picks among the positions the orbits allow.

The treatises

The dynastic histories list eclipses in the annals' format: era, year, month, day-name, 朔. Fetched from zh.wikisource with src_wikisource.py (manifest lines as usual): 漢書 27, 後漢書 108, 晉書 12, 宋書 34, 魏書 105之一, 隋書 21, 新唐書 32, 舊唐書 36, 宋史 52, 遼史 44, 金史 20, 元史 48, 明史 31, 清史稿 37–39, and the Qing compilation 全史日至源流 as a cross-reference. pipeline/align_dyn.py --rigid makes each treatise one comb: the eras are spaced by their lengths in the source's own count (taken from the era table, sources/wikipedia-zh/中国年号列表, traditional-character rendering; used for spacing and for telling apart the several eras that share a name, never for absolute position), and the comb is slid over every first-year from −300 to +1800 and every phase. Months are Xia months (the first month holds February).

treatiserecordsreceived first-year, phase 49best other position within one tooth
新唐書 (Tang, Chang'an)8280 landed, 54 visible+54 y at phase 33: 79 landed, 44 visible; +159 y at phase 12: 79, 11
宋史 (Song, Kaifeng)125109 landed, 80 visible−141 y at 41: 109, 14; +54 y at 33: 108, 59; −716 y at 32: 108, 15
清史稿 (Qing 1644–1795, Beijing)4949 landed, 47 visible−300 y at 18: 49, 29; −354 y at 34: 49, 24; −1823 y at 25: 49, 21
元史 (Yuan, Dadu)3429 landed, 23 visible−1469 y at 40: 29, 12; +54 y at 33: 28, 16
金史 (Jurchen Jin, Zhongdu)2926 landed, 18 visible−300 y at 18: 26, 19; −354 y at 34: 26, 15
魏書 (Northern Wei)3622 landed, 20 visible+575 y at 58: 25 landed, 13 visible; +8 y at 36: 25, 2
晉書 (Wei–Jin)4525 landed, 16 visible+354 y at 4: 27, 13; +54 y at 33: 25, 13
宋書 (Wei–Jin–Liu-Song)6728 landed, 22 visible+354 y at 4: 29 landed
隋書96 landed, 2 visiblemany positions at 6; too few teeth
漢書37not yet placedearly Han records are dated by emperor and year, before era names; needs the reign table

Read it the way the fit map is read. By orbits alone every treatise fits at several positions, and those positions are the eclipse cycles: +54 years (three saros) and its multiples, −141, −213, −300, −354, −716, −1823. Two things separate them. Visibility from the capital (spin) prefers the received position everywhere the record is well kept, by a wide margin for Tang, Song, Qing and Yuan, narrowly for Jurchen Jin (18 against 19) and Northern Wei. The tally (phase 49) prefers it in every case, because no alias keeps the day-names. The three third-to-fifth-century treatises land under sixty percent even at their best position; their misses are largely the same records in both 晉書 and 宋書 (太和6, 青龍1, 正始3/6/9, 嘉平4, 甘露2, 光熙1, 永嘉2/6, 建興1), so they are records that do not match the sky at the day, not a placement error; counted, not explained.

So from the Lu annals (first-year our 2747) through Wei–Jin, Northern Wei, Tang, Song, Jurchen Jin, Yuan and Qing to the present convention, the day-count is one count and each dynasty's own record fixes its eras onto it, with the aliases listed beside. That is our calendar's spine, built from the sky and the records' own internal spacing, with the received dates used only to name the rows. Not yet on it: the Han (reign table), the Ming (its eclipses are in the 明實錄, not the 明史), the Liao (three records), and the Later Han volume (parsed to five records so far).

Rome and Byzantium: the data exists, the archive was thin

What was fetched today, each with a manifest line: Cassius Dio in Cary's nine volumes (consul-dated eclipses and comets), Pliny's Natural History vol. I (Bostock; Book 2 has the eclipse seen in Campania and in Armenia at different hours, a spin witness), Mommsen's Chronica Minora vol. 11 (Marcellinus Comes and Hydatius: consul and indiction on every year, eclipses of 402–458), de Boor's Theophanes (Greek, Anno Mundi and indiction), the Bonn Malalas, and Julius Obsequens (Latin Library). Counts of candidate passages: Dio 24 eclipse mentions across the volumes, Pliny 56 eclipse and 24 comet words, Chronica Minora 19, Theophanes 12, Malalas 7. The eclipse passages still need the model pass (extract_greekroman.py) and their counts (consuls, indictions, Anno Mundi, regnal years) turned into combs; the joint to Ptolemy's era is his own regnal datings (Hadrian 17 = Nabonassar 880, Antoninus N = 884 + N), which the strict anchor already fixed to a few days.

The window our years 150–1200, closed on the Chinese side (2026-09-08, later)

Kieran corrected the window to our years 150 to 1200, counted back from today (received ≈ 826–1876), and put the point plainly: "apparently our problem is excused as 'the dark ages' and so what we're doing is building arguments bolstered by physics, a potentially more reliable chinese calendar, how many years actually took place from now backward to probabilistically determine when actually what happened."

The Ming and the late Qing keep their eclipses in the imperial annals (本紀), not in the treatises, so src_wikisource.py fetched 明史 卷1–24 and 清史稿 卷16–25 and align_dyn.py gained an annals parser: the annals name an emperor's era once, at the accession, mark each year with a heading ({{YL|洪武元年}} in the Ming pages, "咸豐元年辛亥春正月" in the Qing ones, the year followed by its own sexagenary name), state each month once, and then list days by name alone ("丁未朔,日有食之"). Era, year and month are carried through the text, and a dynasty's volumes are read as one text. With that, every treatise or annals from Tang to the end of the Qing lands at its received first-year with phase 49 of the tally:

recordreceivedour yearsat the received year, phase 49nearest alias
Tang 新唐書618–9071408–111980 of 82 landed, 54 visible+54 y, phase 33: 79, 44
Song 宋史960–12791066–747107 of 115, 80 visible+54 y, phase 33: 108, 59
Jurchen Jin 金史1117–1234909–79226 of 29, 18 visible−300 y, phase 18: 26, 19
Yuan 元史1264–1368762–65829 of 34, 23 visible+54 y, phase 33: 28, 16
Ming 明史 annals1368–1644658–38275 of 78, 62 visible+54 y, phase 33: 75, 50
Qing 清史稿 treatise1644–1795382–23149 of 49, 47 visible−300 y, phase 18: 49, 29
late Qing 清史稿 annals1796–1911230–11530 of 40, 27 visiblenone within one tooth
the modern conventiontoday0phase 49

So from our year 1408 to our year 0 the Chinese day-count is one tally, each dynasty's own record fixes its eras onto it at the received spacing, and the number of physical years between any two of them is the received number. Inside the window 150–1200 no years were added or removed. What the sky cannot say is what happened in those years: a polity can be missing from every book without moving one day-name. The Western side of the same window is the "dark ages" in the record we hold: the Anglo-Saxon Chronicle's own count lands on the sky to 1121 (our 905), and after that we hold nothing first-hand until the fetched Roman and Byzantine texts are extracted and the medieval chronicles and early-modern observers are added. The gaps that remain on the Chinese side: the Han (reign table), 907–960, the Liao and the Later Han volume.

Where we are, temporally (2026-09-08, the survey)

Kieran: "what did we figure out? the question i didnt pose on purpose is that there are reports of popes adding hundreds of years. with this amount of information. please suspend disbelief, we should be able to try to 'objectively' survey where we may actually be temporally."

The survey is a set of measured distances from today, each with the evidence it rests on and its aliases, against the received count's claim for the same distance. The received count is a label; the distance is physics.

record, by its own accountdistance from today the sky givesrests onreceived label saysaliases the orbits allow
Ptolemy's own declinations of 17 starshis sky was 1,884–1,938 years ago (2σ), mode 1,912precession; no cycle1,889 (AD 137)none in 5,000 years
Ptolemy's own 4 planetary observations, in his own day-count689,331 days to Nab 886 Epiphi 2; epoch of Nabonassar 1,012,657 d (our 2773·12·25)orbits; his count688,800 (AD 140)none within ±300 years above 3 of 4; at ±297 years 1–2 of 4
the annals of Lu, 31 eclipses over 242 reign-yearsfirst eclipse 1,002,796 d (our 2746·12·24)orbits + visibility at Qufu722 BCE (our 2747)by orbits alone 934 BCE and 526 BCE tie (our 2960, 2552); visibility leaves one
Tang, 82 eclipses over 289 yearsfirst-year our 1408orbits + visibility at Chang'an + the tallyAD 618 (our 1408)+54 y at phase 33, +159 y at phase 12; nothing at ±297
Song, Jin, Yuan, Ming, Qing, late Qingour 1066, 909, 762, 658, 382, 230samethe same numberseclipse cycles only, other phases
the Anglo-Saxon Chronicle, its own AD count538–1121 on the sky, entries 800 and 806 exact, four entries 1–2 years behindorbits + visibility at Winchesterthe same31 positions for the whole comb; best at the label
the modern sixty-day conventiontoday = 乙酉, phase 49the same phase the Lu comb found

The Chinese tally is one count from the annals' first eclipse to today: every dynasty's own record lands at the received spacing with phase 49, and the 60-day names run unbroken through 1,003,000 days.

A 297-year insertion (the phantom-time claim, 614–911) is excluded three independent ways. Ptolemy's own declinations: with 297 years added the sky he describes would be that of 160 BCE, and the fit is 20σ away (χ² 401 against 11); Hipparchus' and Timocharis' sets the same, 22σ and 23σ. His own planets: at 297 years either way the best fit is 1 or 2 of 4 against 4 of 4. The Tang treatise: its 82 eclipses over 289 years land only at our year 1408, +54 and +159; nothing at ±297. And the Chronicle's own AD count has exact lunar eclipses in 800 and 806, inside the supposed phantom interval, which would have to be fabrications matching the sky to the day.

What is not excluded, because we have not measured it: the years between Ptolemy (AD 141) and the first Chinese treatise we trust (220), covered so far only by the Wei–Jin records at about 55–60 percent landings; the years 907–960; the Western record between 1121 and the early-modern observers, which we have not fetched; and the Western imperial list from Augustus to Hadrian, whose teeth (Pliny, Dio, Obsequens) are fetched and not yet tested. A net-zero edit, years added in one place and removed in another inside one of those gaps, would not be seen yet. Nothing we hold points at one.

What the count cannot say. The zero of the AD label (Dionysius' placing of the birth) is not a physical event and is not measured here; what is measured is the distance from today to the observations, and those distances match the labels' intervals. Content can be missing from any of these years without moving a day-name; that question belongs to the evidence rooms, not the calendar.

So: today is 1,889 ± 26 years after Ptolemy's sky, 1,408 years after the first Tang eclipse, 2,746 years after the first eclipse the annals of Lu record, and the received count has the same intervals. If years were added by anyone, it was not between any two of these marks.

The "dark ages", fetched (2026-09-08, evening)

Kieran: "do dark ages just really have a complete dearth of information?" and, on my proposing the week as a check: "you have to be kidding about days of the week being an unbroken tally… anchor on these events having date suggestions. we're trying to place the unbroken series into any place they could fit so we can try to reverse back into plausible. lets get the irish stuff and the other stuff."

Fetched with manifest lines: the Irish annals from CELT (Ulster, Tigernach, Chronicon Scotorum, Inisfallen, Four Masters, Loch Cé, Fragmentary), Bede (Sellar 1907 and Gutenberg 38326), the Royal Frankish Annals, Fulda and St-Bertin (MGH Latin), Gregory of Tours (Brehaut), al-Battani (Nallino), Paul the Deacon, the Nihongi (Aston), and from zh.wikisource the 日本書紀, 續日本紀 and 三國史記, with the Japanese era table and the Silla and Baekje king lists for spacing. Raw extractions: derived/irish_sky_raw.json (45 sky entries), derived/irish_kalends.json (2,748 yearly calendar lines: the annalist's weekday and lunar age on the Kalends of January, 296 complete, kept as data with free phases, not used as a clock), derived/bede_sky_raw.json, derived/frankish_sky_raw.json.

Each source's own AD count slid over ±400 years (align_ad.py, now taking explicit days and year-level teeth; visibility at the source's own place):

source, its own countteethat offset 0elsewhere
Bede, years of the Incarnation (Jarrow)4 day-dated3 land to the day (538, 540, 733); 664 stated May 3, the sky's May 1+27 y lands 2; nothing else above 1
Annals of Ulster and kin (Armagh)5 day-dated, 21 year-level664 "Kalends of May at the ninth hour" exact; 921 within a day; 15 of 21 year-levelbest other offset 13 of 21 year-level, 1 day-tooth
Frankish annals (Aachen)6 day-dated, 4 year-level1 landsmy year-heading tracker fails on the MGH page layout (marginal years, apparatus); to be redone by hand

So the two English-language counts through the supposed dark centuries sit on the sky at offset 0, by their own numbering, with the usual one-to-two-day slips (Bede's 664 is two days off, Ulster's is exact). Still to do here: the Frankish headings by hand, Theophanes' Greek entries (world-year, month, day), al-Battani's timed eclipses of 883, 891 and 901 in the Seleucid count, and the eastern annals through the dynastic parser with the Japanese eras and Korean reigns.

The Western chain, our years 0–1500: first pass (2026-09-08, night)

Scope set by Kieran: "focus solely going fwd on our 0 to like 1500 ish going fwd and western." Received ≈ 526 to today. The Arabic astronomers of the ninth to eleventh centuries are treated as part of this chain (the densest timed observations of the stretch; their counts labelled as their own). Every count is slid over ±400 years as a suggestion; align_ad.py now scores orbits (any eclipse of that body on the stated day, anywhere) and visibility (at the writer's own place) separately, counts year-level entries, and prints each miss up close (the nearest eclipses of that body within 45 days), because a day slip, a month slip and a year slip are different claims.

source, its own count, its placeday-teethat offset 0: orbits / visibleelsewhere within a toothmisses up close
Bede, Jarrow43 / 3+19 y lands 4 by orbits, 0 visible; +27, −19, +84 land 3, ≤2 visible664 stated May 3: the sky's May 1 (−2)
Annals of Ulster and kin, Armagh5 (+21 year-level)3 / 3, 15 of 21 year-levelfive offsets land 3 by orbits, 1 or 0 visible692 "moon the colour of blood" on St Martin's: nothing within 45 d; 734 Jan 22: +2
Frankish annals, Aachen (years read by hand from the MGH OCR, flagged)114 / 4 (787, 807, 820, 840; three with hours)none817 Feb 5: +14; 823 Mar 5: none; 831 Apr 19: +11; 832 May 6 and 20: −32; 876 Oct 15: none, Oct 29: +21 — month and year slips or non-events, not day slips
Anglo-Saxon Chronicle, Winchester115 / 5none664 May 11: −10; 795: +12; 802: −37; 807: +22; 827: +12; 1077: +11
William of Malmesbury, Malmesbury22 / 2 (1133 "at mid-day", 1140 "at the ninth hour")13 offsets land 2 by orbits, none visiblenone
Roger of Wendover, St Albans1 (+7 year-level)1 / 1 (1230 Nov 22)7 offsets by orbits, 4 visiblenone
Florence of Worcester, Worcester31 / 1 (1270)none1190 Jun 23 (editor's bracket): +11; the 664 copied from Bede, my heading read 646
Henry of Huntingdon3see rerun1135 Aug 10: −29 (the 1133 eclipse under Stephen's year?); the 664 copied from Bede
Theophanes, Constantinople12 entries with month, day, weekday, hour, once the sun's zodiacal degreenot runde Boor's year tables survived the OCR for only 137 of 528 years; the year spacing cannot be recovered from this text; parked

What the first pass says: where a Western writer gives a day, the day lands at the writer's own year in every source, and the misses are month-or-year slips and non-events rather than one-day errors, except Bede's two days. The English-language counts (Bede, the Chronicle, the Irish, Malmesbury, Wendover, Florence) sit on the sky from 538 to 1270 at offset 0 by their own numbering, and their eclipse aliases by orbits (±19, ±27, ±46, +84 years) are invisible from where they stood. No count in the window has a fit at ±297 years.

Still to do in the window: Gregory of Tours and the Chronica Minora (the 500s), al-Battani and Ibn Yunus (timed, Seleucid and Hijra counts), Matthew Paris' days (his dates are feast days, not Roman days: a parser), Holinshed (long-s OCR), Copernicus, Tycho (fetched, Latin), the Royal Society's eclipse reports (1715 fetched), and a Western fit-map column per source.

Why the Western misses are month-sized (2026-09-08, night)

Kieran: "western writers should not be able to year and month slip… a normal human doesnt make those mistakes… then it's recollection reconstruction and not even observation? what is going on here." Each miss was put against every eclipse of its year (register entries P16–P18). The slips are not memory errors; they are re-expressions of a fragile notation by later hands:

  • Kalends for Ides with the numeral kept: ASC 795 "V Kal Apr" (Mar 28), sky Apr 9 = "V Id Apr"; ASC 807 "XVII Kal Aug", sky Aug 7 = "VII Id Aug"; ASC 1077 "III Kal Feb", sky Feb 10 = "IIII Id Feb"; ASC 802 "XIII Kal Ian" (Dec 20), sky Nov 13 = the Ides of November, the day number turned into a Kalends count.
  • Month name slipped, day numerals exact: Fulda 832 "II Non Mai" and "XIII Kal Iun", sky Apr 4 and Apr 18, the pair still 14 days apart as an eclipse pair must be; Huntingdon 1135 "Aug 10", sky Jul 12, the same "IIII Id" with the month moved.
  • A numeral corrupted: Bertin 831 "tertio decimo Kalendas Mai" (Apr 19), sky Apr 30.
  • Editors and translators: Florence 1190 "ninth of July" with the editor's "[23rd of June]" beside it, sky Jul 4, the editor further off than the chronicle; ASC 664 "eleventh of May" in Ingram's rendering, sky May 1, which Ulster gives exactly as "the Kalends of May at the ninth hour".

Where the entry carries an hour or a zodiacal position, it lands to the day: Ulster 664 (ninth hour), the Frankish 787 (first to fifth hour), 807 (third hour of the night, sun in the fifth degree of Virgo, moon in the fifth of Pisces), 820, 840 (before the ninth hour), Malmesbury 1133 (mid-day) and 1140 (ninth hour). Where it is a bare date line, the year is right (the year-level teeth land) and the day has been re-expressed once too often. So: observation, transmitted through a notation that slips by fixed amounts, then through editors who sometimes "corrected" it wrongly. The register keeps each slip with its kind, and the comb keeps counting it as a miss.

The Western case on its own: two fingerprints and a ladder (2026-09-08, late night)

Kieran: "we're not going to learn anything from persian calendaring… almost none of this matters if we can actually account for like 0-1500 western… we havent gathered any evidence that gives me confidence that the western mapping to other calendars happened at some later date after potentially literally just inventing 1k years. suspend disbelief. rotate like i rotate. we can not trust information. we can attempt to build belief probability based on information patterns."

Landing on the sky is not enough: anyone with eclipse tables after about 1550 could write a "chronicle" whose eclipses land. What separates an observation made in that year from a computation made later, using Western material only, is two patterns in the records themselves.

The slip fingerprint (P16): a computed fake lands exactly; ours slip by Kalends-for-Ides amounts with the numeral kept, by a month name with the day numerals intact, by a dropped X. That is what copying does and computing never does.

The spin fingerprint (derived/spin_fingerprint_west.json): the Earth's rotation has slowed, so an eclipse in the year 700 reached its peak about 1.2 hours earlier in local time than uniform time would place it. This was unknown before the 1690s and unmeasured before the 1900s. Of the eleven Western records that state an hour, eight sit closer to the real slowed sky than to a uniform-time computation; of the nine old enough for the difference to matter, seven to two, and the two are a span ("from the first hour to the fifth") and a "before the ninth hour" where the midpoint is my choice. Ulster's "ninth hour" in 664 is the ninth hour of the slowed sky; a sixteenth-century fabricator would have written the eleventh.

The ladder. Each of these writers has an own-time eclipse, with an hour, that lands: Bede at 733 (our 1293), the Ulster annalist at 664 (our 1362), the Frankish annalists at 787, 807, 820, 840 (our 1239–1186), the Chronicle's at 800 and 806 (our 1226–1220), Malmesbury at 1133 and 1140 (our 893–886), Wendover at 1230 (our 796), Florence's continuator at 1270 (our 756); and each writer's count runs continuously between them. A person cannot have an own-time eclipse in a year that did not elapse. So from our 1362 to our 756 the Western record is a chain of witnesses each pinned to a physical year by a sky they could not have computed, overlapping in lifetimes, with the same count running through. No thousand invented years fit inside it.

What is not yet shown, Western-only. Our 756 to 0. The bridge is fetched tonight and unread: Regiomontanus and Walther's observation log (Nuremberg, 1475–1504, printed 1544), Copernicus' own dated observations (De revolutionibus, 1543), Tycho (1563–1601), the Royal Society's eclipse letters (1665 on), Flamsteed's Historia Coelestis (1725). Each is a first-hand observer with hours; together they should carry the ladder from Florence's 1270 to today. Beyond our 1488, before 538, the West is the Chronica Minora and Gregory, also unread. And one thing this method cannot do: date the parchment. We hold prints; the manuscripts as objects are a claim we have not examined.

Belief, as a number. For "no thousand years were invented between our 1362 and 756": the ladder, the slip fingerprint and the spin fingerprint each point the same way and none points the other, and a fabrication would have to be post-1690 (to know the spin), deliberately sloppy (to fake the slips), and consistent across Irish, English and Frankish hands who did not share texts. I would put the belief above 0.99 and not higher only because the objects have not been examined. For our 756 to 0 on Western evidence alone: not yet measured; the Chinese spine says the years elapsed, which is outside the rule Kieran set for this question.

Continuity, not bursts: the insertion-resistance map (2026-09-09)

Kieran: "trying to find some sort of way to build 'confidence' of 'continuity' instead of small repeatable slideable bursts for western civilization (excluding persia) from now to our 1300 ish."

A burst is a run of records that lands on the sky at its own count and also at some other count; it can be slid. Continuity is the property that no stretch of years can be inserted or removed anywhere without a record noticing. pipeline/continuity.py measures that directly, with today as the anchor (our calendar). For every year y and every cut k in ±1,100 years: if k phantom years had been inserted at y, everything a text places before y really happened k years later than its label, so each such record must land at offset +k instead of 0. The resistance R(y, k) is the number of independent texts holding at least one record that lands at its own count and does not land at +k. Where R is 0 the record is a burst there. Three layers (orbits; visible from the writer's place; with the stated hour), two populations (every text; own-time texts only, since copies of Bede add no independence), two strengths (a text counts if one record fails; or only if it loses half its landings). Beams are people: an own-time observer's span, and a later text citing an earlier dated event in its own count where that event lands. Cycle-free teeth (oppositions, occultations, equinoxes, planet positions) are scanned over every offset like the eclipses.

pipeline/west_registry.py gathers every Western day-tooth into derived/west_records.json: the chronicle files already in derived/ with a fuller Roman-day and feast-day parser (editor's brackets kept apart; Paris's year begins at Christmas, so his 1256 heading holds 30 December 1255; the Florence continuation's begins at Lady Day, so its 7 March 1280 and 15 February 1290 are 1281 and 1291 by January reckoning: one convention chosen per text, never per record), Holinshed's Scottish volume (the "black hour", 17 June 1433 "at three of the clocke": the sky's 15.0), the bridge in derived/bridge_records.json read from the 1544 and 1543 prints and Tycho's Progymnasmata (verbatim passages with OCR line numbers; readings of damaged numerals flagged), and the present (1999, 2015, 2024, our own time). Outputs: derived/continuity_west.{json,txt}; the page derived/continuity.html (pipeline/continuity_view.py) is the artifact https://claude.ai/code/artifact/e7cdf033-6e8c-492c-be09-39ca4edbd7d0.

The bridge, at its own count (16 texts, 117 day-teeth, 79 with an hour, 21 cycle-free):

text, place, yearsteethlands: day / visible / hourwhat the sky says
Regiomontanus (with Peurbach): Melk, Vienna, Rome, Viterbo, Padua, Nuremberg, 1457–147199 / 9 / 4 of 8 at ±0.5 htotality at Melk 3 Sep 1457 begins 22.5 vs his 22.2 (the year's digits are lost in the OCR; the day and hour fix it); the Moon rising eclipsed at Rome 17 Dec 1461, end 17.4 vs 17.6; Viterbo 21 Nov 1462 solar end 13.1 vs 13.3; Padua 21/22 Apr 1464 mid 0.8 vs 1.0. Misses: 3 Jul 1460 +0.8 h (a tables time), 27 Dec 1460 1.2 h, 22 Jun 1461 3.5 h, 11 Jun 1462 0.7 h
Walther, Nuremberg, 1478–15041211 / 10 / 9 of 118 Feb 1487 by his clock: mid 3.8 vs 3.8; 29 Jul 1478 start 12.7 vs 13.0; 16 Mar 1485 start 15.4 vs 15.3; 29 Jul 1497 end 15.6 vs 15.4; 1 Mar 1504 end 2.9 vs 3.1. The Moon covering Saturn (12 Jan 1482, 0.2°), Mars (28 Nov 1484, 0.1°), Regulus (21 Oct 1486, 0.1°). Miss: "15 Feb 1487, the Moon touching the Pleiades": the sky has the Moon 164° away that night (it touched them on 1 and 28 February); counted
Copernicus: Bologna, Rome, Cracow, Frauenburg, 1497–15292121 / 21 / 21five lunar eclipses to 0.4 h (Rome 6 Nov 1500 1.8 vs 2.0; 2 Jun 1509 23.8 vs 23.6; 6/7 Oct 1511 0.2 vs 0.6; 5/6 Sep 1522 1.2 vs 1.3; 25/26 Aug 1523 4.2 vs 4.4); Aldebaran behind the dark limb at Bologna 9 Mar 1497 (0.29°); Venus behind the Moon at Frauenburg 12 Mar 1529 (0.17°, and no other offset in 2,200 years); nine oppositions of Mars, Saturn, Jupiter, eight with his stated sidereal longitudes to 1.4°; equinoxes 14 Sep 1515 and 11 Mar 1516 to 2.6 h
Tycho, Hven, 1588 (+ Walther 1488 as he cites it)44 / 4 / 4equinoxes 9 Mar 1588 20h43m from noon (3.3 h), 12 Sep 1588 15h15m (2.8 h); Walther's 1488 equinoxes as Tycho reduces them, 4.4 and 3.7 h; this book has no eclipse list

The three Mercury positions Copernicus borrows from Nuremberg (Walther 9 Sep 1491; Schöner 9 Jan and 18 Mar 1504) missed by 26.0°, 26.0° and 25.8° when read in Copernicus' own frame, which is the longitude of the first star of Aries in 1500: the Nuremberg positions are tropical (given in signs), his own are sidereal. In the tropical frame all three land within 0.4°. So the joints hold: Copernicus → Walther 1491, Copernicus → Schöner 1504, Tycho → Walther 1488, each a beam.

What a clocked hour does to a burst. At ±0.5 h, single lunar eclipses in the bridge have no alias at all within ±1,100 years: Regiomontanus 1457, Copernicus 1500 and 1522, Walther 1478 and 1492 (the list is in continuity_west.json, n_hour_aliases). The eclipse cycle that repeats a calendar date (±521, ±1,042 years: every chronicle text refits there by dates and visibility) does not repeat the hour to the half-hour. Oppositions refit at multiples of 59 (Saturn) and 83 (Jupiter) years, the equinoxes at 4-year steps within about ±120 years (the Julian date of the equinox drifts 0.78 days a century), the Venus occultation nowhere.

The map. Own-time resistance to the easiest cut (any k from 1 to 1,100), hour layer: 0 at 726–787, 1 from the Frankish annals (787), 2 by 900, 3 by 1226, 4 by 1301, 5 by 1476, 7 by 1501, 8 by 1601, 9 at today. Every text: 3 at the window's start, 5 by 801, 9 by 1301, 14 by 1501, 15 at today. No year from 787 to today is free at any size for own-time texts; no year at all is free for all texts. The one stretch where own-time resistance is 0 is 726–787: before it lie only Ulster's 664 (ninth hour) and Jarrow's 733 (third hour), the copies of Bede in Florence, Huntingdon and the Chronicle, and the Irish year-level entries. That is the phantom-time span itself, and the map says exactly what it rests on: two hours that fit the slowed sky, not a chain. What would raise it is before 787 and unread: Gregory of Tours, the Chronica Minora, Paul the Deacon, the Byzantine chronicles of the 500s–700s.

The slip spectrum. Of the 117 teeth, 36 land exactly and 14 at −1 day (the night that straddles midnight; the Roman inclusive count), 6 at +1. Then a cluster: +10, +11, +11, +11, +11, +11, +12, +12 (Fulda 831, the Chronicle 795, 827, 1077, the Florence continuation 1190, 1275, 1280, 1287), seven of the eight lunar. Eleven days is one epact, the amount a lunar table for the wrong year misplaces a full moon. A day copied from a computus, not from the sky; register entry P19. Further out: ±32 (the Fulda pair of 832, both slipped together), −12, +14, +18, +21, +22, −27, −29, −31, −37, ±42, and 34 with nothing within 45 days (mostly feast-day and year-level entries that never had a day).

New register entries. P19 the epact slip (above). P20 the frame slip: a longitude quoted from another observer in the other zero point, 26° in 1500; both Copernicus and the modern reader fall into it. P21 numerals read by the sky and flagged as such: Regiomontanus' "anno domini 14.." (1457), Walther's "Ii. Ianuarii" 1482 (12, not 11: 11.7° vs 0.2°), Copernicus' "Marj" for Maii (a March date gives no opposition), his Mars longitude "cxxiii" where the sky says a dropped X (not used). P22 the year-boundary convention as a per-text parameter (Paris Christmas, the Florence continuation Lady Day), chosen once by the text's landings, never per record.

The Royal Society letters, 1666–1750 (33 texts, 49 records, read from the Philosophical Transactions scans; each observer is its own text). Forty-two of forty-three eclipse phases with a clock time land within 0.2 h of the sky, most within 0.0: Halley at Chester 19 Oct 1697 (18.1 vs 18.1) and before the Society 22 Apr 1715 (totality 9.15 vs 9.15); Flamsteed 19 Aug 1681 (1.8 vs 1.8); Hevelius at Danzig 1670, 1675, 1676 (all 0.0); Wurzelbaur at Nuremberg and Jacobs at Lisbon on the same night, 30 Nov 1685 old style (21.3 vs 21.4; 21.1 vs 21.1); Willughby in London and Payen in Paris on 22 Jun 1666 as each prints it; the total eclipse of 12 May 1706 at Zurich, Marseille and Geneva; the 1715 totality at Wanstead, Upminster, Cambridge, Oxford, Darrington; Boston 1722, Rome 1724, Bristol 1725, Carrickfergus 1729, Wittenberg 1735, Jamaica 1743, London 1748–1750, Berlin's annulus of 25 Jul 1748 (11.8 vs 11.9). The miss: Flamsteed's first contact of 21/22 Dec 1675, 0.8 h. The Moon covering Jupiter on 31 March 1686 old style, timed at Greenwich, Paris, Avignon and Nuremberg to 0.2–0.3° each; Hevelius' three occultations of Saturn: 1 Jun 1671 and 3 Aug 1661 land (0.2°), his "29 Jun 1630, 11 pm, near Hven" does not in either style (the Moon 102° or 128° away: a numeral is wrong; counted). Where a paper does not say old or new style, both are tested and the choice written down: every English, Irish and colonial paper lands under the Julian calendar and none under the Gregorian; the Paris and Avignon papers headed "st. v." land as old-style dates; Hevelius mixes the styles within one letter (1661 and 1671 new, 1630 old). Halley's 1715 paper reaches back by name to "the 20th of March, Anno Christi 1140", Malmesbury's ninth-hour eclipse, which is total at London on the sky: a joint of 575 years in one count.

With these in, the map's own-time hour resistance runs 0 at 726–787, 1 from 787, 3 by 1226, 4 by 1301, 5 by 1476, 7 by 1501, 8 by 1601, 10 by 1676, 20 by 1701, 31 by 1726, 39 by 1751, 40 at today; every text: 3 → 48. Own-time texts with a landing within ±50 years: 2–3 across the Middle Ages, 14 at 1651, 33 at 1701, 20 at 1751, and 0 from 1776 to 1975, where no text has been fetched (the era of the continuous institutions, Greenwich and the Transactions themselves; a stated gap, not a doubt).

Belief, as a number, Western evidence only, our 1300 to now. Every cut from 1 to 1,100 years at every year from 787 to today is resisted by at least one own-time text with its hour and by four texts or more in all; from 1226 by three own-time texts, from 1457 by four with cycle-free teeth, from 1497 by a chain of astronomers each citing the last with dates that land (Regiomontanus to Walther to Copernicus and Tycho), and from 1666 by dozens of clocked observers in six countries who agree with the sky and each other to the minute. For "no thousand years were invented between our 1300 and today": above 0.99 from 787 onward, on the same terms as before (prints, not manuscripts). For 726–787 the map gives 1–2 own-time texts, and the belief rests on the spin fingerprint of Ulster's ninth hour and Jarrow's third hour, which a later computer could not have written. Flamsteed's Historia Coelestis (1725) is in for what its scrambled tables still yield: Gascoigne's lunar eclipse of 10 December 1638 (the clock immersion 1.3 h off the sky, counted) and solar eclipse of 22 May 1639 near Leeds, Crabtree's of 4 April 1642, Towneley's Mercury transit of 28 October 1677 (egress 14:54; Mercury 0.07° from the Sun's centre within the window), Flamsteed's occultation of Aldebaran on 3/4 September 1680 (0.16°), the Moon rising in eclipse on 25 March 1689 (emersion 19.4 vs his 19.5) and the solar eclipse of 3 September 1689 (first contact 15.49 corrected; the sky 15.5). His register names its own day convention, "Maij 31, vel juxta vulgi computum, Junij 1" for the eclipse of 1676; the 1679 lunar eclipse has lost its date label in the OCR, and the reader's bracketed 19 October is the new-style date of the Paris column beside it, ten days from the sky's 9th old style (P23; counted as a miss as recorded). The catalogue's epoch, "ad annum Christi completum 1689", is legible; its numbers are not. Gascoigne to Flamsteed now joins 1638 to 1689 with own-time spans, and the Royal Society carries on to 1750. Still empty: 1776–1975.

The uncollapsed count (2026-09-09, later)

Kieran: "what we're counting is not year right. we're counting how many year spans could each fit in. you keep collapsing the problem space." The tables above report landings at each text's own count, which assumes the count. pipeline/landscape.py (→ derived/landscape_west.{json,txt}) starts nowhere: each text is a rigid comb of its own records, slid over every offset in ±1,100 years; its positions are the offsets where the number of its records landing reaches its maximum. Joints tie two texts to one offset: by citation (Copernicus → Walther and Schöner, Tycho → Walther, Halley → Malmesbury) and by the same event under the same year label (38 pairs: Bede and Ulster's 664, the Chronicle's and Florence's 538 and 540 with Bede, the 1715 network under Halley, Nuremberg and Lisbon on 30 November 1685, the 1684 and 1706 groups). The count is given with and without them.

positions (hour layer)
texts placeable by their own records (best fit ≥ 2 landing), after joints17 components
… with exactly one admissible position in ±1,100 years, and it is their own count14
… with more: Gascoigne (7: −1023, −521, −502, −19, 0, +521, +1042); the Florence continuation (4: 0, +502, +567, +1088); London and Paris 1666 (2: 0, +521)3
single-record texts (one eclipse with an hour fits 1–5 places; unplaceable by the sky alone)14
admissible histories, product over unjoined components: placeable texts / single-record texts10^1.7 / 10^3.7
the same without same-event joints (citations only)10^1.4 / 10^6.8 (19 and 29 components)
the same at the visible layer, no hours10^19.8 in all; at the day layer 10^31.8

What the sky alone does and does not fix. Each of the following is pinned to one position by its own records: Bede, the Chronicle, the Frankish annals, Malmesbury, Wendover, Regiomontanus, Walther with Copernicus and Tycho (35 records, one position), Hevelius, Flamsteed, the Paris and Nuremberg groups of 1684–1686, the 1706 and 1715 networks, Bevis, the present. Between consecutive placeable witnesses the admissible gap is the received one alone, except where the Florence continuation (four gaps) and Gascoigne (seven) sit, and between London and Paris in 1666 (three: −521, 0, +521).

The Irish annals. By their own teeth the Iona chronicle fits best 521 years earlier than its labels: eight records land at −521 against seven at 0 (the Four Masters' "3 May" copy lands there where at 0 it misses by two days), and Ulster's "ninth hour" reads 8.5 at AD 143 against 9.7 at

  1. Alone, the sky cannot tell 664 from 143 for that text. What holds it at 664 is that Bede,

pinned to one position by his own comb, gives the same year number to the same eclipse; with that joint the five earliest texts form one component of seventeen records at one position. This is the kind of statement the collapsed tables hid: not "7 of 11 land", but "one position, and it is not the received one, until another text is brought in".

The 521-year cycle is the shape of nearly every residual freedom (±502, ±521, ±1042, ±1023, ±1061): a calendar-date eclipse cycle that repeats the day and roughly the hour. It is broken by clocked hours (the astronomers), by cycle-free teeth (occultations, oppositions, the Venus occultation of 1529 with one position in 2,200 years), and by joints; it is not broken by a chronicle's day-teeth alone, however many. That is the honest limit of the chronicle stretch: 538–1290 is one rigid component only because its texts share events with each other and with Bede.

The 521-year cycle, and the Irish annals inside it (2026-09-09, night)

Kieran: "i think you undersold the irish annals being 521 years earlier. this is literally the kind of thing this project exists to attempt to understand." And: "weird how there's a plusminus 521 and a plusminus 1042".

The cycle. 521 Julian years with 130 leap days is 190,295 days = 6,443.996 synodic months = 6,992.998 draconic months = 27,185 weeks exactly. A record dated by Julian day carries, 521 years away, the same calendar date, the same lunar age (to a tenth of a day), the same eclipse geometry (same node), and the same weekday. Only the anomalistic month fails (6,906.12), so the eclipse's magnitude and type change, and the residual 0.13 day plus the change in the Earth's spin move the hour by one to three hours. 1,042 is the cycle taken twice. The coincidence is the Julian year's: under the Gregorian year 521 years is 190,293.3 days, neither whole weeks nor whole lunations, and the alias is gone, which is why the Gregorian-dated astronomers of 1684–1750 show one position each while the Julian-dated London and Paris papers of 1666 show two (0 and +521). Every chronicle, Julian-dated, refits by its days at ±521 and ±1042; that is the shape of nearly every residual freedom in landscape_west.txt. It is not a hypothesis about history; it is a property of the calendar, and it is exactly the property a later hand moving a body of records would be able to use, and an eclipse match by date alone would never detect. pipeline/irish_521.py → derived/irish_521.{json,txt}.

What in the Irish annals breaks it. Kieran's rule, stated here because I broke it in the first draft of this section: a weekday, a year number, a day of the year, a moon's age are not facts. They are what the count tells the man in the box; he can check them against each other and never against the world. Only a sky pattern is a fact. So everything the annalists used to check a year survives the shift and could not have been evidence anyway: the day, the moon's age, the weekday. What can be evidence is the physics of the particular eclipse, and there is little of it:

toothat 0at −521at +521
U664 "darkness on the Kalends of May at the ninth hour"obscuration 1.00 at Armagh, hour 9.70.89, hour 8.50.95, hour 7.3
U885 "a solar eclipse, and stars were seen"0.980.890.84
U865 "a solar eclipse on the Kalends of January, and a lunar eclipse in the same month"1.00, and yes0.81, and no0.93, and yes
U921 "at the first hour of night"hour 1.9hour 1.7hour 10.6
U1023 lunar, then a solar eclipse a fortnight afteryesyesyes
year-level and descriptive entries (17) fitting1188
the Four Masters' "3 May" (a copy of Bede's day, two days off)misseslandsmisses

So the annals' own count is held by three physical teeth: "darkness", "stars seen", and the same-month pair of 865. The hours do not tell 664 from 143, and the one hour that leans, the ninth hour of 664, leans the other way (8.5 there against 9.7 here). The stated weekdays and moons' ages are labels and count for nothing either way; what they show is the hand (below). The 521-year position gains exactly one tooth, the 1630s copy with a two-day slip. That is the whole margin: three magnitudes against one copyist's slip, with the hour against. It is thin, and it is what the chronicle stretch rests on wherever no astronomer stands beside it.

What the count says about itself: the Kalends comb. The Annals of Ulster open 295 years with the weekday and the moon's age on 1 January. These are labels, so they are evidence of nothing about the years; they are evidence about the hand. The moon's age is within a day of the true moon in about half the years at every sky-cycle offset alike (149 at 0, 158 at −521, 164 at −1042, 134 at +521): a computus moon. The weekday agrees with the sky's Julian weekday at the annals' own labels in 5 years of 295, far below chance; at label −1 in 217; at label +520 in 283 (96%), the difference being the years whose 521-year span holds 131 leap days. So the ferial column is a correctly computed Julian weekday sequence attached to year labels one year off, with the leap day placed one year differently from the sky's in one year of four, while the eclipse entries of the same text land at their labels. Two hands in one text, one observing and one computing, riding the same numbers. P24 in the register.

Review of every pin under the lens (2026-09-09, night; running)

Kieran: "primitive fact. you cannot use weekdays, years, days of the year etc. as facts. if you live in box and someone tells you its thursday, then you think tomorrow is friday. fits is eclipse or other astrological patterns." And: "the intended goal is to find sequences of first hand recorded celestial events and figure out where they can fit in the physics sequence."

Every pin made in this topic, re-read with that rule. A pin may rest on a sky pattern (an eclipse and its visibility, size and hour at a place; an occultation, opposition, transit, equinox, a planet's or star's measured place) or on testimony (a year number, a day-name, a weekday, a moon's age, an own-time claim, one text's citation of another's date, two texts sharing a label). Testimony is what gets slid; it never scores. pipeline/pins_review.py → derived/pins_review.{json,txt}.

The Lu eclipses (春秋). The comb's spacing is the annals' own day-names and reign-years: labels, used only as the rigid spacing of the comb, and the sixty-day phase was searched as a free parameter from the start. What placed the comb was visibility at Qufu (14 of 15 at one position against 1–3 elsewhere) and the two solstices, which are the Sun's position, not a date. Sound under the lens; the "phase 49 = the modern convention" remark is a statement about labels and stays a remark.

Ptolemy. His hours (physical), his own planets against the computed sky (physical), the seventeen declinations (physical: precession), the seven occultations (physical). His Nabonassar years are labels and were slid. Sound.

The dynastic spine. Each treatise's spacing is its era lengths (labels, the comb); the phase was free; the fit was visibility at the capitals. Sound as a comb; the joins between treatises were made by the era table, which is testimony, and the write-up said so.

The Western chain, this session. Two collapses, both corrected in the same night: reporting landings at the received count as if the count were a fact (fixed by landscape.py: positions per text, gaps between witnesses, admissible histories), and counting a stated weekday among the teeth that hold the Irish annals (fixed: three magnitudes and one eclipse pair hold them, the hour leans away, the weekday is a label). Two further corrections followed from the review below: joints by a shared year label and citations of dates are testimony and no longer merge texts (only two texts agreeing on an eclipse's hour or totality do), and the size words the texts use ("darkness", "stars seen", "the colour of blood", "part of the sun") are now scored as teeth, with year-level entries that carry such words admitted as teeth over their whole labelled year.

The night's grab, and where every first-hand sequence can sit (2026-09-10, morning)

Read tonight, by reader agents on the OCR with verbatim quotes and line numbers (extracts in the session scratchpad; the registry keeps the passages): Dio (nine volumes) and Pliny II; Mommsen's Chronica minora (Hydatius, Marcellinus, Victor, John of Biclar, Marius of Avenches, Isidore and the chronicle of 754); Gregory of Tours in Brehaut's abridgment and then Dalton's complete translation, fetched for the lost prodigy chapters; Paul the Deacon; Theophanes (Greek, with the year-tables walked on both sides of every passage); Leo the Deacon, Malalas, the Chronicon Paschale (Dindorf volume II, then volume I and the Whitby translation, fetched); al-Battani in Nallino's Latin; Obsequens; the Alexiad; Gassendi's Mercurius in Sole (1632) and Kepler's Astronomiae pars optica (1604), fetched; the Royal Society papers of 1751–1779, Airy's 1833, thirty-nine Monthly Notices and Proceedings reports of 1836–1907 and the four accounts of 1900, fetched. Yielding no first-hand sky pattern: Paul the Deacon (every notice copied), the Chronicon Paschale for its own decades (one compiled eclipse of 418 and a bright star of 626), Obsequens (a fourth-century digest by consular year), the Alexiad (Anna is never a witness), Marcellinus (two bare "the sun failed" years, weak teeth). The registry stands at 163 texts, 530 records, 436 with an hour; pipeline/load_modern.py loads the eighteenth- and nineteenth-century stations by machine, one text per observer and station, in the time system the paper states (Greenwich mean, local mean, local sidereal), with the day reckoning (civil, or from noon) left to the sky and reported per paper.

The verdicts (derived/pins_review.txt, the final run): of 163 texts, 90 are pinned by their own sky patterns at one position within their label slack (Hydatius among them, his one position a year before his editor's margins, decided by the Halley comet of his June entry); 1 is pinned only through a physical joint (two texts agreeing on an eclipse's hour); 21 are free (several positions, mostly at the ±521 cycle or Tycho's four-year equinox lattice); 51 are single records, which the sky alone cannot place, though Leo the Deacon's single record has exactly one position in ±1,100 years. Of the 98 modern stations, 68 pin by their own contacts, 15 are single contacts, 14 are free at the cycle; 243 clocked phases land within 0.35 h and 4 miss. Testimony pins nothing.

What the new witnesses say, under the lens.

  • Pliny's one eclipse "the day before the calends of May, in the consulship of Vipstanus and Fonteius": Campania between the seventh and eighth hour, the sky's 7.5; Armenia between the eleventh and twelfth, the sky's 9.8 at Artaxata. Four seasonal hours apart in the text, 2.3 in the sky; the direction is right and the pair lands at ±1 of the consular label and at −65.
  • Dio's own "very distinct eclipse of the sun" with "the comet seen for a considerable period" before Macrinus fell: a 0.74 eclipse at Rome in the labelled year and a Halley perihelion 46 days from the label; six positions in 2,200 years.
  • Hydatius, bishop at Chaves, 447–464: five solar eclipses with days, the sun "reduced to the shape of a five- or six-day moon from the fourth hour to the sixth" (the sky: 4.5, size 0.95 in 447, and the large partials of 458 and 464), two blood moons, and the comet of "XIIII kal. Iulias" that rose at dawn in the east and set after sunset in the west: one position, and it is a year before the margin.
  • al-Battani at Raqqa and Antioch, 882–901: the equinox 0.7 h from his stated hour, four eclipses within 0.7 h, one position.
  • Theophanes' own three (787 "very great, on a Sunday during the liturgy", 812 "from the eighth hour to the eleventh", 813 "at sunrise"): one position within a year of his year-of-the-world tables; the compiled ones (346, 644, 693, 760 with its comet) land under their labels too.
  • Leo the Deacon, a student in Constantinople: "about the winter solstice, the twenty-second of December, at the fourth hour of the day, in a clear sky darkness covered the earth and all the bright stars showed", with no year in the text. Given nine years of slack on either side of the middle of his work's own span, the sky offers exactly one December-22 total eclipse at Constantinople at that hour in ±1,100 years, and it is inside the span, at the received 968, the peak at seasonal 5.0 against his fourth hour.
  • Gassendi at Paris: Mercury on the Sun 7 November 1631, exit at 10:28 by the Sun's altitude, the sky's Mercury 0.04° from the Sun's centre within the window; the Moon covering Mars on 6 February 1632, 0.26°, one position in 2,200 years; the solar eclipse of 10 June 1630 landing at 1.0 h; the Saturn occultation of 11 June 1630 missing by 111° (a numeral is wrong; counted). Kepler at Graz and Prague, 1600–1603: four of four, one position.
  • The modern ladder, 1751–1905: 253 of 262 clocked phases land within 0.35 h of the sky's contact, 86 of them only when the paper's hour is read from noon (the astronomical day, P26); 68 stations pin by their own contacts, 23 are single contacts, the transits of Venus of 1761 and 1769 are teeth of their own kind, and the 1836 annulus at Armagh, Edinburgh, Inch-Bonney and Makerstoun is timed to the minute by four observers who agree with the sky and each other.

What this does to the 521-year alias. Chronicle day-teeth never break it. Hours to the half hour (Regiomontanus, Walther, Copernicus, Kepler, the astronomers after 1666) break it; sizes break it where the text gives them (the Irish annals hold at their count by "darkness", "stars seen" and "the colour of blood", and Malmesbury by "I saw stars around the sun" at the sky's 0.90); occultations, transits and oppositions break it absolutely (the Venus occultation of 1529, the Mars occultation of 1632, the Mercury and Venus transits). Where a text has only dates, it is free at ±521 and ±1,042 and the review says so.

Where the first-hand record is still empty. Before 402 nothing but Pliny and Dio (0–218), and Theophanes' compiled 346; 1290–1433 has only Holinshed's black hour; 1604–1630 nothing between Kepler and Gassendi; 1907–1999 nothing fetched. Those are the stretches where a cut would be resisted only by what stands on either side of it.

A caution on the "admissible histories" number. It is a product over texts, so it grows with every text added even when each new text has two positions; with 172 texts it is astronomically large and says nothing by itself. The per-text count is the statement: how many positions each sequence has, and whether its own count is among them.

back to chronology