From 89bb51defd097f51a7c538d6e7d7403b431e78fc Mon Sep 17 00:00:00 2001 From: Jason Eastman Date: Thu, 17 Sep 2026 15:50:37 -0400 Subject: [PATCH 1/3] DC2018: theta_star TRACKS av -- #304's "protected" claim is wrong too Second correction to the same caveat, and the commit message says so rather than presenting v3 as if it were the first answer. #304 concluded theta_star is "protected" because the light curve pins rho * theta_E independently of the SED. ab194/av_clump landed and refutes it. Two ptde arms on event 194, Rhat 1.00, 78/78 chains: arm av prior av post theta*/truth R/truth D/truth av_true 9.01 +/- 0.3 8.99 0.983 0.403 0.410 av_clump 8.61 +/- 2.41 7.18 0.738 0.392 0.531 theta_star tracks av at 0.0688 dex/mag over those points -- STEEPER than the CSB relation's 0.042, because the colour term moves too. With `star_constrains_rho: true` the SED constrains rho, so av feeds straight into theta_star; "independent of the SED" was never available. TWO THINGS THE PAIR ESTABLISHES THAT NEITHER ARM COULD ALONE: * PRIOR WIDTH IS AS DECISIVE AS THE ANCHOR. Both priors come from the SAME event_info clump columns and differ only in inversion (monochromatic 8.61 vs integrated 9.01) and WIDTH (2.41 vs 0.3). The wide one let the SED pull av down to 7.18 -- the data's own av preference is LOW -- and theta_star fell with it. CONSEQUENCE FOR THE RUNNING SWEEP, which uses av = 9.01 +/- 1.83 precisely so the width carries the C29 systematic honestly: by this slope it should be expected nearer 0.74x than 0.983x on theta_star. That is an honest-width-vs-accuracy tradeoff and it is JDE's call, not something to re-tighten silently while the sweep runs. * R_source IS ~0.4x TRUTH AT BOTH av VALUES (0.403, 0.392). D_source and theta_star move with av; R_source does not. So the source-radius deficit is NOT an extinction problem, and that residual is ours. The docstring now carries the full v1/v2/v3 history, because a caveat that has been wrong twice should announce that to its next reader. v3 states only what these two arms measure and names what is open: av_band (prior 11.65) is still sampling and will confirm the slope or break it. Co-Authored-By: Claude Opus 5 (1M context) --- examples/DC2018/dc18_truth_table.py | 70 ++++++++++++++++------------- 1 file changed, 39 insertions(+), 31 deletions(-) diff --git a/examples/DC2018/dc18_truth_table.py b/examples/DC2018/dc18_truth_table.py index b794a243..14c6346c 100644 --- a/examples/DC2018/dc18_truth_table.py +++ b/examples/DC2018/dc18_truth_table.py @@ -597,23 +597,26 @@ def print_convention_caveat(rows): anyone reading a scoring run, and a caveat that lives somewhere else is a caveat nobody applies. - REWRITTEN 2026-09-17 AFTER THE MEASUREMENT CONTRADICTED THE FIRST VERSION. - That version said theta_star is biased low by 10**(-0.2*grey) -- 0.766x on - event 194 -- straight from the CSB relation. The ab194/av_true arm, the - first run with the colour-anchored prior, measured theta_star at 0.983x of - truth. So the arithmetic was right about the CSB relation and wrong about - where the residual lands: theta_star is PROTECTED, because the light curve - pins rho * theta_E independently of the SED. What actually absorbs the - grey term is teffsed, and behind it the (R_source, D_source) pair. + THIS TEXT HAS BEEN WRONG TWICE. Treat it as provisional and check the + arms before quoting it. + v1 predicted theta_star biased low by 10**(-0.2*grey) = 0.766x from the + CSB relation. ab194/av_true measured 0.983x, so v1 was wrong. + v2 concluded theta_star is "protected" because the light curve pins + rho * theta_E independently of the SED. ab194/av_clump then measured + theta_star at 0.738x with av = 7.18, i.e. theta_star moves strongly + WITH av (0.0688 dex/mag over the two arms), so v2 was wrong too -- + `star_constrains_rho: true` means the SED constrains rho, and av + therefore feeds straight into theta_star. + v3 (this text) states only what two arms measure and names what is still + open. A third arm, av_band (prior 11.65), is still sampling and will + either confirm the slope or break it. """ seen = [r["event"] for r in rows if str(r["event"]) in C29_GREY] if not seen: return print("\n" + "=" * 104) - print( - "CAVEAT: THE SIMULATION'S EXTINCTION CONVENTION IS NOT OURS, AND THE" - ) - print(" RESIDUAL LANDS ON teffsed AND (R_source, D_source).") + print("CAVEAT: theta_star TRACKS av, SO THE av ANCHOR AND ITS WIDTH BOTH") + print(" MATTER -- AND R_source IS WRONG INDEPENDENTLY OF BOTH.") print(" This simulation reddened MONOCHROMATICALLY at each filter's") print( " effective wavelength; we integrate a reddened spectrum through the" @@ -629,31 +632,36 @@ def print_convention_caveat(rows): print(" %-7s %s" % ("event", "grey (mag)")) for ev in sorted({str(e) for e in seen}): print(" %-7s %+10.2f" % (ev, C29_GREY[ev])) - print(" MEASURED ON av_true (event 194, prior av = 9.01 +/- 0.3, ptde,") - print(" Rhat 1.00, ESS 23-25k, 78/78 chains):") - print(" theta_star 0.983x truth <-- NOT biased; the light curve") - print(" pins rho * theta_E") - print(" R_source 0.403x truth pull -5.25") - print(" D_source 0.410x truth pull -5.35") - print(" theta_E 0.774x truth pull -0.66 (within 1 sigma)") - print(" R and D slide ~2.45x IN LOCKSTEP, which is why their ratio --") - print(" theta_star -- survives while each is individually -5 sigma. The") + print(" MEASURED, event 194, two ptde arms (Rhat 1.00, 78/78 chains):") + print( + " arm av prior av post theta*/truth R/truth D/truth" + ) print( - " flux the grey term over-predicts is absorbed by a source made too" + " av_true 9.01 +/- 0.3 8.99 0.983 0.403 0.410" ) print( - " COOL (teffsed 3040 K here), and the distance follows the resulting" + " av_clump 8.61 +/- 2.41 7.18 0.738 0.392 0.531" ) - print(" luminosity inward.") - print(" DO NOT read the -5 sigma R_source/D_source pulls as 'the") - print(" convention explains them': that is not established. What IS") + print(" THREE THINGS FOLLOW, and only these three:") + print(" 1. theta_star TRACKS av at 0.0688 dex/mag over these two points,") + print(" steeper than the CSB relation's 0.042 because the colour term") + print(" moves too. It is NOT independent of the SED.") + print(" 2. PRIOR WIDTH IS AS DECISIVE AS THE ANCHOR. Both priors come") + print(" from the SAME clump columns; they differ in inversion method") + print(" and width. The wide one let the SED pull av down to 7.18 --") + print(" the data's own av preference is LOW -- and theta_star fell") + print(" with it. A sweep running av = 9.01 +/- 1.83 should therefore") + print(" be expected nearer 0.74x than 0.983x on theta_star.") + print(" 3. R_source IS ~0.4x TRUTH AT BOTH av VALUES (0.403, 0.392), so") print( - " established is that the colour-anchored prior moved theta_star from" + " the source-radius deficit is NOT an extinction problem. D and" ) - print(" 0.62x truth (the old arms, av ~ 4.25 from A_W149) to 0.983x, and") - print(" R_source's pull from -13.10 to -5.25. The remainder is OURS.") - print(" None of this applies to real Roman data, where the integrated") - print(" treatment is simply the correct one.") + print(" theta_star move with av; R does not. That residual is OURS.") + print(" What IS attributable to the anchor: theta_star went from 0.62x") + print(" truth in the old arms (av ~ 4.25, A_W149 written into av) to") + print(" 0.983x at the colour-anchored value, and R_source's pull from") + print(" -13.10 to -5.25. None of this applies to real Roman data, where") + print(" the integrated treatment is simply the correct one.") def main(): From 1755e309ee3a21cb6f271f5ae13e2ef49e246be6 Mon Sep 17 00:00:00 2001 From: Jason Eastman Date: Thu, 17 Sep 2026 16:01:59 -0400 Subject: [PATCH 2/3] DC2018: the third arm confirms the slope AND validates the colour anchor to 0.1% av_band landed, so the caveat now rests on three arms that differ ONLY in the av prior (event 194, ptde, Rhat 1.00, 78/78 chains): arm av prior av post theta*/truth R/truth D/truth av_clump 8.61 +/- 2.41 7.18 0.738 0.392 0.531 av_true 9.01 +/- 0.30 8.99 0.983 0.403 0.410 av_band 11.65 +/- 1.40 9.42 1.086 0.425 0.391 THE RESULT WORTH THE WHOLE THREAD: a log-linear fit through those three points crosses theta_star/truth = 1 at av = 9.00. The colour anchor -- the clump's E(Z087-W149) inverted through our own integrated BC grid, computed with no reference to any fit -- is 9.01. Two independent routes, one from the light curve and source physics, one from a reddening measurement, agree to 0.1%. That is the C29 colour-anchor argument confirmed rather than asserted. R_source IS ~0.4x TRUTH AT EVERY av (0.392, 0.403, 0.425 across 2.24 mag), so the source-radius deficit is not an extinction problem on any of the three. D_source and theta_star move with av; R_source does not. That residual is ours and is now the thing to chase. PREDICTION SCORING, since v3 made one before this arm ran: the numeric call (theta_star ~ 1.31) FAILED, because I guessed av would land near 10.8 and it came back 9.42 -- pulled 1.59 sigma below its prior, far harder than av_clump's 0.59. Conditional on the actual av, the slope predicted 1.052 against a measured 1.086, good to 3.1%. So the slope held and the prior-pull extrapolation did not. AND v3's SWEEP FORECAST IS REVISED DOWNWARD IN SEVERITY: it said av = 9.01 +/- 1.83 should give "nearer 0.74x". 0.74 was av_clump's value, from a prior both wider (2.41) and 0.4 mag lower. Bracketing by the three observed pulls gives 0.83-0.94x. The direction stands -- an honest width costs theta_star accuracy -- but the size was overstated. Co-Authored-By: Claude Opus 5 (1M context) --- examples/DC2018/dc18_truth_table.py | 97 ++++++++++++++++++----------- 1 file changed, 61 insertions(+), 36 deletions(-) diff --git a/examples/DC2018/dc18_truth_table.py b/examples/DC2018/dc18_truth_table.py index 14c6346c..3c080942 100644 --- a/examples/DC2018/dc18_truth_table.py +++ b/examples/DC2018/dc18_truth_table.py @@ -597,26 +597,28 @@ def print_convention_caveat(rows): anyone reading a scoring run, and a caveat that lives somewhere else is a caveat nobody applies. - THIS TEXT HAS BEEN WRONG TWICE. Treat it as provisional and check the - arms before quoting it. - v1 predicted theta_star biased low by 10**(-0.2*grey) = 0.766x from the - CSB relation. ab194/av_true measured 0.983x, so v1 was wrong. + THIS TEXT WAS WRONG TWICE BEFORE THE THIRD ARM LANDED. The history is + kept because it is the reason to trust the CURRENT version: it is the one + that stopped predicting and started measuring. + v1 predicted theta_star biased low by 10**(-0.2*grey) = 0.766x, from + the CSB relation. av_true measured 0.983x. Wrong. v2 concluded theta_star is "protected" because the light curve pins - rho * theta_E independently of the SED. ab194/av_clump then measured - theta_star at 0.738x with av = 7.18, i.e. theta_star moves strongly - WITH av (0.0688 dex/mag over the two arms), so v2 was wrong too -- - `star_constrains_rho: true` means the SED constrains rho, and av - therefore feeds straight into theta_star. - v3 (this text) states only what two arms measure and names what is still - open. A third arm, av_band (prior 11.65), is still sampling and will - either confirm the slope or break it. + rho * theta_E independently of the SED. av_clump measured 0.738x at + av = 7.18, i.e. theta_star moves strongly WITH av. Wrong -- + `star_constrains_rho: true` means the SED constrains rho. + v3 stated the two-point slope and said the sweep's wide prior should + give "nearer 0.74x". av_band supplied a third point: the slope + holds, but 0.74 came from av_clump's wider, lower prior and + overstated it (see below). """ seen = [r["event"] for r in rows if str(r["event"]) in C29_GREY] if not seen: return print("\n" + "=" * 104) - print("CAVEAT: theta_star TRACKS av, SO THE av ANCHOR AND ITS WIDTH BOTH") - print(" MATTER -- AND R_source IS WRONG INDEPENDENTLY OF BOTH.") + print( + "CAVEAT: theta_star TRACKS av, AND CROSSES TRUTH AT THE COLOUR ANCHOR." + ) + print(" R_source IS WRONG INDEPENDENTLY OF av.") print(" This simulation reddened MONOCHROMATICALLY at each filter's") print( " effective wavelength; we integrate a reddened spectrum through the" @@ -632,36 +634,59 @@ def print_convention_caveat(rows): print(" %-7s %s" % ("event", "grey (mag)")) for ev in sorted({str(e) for e in seen}): print(" %-7s %+10.2f" % (ev, C29_GREY[ev])) - print(" MEASURED, event 194, two ptde arms (Rhat 1.00, 78/78 chains):") print( - " arm av prior av post theta*/truth R/truth D/truth" + " MEASURED on event 194 -- THREE ptde arms, Rhat 1.00, 78/78 chains," + ) + print(" differing only in the av prior:") + print( + " arm av prior av post theta*/truth R/truth D/truth" + ) + print( + " av_clump 8.61 +/- 2.41 7.18 0.738 0.392 0.531" + ) + print( + " av_true 9.01 +/- 0.30 8.99 0.983 0.403 0.410" + ) + print( + " av_band 11.65 +/- 1.40 9.42 1.086 0.425 0.391" + ) + print( + " 1. THE COLOUR ANCHOR IS INDEPENDENTLY CONFIRMED. A log-linear fit" + ) + print(" through those three points crosses theta_star/truth = 1 at") + print(" av = 9.00. The colour anchor -- the clump's E(Z087-W149)") + print(" inverted through our integrated BC grid, computed with no") + print( + " reference to any fit -- is 9.01. Two independent routes, 0.1%." + ) + print(" 2. theta_star TRACKS av at 0.073 dex/mag (3-point fit), steeper") + print(" than the CSB relation's 0.042 because the colour term moves") + print(" too. It is NOT independent of the SED.") + print( + " 3. R_source IS ~0.4x TRUTH AT EVERY av: 0.392, 0.403, 0.425 across" + ) + print( + " 2.24 mag. D_source and theta_star move with av; R_source does" + ) + print(" not. The source-radius deficit is NOT an extinction problem,") + print(" and that residual is OURS.") + print( + " 4. PRIOR WIDTH MATTERS AS MUCH AS THE ANCHOR. Every wide prior is" ) print( - " av_true 9.01 +/- 0.3 8.99 0.983 0.403 0.410" + " pulled DOWN (-0.59 sigma from 8.61, -1.59 from 11.65); only the" ) + print(" tight one held (-0.07 from 9.01). A sweep running") print( - " av_clump 8.61 +/- 2.41 7.18 0.738 0.392 0.531" + " av = 9.01 +/- 1.83 -- wide on purpose, so the width carries this" ) - print(" THREE THINGS FOLLOW, and only these three:") - print(" 1. theta_star TRACKS av at 0.0688 dex/mag over these two points,") - print(" steeper than the CSB relation's 0.042 because the colour term") - print(" moves too. It is NOT independent of the SED.") - print(" 2. PRIOR WIDTH IS AS DECISIVE AS THE ANCHOR. Both priors come") - print(" from the SAME clump columns; they differ in inversion method") - print(" and width. The wide one let the SED pull av down to 7.18 --") - print(" the data's own av preference is LOW -- and theta_star fell") - print(" with it. A sweep running av = 9.01 +/- 1.83 should therefore") - print(" be expected nearer 0.74x than 0.983x on theta_star.") - print(" 3. R_source IS ~0.4x TRUTH AT BOTH av VALUES (0.403, 0.392), so") + print(" systematic honestly -- should therefore be expected around") print( - " the source-radius deficit is NOT an extinction problem. D and" + " 0.83-0.94x on theta_star rather than 0.98x. That is the price" ) - print(" theta_star move with av; R does not. That residual is OURS.") - print(" What IS attributable to the anchor: theta_star went from 0.62x") - print(" truth in the old arms (av ~ 4.25, A_W149 written into av) to") - print(" 0.983x at the colour-anchored value, and R_source's pull from") - print(" -13.10 to -5.25. None of this applies to real Roman data, where") - print(" the integrated treatment is simply the correct one.") + print(" of an honest width, and it is a judgement call, not a defect.") + print(" None of this applies to real Roman data, where the integrated") + print(" treatment is simply the correct one.") def main(): From 5b368e4e600f5f673118b7ef3bf244c615a1fe5c Mon Sep 17 00:00:00 2001 From: Jason Eastman Date: Fri, 18 Sep 2026 10:52:55 -0400 Subject: [PATCH 3/3] DC2018: the sweep's own arm lands at 0.698x, and "0.1%" was a three-point coincidence Third correction to this caveat, from the run that was still sampling when v3 was written: the SWEEP's event-194 arm (av = 9.01 +/- 1.83, the honest width, ptde, Rhat 1.00, 78 chains) finished overnight. It landed av = 7.29 (-0.94 sigma, pulled down like every other wide prior) and theta*/truth = 0.698 -- below v3's own 0.83-0.94x forecast. That is the third forecast this text has gotten wrong, and the docstring now says so in those words. WHAT THE NEW POINT COSTS v3'S HEADLINE CLAIM. v3 fit three arms, found the theta*/truth = 1 crossing at av = 9.007 against an independent colour anchor of 9.006, and called the agreement 0.1%. With every event-194 run that has its own results.csv -- eleven of them, from av = 4.24 to 9.42 -- that precision is not reproducible: fit slope crossing v3's three arms 0.0745 9.01 +/- 0.80 six runs with av > 5 0.0500 9.31 +/- 2.83 all eleven 0.0377 9.71 +/- 1.53 The relation is monotone but NOT log-linear: the five runs near av = 4.25 sit at 0.63 where v3's line predicts 0.44, so a global fit is simply the wrong estimator and its crossing drifts with the fit range. The LOCAL statement is the defensible one -- the two runs that straddle 1 (8.99 -> 9.42) interpolate to 9.06, and three runs at av = 6.8-7.3 scatter 0.037 dex at fixed av, i.e. +/- 0.5 mag of crossing. So: 9.1 +/- 0.5 against an independent 9.01. THE ANCHOR IS STILL CONFIRMED. A prior computed from a reddening measurement with no reference to any fit lands within half a magnitude of where the fits themselves cross truth, and that is the C29 argument. What is retracted is the "two independent routes agree to 0.1%" phrasing, which was three points' worth of luck. fitu0te IS NOT the explanation for the sweep sitting low: at av = 4.26 the u0te runs give 0.634/0.630 against 0.632/0.651 for u_0, under 0.5%, so the sweep is comparable to the arms despite differing in that flag. R_source IS UNCHANGED AND STRONGER: 0.35-0.43x truth at every av over 5.2 mag and eleven runs. That residual is ours. Two arms named in an earlier draft of this table (rpt_async, rpt_sync) are NOT in it: they have no results.csv, so they were never measured and nothing may be quoted from them. Co-Authored-By: Claude Opus 5 (1M context) --- examples/DC2018/dc18_truth_table.py | 138 +++++++++++++--------------- 1 file changed, 65 insertions(+), 73 deletions(-) diff --git a/examples/DC2018/dc18_truth_table.py b/examples/DC2018/dc18_truth_table.py index 3c080942..3753acd5 100644 --- a/examples/DC2018/dc18_truth_table.py +++ b/examples/DC2018/dc18_truth_table.py @@ -597,94 +597,86 @@ def print_convention_caveat(rows): anyone reading a scoring run, and a caveat that lives somewhere else is a caveat nobody applies. - THIS TEXT WAS WRONG TWICE BEFORE THE THIRD ARM LANDED. The history is - kept because it is the reason to trust the CURRENT version: it is the one - that stopped predicting and started measuring. + THIS TEXT HAS BEEN WRONG THREE TIMES. The history is kept because it is + the reason to distrust any version of it that PREDICTS rather than + measures -- every prediction here has failed, and only the measurements + have survived. v1 predicted theta_star biased low by 10**(-0.2*grey) = 0.766x, from the CSB relation. av_true measured 0.983x. Wrong. v2 concluded theta_star is "protected" because the light curve pins rho * theta_E independently of the SED. av_clump measured 0.738x at av = 7.18, i.e. theta_star moves strongly WITH av. Wrong -- `star_constrains_rho: true` means the SED constrains rho. - v3 stated the two-point slope and said the sweep's wide prior should - give "nearer 0.74x". av_band supplied a third point: the slope - holds, but 0.74 came from av_clump's wider, lower prior and - overstated it (see below). + v3 fit three arms, found a crossing of theta*/truth = 1 at av = 9.007 + against an independent colour anchor of 9.006, and called that + agreement "0.1%". It also forecast 0.83-0.94x for the sweep's wide + prior. The sweep measured 0.698x, and eight more runs show the + crossing is not determined to anything like 0.1%. Both wrong. + v4 (this text) reports eleven runs on event 194, every one with its own + `_results.csv`, and states the crossing with the uncertainty the + scatter actually implies. It forecasts nothing. """ seen = [r["event"] for r in rows if str(r["event"]) in C29_GREY] if not seen: return print("\n" + "=" * 104) - print( - "CAVEAT: theta_star TRACKS av, AND CROSSES TRUTH AT THE COLOUR ANCHOR." - ) - print(" R_source IS WRONG INDEPENDENTLY OF av.") + print("CAVEAT: theta_star TRACKS av. THE CROSSING SITS AT THE COLOUR") + print(" ANCHOR, BUT TO ~0.5 MAG, NOT TO 0.1%.") + print(" R_source IS WRONG AT EVERY av.") print(" This simulation reddened MONOCHROMATICALLY at each filter's") - print( - " effective wavelength; we integrate a reddened spectrum through the" - ) - print( - " passband, which is what a measurement is. For a filter as wide as" - ) - print( - " W149 those differ, so no single av reproduces both simulated band" - ) - print(" extinctions in our model. Anchoring the colour leaves a GREY") - print(" residual in both bands:") + print(" effective wavelength; we integrate a reddened spectrum through") + print(" the passband, which is what a measurement is. For a filter as") + print(" wide as W149 those differ, so no single av reproduces both") + print(" simulated band extinctions in our model. Anchoring the colour") + print(" leaves a GREY residual in both bands:") print(" %-7s %s" % ("event", "grey (mag)")) for ev in sorted({str(e) for e in seen}): print(" %-7s %+10.2f" % (ev, C29_GREY[ev])) - print( - " MEASURED on event 194 -- THREE ptde arms, Rhat 1.00, 78/78 chains," - ) - print(" differing only in the av prior:") - print( - " arm av prior av post theta*/truth R/truth D/truth" - ) - print( - " av_clump 8.61 +/- 2.41 7.18 0.738 0.392 0.531" - ) - print( - " av_true 9.01 +/- 0.30 8.99 0.983 0.403 0.410" - ) - print( - " av_band 11.65 +/- 1.40 9.42 1.086 0.425 0.391" - ) - print( - " 1. THE COLOUR ANCHOR IS INDEPENDENTLY CONFIRMED. A log-linear fit" - ) - print(" through those three points crosses theta_star/truth = 1 at") - print(" av = 9.00. The colour anchor -- the clump's E(Z087-W149)") - print(" inverted through our integrated BC grid, computed with no") - print( - " reference to any fit -- is 9.01. Two independent routes, 0.1%." - ) - print(" 2. theta_star TRACKS av at 0.073 dex/mag (3-point fit), steeper") - print(" than the CSB relation's 0.042 because the colour term moves") - print(" too. It is NOT independent of the SED.") - print( - " 3. R_source IS ~0.4x TRUTH AT EVERY av: 0.392, 0.403, 0.425 across" - ) - print( - " 2.24 mag. D_source and theta_star move with av; R_source does" - ) - print(" not. The source-radius deficit is NOT an extinction problem,") - print(" and that residual is OURS.") - print( - " 4. PRIOR WIDTH MATTERS AS MUCH AS THE ANCHOR. Every wide prior is" - ) - print( - " pulled DOWN (-0.59 sigma from 8.61, -1.59 from 11.65); only the" - ) - print(" tight one held (-0.07 from 9.01). A sweep running") - print( - " av = 9.01 +/- 1.83 -- wide on purpose, so the width carries this" - ) - print(" systematic honestly -- should therefore be expected around") - print( - " 0.83-0.94x on theta_star rather than 0.98x. That is the price" - ) - print(" of an honest width, and it is a judgement call, not a defect.") + print(" MEASURED on event 194 -- ELEVEN ptde runs that differ only in") + print(" the av prior (and, where marked, in fitu0te), each scored from") + print(" its own results.csv, Rhat <= 1.01, 78 chains:") + print(" av post theta*/t R/t D/t run (av prior)") + print(" 4.24 0.632 0.352 0.556 sync (2.75 +/- 0.33)") + print(" 4.26 0.634 0.356 0.562 u0te (2.75 +/- 0.33)") + print(" 4.26 0.630 0.350 0.556 u0te_sync") + print(" 4.27 0.651 0.357 0.548 async") + print(" 4.27 0.633 0.356 0.563 tight_sync") + print(" 5.26 0.686 0.348 0.507 av_free, old grid ceiling 6") + print(" 6.80 0.760 0.350 0.461 av_free, ceiling 20") + print(" 7.18 0.733 0.389 0.531 av_clump (8.61 +/- 2.41)") + print(" 7.29 0.698 0.364 0.521 SWEEP (9.01 +/- 1.83, u0te)") + print(" 8.99 0.983 0.403 0.410 av_true (9.01 +/- 0.30)") + print(" 9.42 1.086 0.425 0.391 av_band (11.65 +/- 1.40)") + print(" 1. THE CROSSING IS WHERE THE ANCHOR IS -- TO ~0.5 MAG, WHICH IS") + print(" ALL THE SCATTER ALLOWS. Refit as runs were added it moves:") + print(" 9.01 +/- 0.80 (v3's three arms), 9.31 +/- 2.83 (the six runs") + print(" with av > 5), 9.71 +/- 1.53 (all eleven). The relation is") + print(" monotone but NOT log-linear -- the five runs near av = 4.25") + print(" sit at 0.63, where v3's line predicts 0.44 -- so a global fit") + print(" is the wrong estimator. The local one: the two runs that") + print(" STRADDLE theta*/truth = 1 (8.99 -> 9.42) interpolate to 9.06,") + print(" and three runs at av = 6.8-7.3 scatter 0.037 dex at fixed av,") + print(" i.e. +/- 0.5 mag of crossing. So 9.1 +/- 0.5 against an") + print(" independently computed anchor of 9.01. That confirms the") + print(" anchor. v3's 0.1% was a three-point coincidence.") + print(" 2. theta_star TRACKS av: 0.075 dex/mag locally above av = 7,") + print(" 0.038 dex/mag across the full 4.2-9.4 range, against the CSB") + print(" relation's 0.042. It is NOT independent of the SED, because") + print(" `star_constrains_rho: true` lets the SED constrain rho.") + print(" 3. R_source IS 0.35-0.43x TRUTH AT EVERY av, over 5.2 mag and") + print(" eleven runs. D_source and theta_star move with av; R_source") + print(" does not. The source-radius deficit is NOT an extinction") + print(" problem, and that residual is OURS.") + print(" 4. THE HONEST WIDTH COSTS MORE THAN v3 ESTIMATED. Every wide") + print(" prior is pulled DOWN, never up: -0.94 sigma from") + print(" 9.01 +/- 1.83 (the sweep), -0.59 from 8.61 +/- 2.41, -1.59") + print(" from 11.65 +/- 1.40; only the tight prior held (-0.07 from") + print(" 9.01 +/- 0.30). The data's own av preference is LOW. The") + print(" sweep therefore landed 0.698x, below v3's own 0.83-0.94x") + print(" forecast. That tradeoff is JDE's call, not a defect.") + print(" 5. fitu0te IS NOT WHY THE SWEEP SITS LOW: at av = 4.26 the u0te") + print(" runs give 0.634 and 0.630 against 0.632 and 0.651 for u_0,") + print(" under 0.5%. The sweep is comparable to the arms.") print(" None of this applies to real Roman data, where the integrated") print(" treatment is simply the correct one.")