Repository navigation
Critical-point study: re-review follow-ups, a check against Ziff and Newman's Table 1, and the site's studies list - #33
Conversation
…Newman's Table 1, and the site's studies list From the non-blocking findings of #32's independent re-review: - The lattice at T_c lies on the critical surface and flows to the fixed point; it is not the fixed point itself. - The 1.04 open-edge coefficient is Ziff and Newman's prediction from the same b0 and a1 (they measured 1.02), so that check catches algebra slips only. New: 'node critical/table.mjs' prints the nine-seed R(p_c), p where R = 1/2, and L/2-L crossings beside their Table 1 measurements on this same system (all eleven agree within 1.04 standard errors), and tests/critical.mjs checks p where R = 1/2 at L = 32 against their 0.5918352. - D: the low bound matches the independent 120-seed repeat's shortfall; the high side is said to guard only against gross errors, not to be among the tightest checks. - The study seed's 64/256 crossing is about 2.4 single-seed standard deviations from the shift. - Node 18, 20 and 22; the header's lists of checked and printed numbers. Site (index.html, #studies): the critical-point study is listed, quantum paths links its published study (#25), and "why repetition appears at all" leaves the open questions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XfgH6WcwTueUFZKb6fS2s2
zero-aska
left a comment
There was a problem hiding this comment.
This is an independent review of commit 9fffa2d. It was done by separate agent instances that did not draft the branch: four reviewers (physics; statistics and tests; citations and prose; code and site), plus refuters for each finding (two for findings raised as blocking).
What was verified
Physics
- All 12 values in
PERC.zn(critical/model.js:47-48) match Ziff and Newman 2002, Table 1 (arXiv cond-mat/0203496) for L = 32 to 256. The sample counts, the caption quote and sec. IV's predicted 1.04 against measured 1.02 are also right. - The comparison is like for like: site percolation on an open L x L square, crossing in one direction, with R_L(p) from the binomial convolution. Their p_c-c^(2) (R_L = R_{L/2}) is the model's L/2, L crossing.
- The new renormalisation-group wording is correct: the lattice at T_c lies on the critical surface and flows to the fixed point. The grid interpolation biases p(R = 1/2) by 1e-6 or less.
- A rerun of the 120 repeat seeds reproduces the repeat figures. D's shortfall is 0.0142 ± 0.0007, the nine-seed scatter 0.00256, the high side "about 9", and the largest repeat |z| against Table 1 is 1.83. The study seed sits 2.45 sd out at 64/256. All 13 disjoint sets pass, and 12% of the sets re-centred on p_c pass.
Statistics and tests
npm testpasses all 6 check files on Node 18, 20 and 22, and the output is identical apart from the runtime line.critical/table.mjsis identical across them too. tests/critical.mjs prints 32 PASS lines.- table.mjs makes 11 comparisons, with largest |z| 1.04. The open-edge effects at L = 32 are 4.3 and 4.2 standard errors, and all the others are under 2.
- The new check: the mean is 0.5917752 ± 0.0002138, 0.00006 below Z&N. The tolerance is 3.3 SE. A mean at p_c fails by 1.0 SE. The mean sits 4.5 SE below p_c, and its SE is 16% above the repeat's scatter.
- A mutation test shows the check adds coverage. An off-by-one in spanningGrid's binomial weighting moves p_0.5(32) to 0.59275, and the new check fails while the crossing checks and D still pass.
- The drafter's resampler reproduces 37/3/34 exactly. Independent streams give 26 to 53 failures, which is consistent.
pool.half[last]in table.mjs correctly followshalfbecoming an array, and nothing else reads it.
Citations and prose
- The section numbers, the sources entry and the Crossref metadata for PRE 66, 016129 are correct.
- The stale wording is gone ("Node 18 and 22", "3.1 sigma on each side"). The header lists in critical/README.md match the 32 checks, and
scripts/check_site.pyis clean. - Findings 1-7 and 10 of #32's re-review are applied. Findings 8 and 9 concerned #32's own body. The optional cap is declined, with a reason given.
Code and site
near()'s newlabeldefaults to'exact', so existing callers are unchanged.- The
#studiesedits in index.html are accurate. Both GitHub tree links return 200, and the issue and PR states match (#16 and #20 closed; #17, #18, #19 and #26 open).
Blocking findings
- D's low side is counted from the checked runs' own shortfall. Locations: critical/README.md:139-145 and 186-191, tests/critical.mjs:23-26 and 199-203. The bound and the high side are now justified from the independent repeat (shortfall 0.014). The low side's "3.1" is still counted from these runs' own 0.016, which is the circularity #32's re-review flagged. Counted from the repeat, the low side is (0.024 − 0.0142)/0.0026 = 3.8. That puts D about seventh, behind γ/ν (3.0), Binder 64/128 (3.5), hot energy (3.6), η (3.7), 1/ν (3.7) and Binder 32/64 (3.8). So "one of the three tightest checks" is wrong. The README's own resampling agrees: only 3 of 200,000 sets fail on D, where a side 3.1 sigma from the expected value would give roughly 140. README:190-191 also mixes baselines. Against the repeat's expected value, a cap at 91/48 would allow 5.5 sigma, not "no standard deviations at all".
Fix (text only): count both sides from the repeat (low 3.8, high 8.7). Drop D from the tightest-checks list, which makes the hot energy (3.6) the third member. Either drop the README:190-191 rationale or cap the high side at 91/48. "3.1" can stay if it is labelled as these runs' margin. The reviewer raised this as non-blocking; its refuter upheld it and raised it to blocking.
Non-blocking findings
- The pointer to the open-edge shift test overstates what is tested. Locations: tests/critical.mjs:93-96 and critical/README.md:154-156. Section 7 and the Table 1 comparison never call
edgeShift, so they cannot test whether the shift fits the system. That rests on Z&N's measured 1.02. Fix: reword along those lines. Optionally, add a deterministic check that (PERC.zn.cross − p_c)/edgeShift(L/2, L) is within 10% of 1 for L = 64, 128 and 256 (the ratios are 0.930, 0.965 and 0.975; leave out L = 32), and point the comment at it. Three lenses raised this. - The RG sentence blames the wrong thing for the shifts. Location: critical/README.md:64-65. It blames the L = 16 Binder shift and the γ/ν bias on lattice details that "fade". The leading cause is the L^-7/4 analytic background of χ, which does not fade (about 0.0008 of the +0.0012 γ/ν bias). tests/critical.mjs:119-120 already says this. Fix: attribute those two shifts mainly to the background, and the D shortfall to corrections to scaling.
- "As described below" is not kept for the Binder cumulant. Location: critical/README.md:64-66. No size or source follows. Fix: at about :127-128, add that U(16) sits 0.0007 above its limit (Salas and Sokal's V4(16) = 1.16586(38)). Or drop the pointer for the cumulant.
- The eleven comparisons are not independent. Locations: critical/README.md:196-200, tests/critical.mjs:205-208 and the PR body. R(p_c) and p_0.5 at one size come from the same curve (seed-to-seed correlation −1.00), and each crossing is nearly fixed by the two half-points (R² ≥ 0.99). Fix: say the table carries about four independent comparisons, one per size. Call R(p_c)'s 4.2 the same shift rather than the "next" one.
- The PR body contradicts the diff. It says D's place among the tightest checks is gone, but the diff keeps it. Fix: correct the body. The blocking fix above would make the sentence true.
- The resampling counts are quoted without their noise. Locations: critical/README.md:150-152 and tests/critical.mjs:29-31. 37/3/34 is one resampling and carries about ±6 noise. Fix: add "other draws give 27 to 53" or quote the rate (about 2 in 10,000), and say the resampler is not a repository script.
- Two "exact value" statements are now stale. Locations: tests/critical.mjs:6 and README.md:351. Fix: mention the one check against Z&N's measurement.
- One Table 1 value loses a digit when printed. Location: critical/table.mjs:121. 0.504890 prints as 0.50489. Fix: keep the Table 1 values as strings, or keep per-value decimal counts. Do not apply
toFixed(6)to the whole column, because it would turn 0.50124 into 0.501240. - The footer "Studies" columns were not updated. Locations: index.html:254, 404.html:93 and gravitational-atom/index.html:294. They still list two studies. Fix: add the Quantum paths and The critical point links, or say the footer lists only pages hosted on the site.
- Refuted: "3.9 should be 3.8" (raised by three lenses). The file's stated rule (tests/critical.mjs:14-15) counts sigma from quoted values, so 0.0007/0.00018 = 3.9, and D's "4.0" follows the same rule.
- Refuted: the new check's reference comes from the module under test.
PERC.znis literal Table 1 data that the study code never reads, and any edit that mattered would show in the printed value. - Refuted: Z&N's R(p_c) errors are larger than the last digit. In their usage, "four or five figures" puts the error in the last quoted digit, and the sample counts bound it at 8e-6 or less.
- Refuted: a CORRECTIONS.md entry is needed. #31's follow-up to #30 set the precedent of making review-driven rewording without an entry, and the revised sentences were loose framing, not wrong results.
- Refuted: the index entry should mention percolation. The entry is accurate, and the study's headline and its correlation-length cutoff are shown only for the magnet.
Verdict: do not merge until D's low-side count and the tightest-checks list (critical/README.md:139-145 and 186-191, tests/critical.mjs:23-26 and 199-203) are fixed
Generated by Claude Code
D's low side is counted from the independent 120-seed repeat (3.8), not from the checked runs' own shortfall, so D leaves the tightest-checks list (now gamma/nu 3.0, the 64/128 Binder crossing 3.5, the energy at T = 2.75 3.6); the ranking states which side it counts. The wrong reason for not capping D at 91/48 is replaced. A new deterministic check (no Monte Carlo): Ziff and Newman's measured L/2-L crossings sit above p_c by 0.930, 0.965 and 0.975 times edgeShift at L = 64, 128 and 256, within 10%. The pointers say what each open-edge check tests. Also: the RG paragraph attributes the L = 16 Binder shift and the gamma/nu bias mainly to chi's analytic background and D's shortfall to corrections to scaling; U(16) sits 0.0007 above its limit (Salas and Sokal sec. 4.1, Table 2); the eleven Table 1 comparisons are about four independent ones; the resampling counts carry their noise (100 draws: 22 to 60 failures in 200,000); Table 1 values print with their published digits; the site footers list the two new studies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XfgH6WcwTueUFZKb6fS2s2
zero-aska
left a comment
There was a problem hiding this comment.
Independent re-review of commit 607265a (607265a), after the fixes to the first review. Four reviewers who did not draft the branch checked it: physics; statistics and tests; citations and prose; code and site. A refuter then tested each finding. None of the findings was blocking, so each had one refuter.
What was verified
Physics
- The fix to D's sigma counts is correct. A 120-seed repeat (seeds 401 + 10000k) gives a shortfall of 0.01420 ± 0.00070 and a nine-seed scatter of 0.00256. That puts the low side at 3.8 sd, the high side at 3.1 sd, and the bound 8.7 sd above the expected value. Spot-checked seeds matched bit for bit.
- The list of tightest checks (γ/ν 3.0, Binder 64/128 3.5, energy at T = 2.75 3.6) holds. 120-seed repeats of the ordered and hot Ising runs find nothing tighter.
- All 12 Table 1 values and their published decimals match Ziff and Newman 2002 (arXiv cond-mat/0203496). The comparison is like for like: same lattice, open edges, crossing in one direction, and the same canonical convolution.
- The new deterministic edge-shift check gives ratios of 0.930, 0.965 and 0.975 at L = 64, 128 and 256. Leaving out L = 32 (0.862) is justified by the L^-0.9 correction.
- Caselle et al. 2002 sec. 7.2 and Salas and Sokal's measured U(16) offset both support the RG paragraph's attribution to χ's background.
Statistics and tests
- npm test passes all 6 check files on Node 18, 20 and 22, and the output is identical apart from the runtimes. tests/critical.mjs prints 33 PASS lines. CI passes on all three versions.
- No regression: every check that exists on main prints the same values, tolerances and margins.
- The new p_0.5(32) check has a fixed tolerance of 3.3 SE. It can fail: a mean at p_c misses by 1.0 SE. It also fails on NaN.
- The 120-seed means agree with Table 1 (largest |z| 1.83). The eleven comparisons amount to about four independent ones (correlation about −1.00, R² ≥ 0.99). The resampled failure rate reproduces: about 2 in 10,000, nearly all on p_0.5(32). So does the power claim: about one set in eight passes when re-centred on p_c.
Citations and prose
- The attributions and section references for Ziff and Newman, Salas and Sokal, and Caselle et al. check out against the arXiv LaTeX. The Crossref metadata matches.
- Every fix for the first review's non-blocking findings is present, and no stale wording remains.
- Line wrapping, anchors and the new links are fine. scripts/check_site.py runs clean.
Code and site
- studyPooled's new per-L arrays, the default for near()'s new
labelargument, and table.mjs's printing of published digits are all correct. - A mutation test shows that the new deterministic check adds real coverage. It is the only check that catches a wrong PERC.pc.
- index.html #studies and the footers on index.html, 404.html and gravitational-atom/index.html are correct. Their links are absolute, so they work from every page.
Blocking findings
None.
Non-blocking findings
- README.md:351-352, tests/critical.mjs:1-7 and :196-197 (also critical/README.md:9). The new wording counts Newman and Ziff's p_c = 0.59274621(13) as an exact result. It is a Monte Carlo measurement, yet the p_c checks print "exact 0.59275". No number changes, because the error is only 1.3e-7. Fix: say "exact or high-precision results", list the threshold as "Newman and Ziff's measured threshold, 0.59274621(13), whose error is negligible here", and pass a label such as 'reference' to the two p_c near() calls.
- critical/README.md:334. The new Salas and Sokal pinpoint, "sec. 4.1 and Table 2", leaves out two places the study relies on. Sec. 4.3 and Table 5 hold the free-exponent fit quoted at tests/critical.mjs:139 (Δ = 2.01 ± 0.22, B4 = −0.48 ± 0.23). Sec. 1 holds the Binder-cumulant definition that critical/README.md:317 credits to them. Fix: "secs. 1, 4.1 and 4.3 and Tables 2 and 5".
- tests/critical.mjs:71. The section 1 header says these checks test the code against the published formulas. The new check at :107-117 does something else: it tests the open-edge formula against Ziff and Newman's measured crossings. Fix: reword the header, e.g. "No Monte Carlo: the closed forms against the published formulas, the open-edge shift also against Ziff & Newman's measured crossings (Table 1), and the random-number generator."
Five findings were refuted:
- PR body, "spanning top to bottom": refuted. Ziff and Newman's main method tracked both directions, and on a square, crossing in one direction is the same observable whichever direction is chosen.
- critical/README.md:159-160, "22 to 60 failures": refuted. The drafter's resampler reproduces the range exactly. The range is a tail outcome of a correct resampler, not a wrong number.
- tests/critical.mjs:229-235, printing "measured 0.59184": refuted. Every near() line rounds the reference to the same decimals, the full value appears in the check's name, and pass/fail uses full precision.
- tests/critical.mjs:24-26, where p_0.5(32) ranks among the tightest checks: refuted. The ranking follows the stated rule, which counts from the quoted shift. D is counted from the repeat only because its quoted shift is the repeat's shortfall.
- Footer label "The critical point": refuted. Each footer label matches its study's own title, and the critical study's title includes the article.
Verdict: merge
Generated by Claude Code
ahrazzle
left a comment
There was a problem hiding this comment.
The current branch still contains the critical-study snapshot identified by the earlier changes-requested review. The newer trimmed implementation has now merged through the turbulence PR. This branch needs to retain that main version when updating the site list, rather than merging the older study files. The existing six check files pass, which does not resolve the conflicting versions.
The studies list on index.html gains a Turbulence entry beside the other published studies, and "Open questions" drops turbulence's two cutoffs. The footers on index.html, 404.html and gravitational-atom/index.html link it too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XfgH6WcwTueUFZKb6fS2s2
|
@ahrazzle, thanks for the review (5677933393). I checked against git, and #34 did not bring a different
The same overlap question came up in orda-aska's review; my reply is at discussion_r4386101603. If you see a specific line where this branch's Generated by Claude Code |
zero-aska
left a comment
There was a problem hiding this comment.
Independent review of the delta 607265a..e1cd891, which merges main after #34 and adds the Turbulence site entry. It was done by agent instances that did not draft this branch: two reviewers (one for merge integrity and tests, one for site content), with a separate refuter checking each finding. The previous independent re-review covered everything before this delta.
What was verified
- Merge. The first parent of e1cd891 is 5aa7f31, which merges 607265a with main at 8589afe (merge base 9698b22).
git merge-tree --write-tree 607265a 8589afereturns tree f7436cd with no conflicts, and 5aa7f31 has exactly that tree, so the merge commit adds nothing of its own. - README.md. It is the only file both sides changed. #34's turbulence paragraph and this PR's critical-point sentence are both present.
- Files from #34. Everything else #34 brought in is blob-identical to main: CORRECTIONS.md,
.github/workflows/test.yml,turbulence/andtests/turbulence*.mjs. The CORRECTIONS.md reflow ingit diff 607265a e1cd891comes from #34. - Diff against main.
git diff 8589afe e1cd891holds only this PR's own 8 files, andrefs/pull/33/mergehas the same tree as e1cd891. - Site commit. e1cd891 changes only
index.html:238-240and:255,404.html:93andgravitational-atom/index.html:294(5 insertions, 4 deletions):- It adds a Turbulence entry to #studies and a Turbulence footer link on all three pages.
- It removes "turbulence's two cutoffs" from Open questions, since #19 was closed by #34.
- The footer Studies column is the same on all three pages, in the same order as #studies.
- The new
tree/main/turbulencelink returns 200. scripts/check_site.pyreports "site check clean", tags balance,git diff --checkis clean, and line endings are unchanged.
- Turbulence wording. The new entry matches the root README bullet and
turbulence/README.md. It adds no number or claim that the study does not make; see the non-blocking finding below for what it leaves out. - critical/.
critical/README.md,critical/model.js,critical/table.mjsandtests/critical.mjsare byte-identical between 607265a and e1cd891 (thecritical/tree is de4e822 at both). - The "older snapshot / trimmed critical/" claim in the two changes-requested reviews (orda-aska 5663561498, ahrazzle 5677933393) does not hold.
- Neither #34 (9698b22..8589afe) nor #37 (head 4345024) touches
critical/ortests/critical.mjs. - Every branch and every
refs/pull/*head and merge on origin hascritical/either as main's tree 7a470bc or as this PR's de4e822. Main's tree was last changed in 3afd71c, which is an ancestor of 607265a. - No commit to
critical/is newer than 607265a. - Main's copy is shorter (README 288 lines vs 339, tests 194 vs 240) because it is the version from before this PR. Merging the PR overwrites nothing newer.
- Neither #34 (9698b22..8589afe) nor #37 (head 4345024) touches
- Tests.
node tests/run.mjsat e1cd891 prints "all 8 check file(s) pass" on Node 18.20.8, 20.20.0 and 22.22.0.- The extra CI steps also exit 0 on all three: witness-map table with and without
1e-6 cryo, bh-lensing, turbulence table quick, and turbulence edges quick and 256. - The output of
tests/critical.mjsmatches 607265a's except for the runtime line.
- PR description. Its claims about this delta match git: no conflicts,
critical/unchanged since 607265a, no critical files changed by #34, and 8 check files passing.
Blocking findings
None.
Non-blocking findings
- CI on e1cd891 has not finished (
.github/workflows/test.yml:21).- In run 40635184428, test (20) finished with success at 05:06Z. test (18) and test (22) were still queued at the last check.
- Nothing points to a failure. The PR's test.yml is identical to main's, main's run on 8589afe passed with the same steps, and every step passes locally.
- The wait looks like a runner backlog: PR #43's run is queued as well.
- Merge once test (18) and test (22) are green.
- The Turbulence entry gives viscosity as the only place the range ends (
index.html:238).- The entry copies the first sentence of the root README bullet (README.md:29-30) but leaves out the sentence that qualifies it (README.md:32-35): where the cascade ends depends on the medium. In the solar wind it is the ion scales; in molecular clouds it is the sonic scale.
- The study covers both cases (table at
turbulence/README.md:112-119and the section at line 152). - The sentence is correct for air, for water and for the model the study runs, so it is an incomplete summary rather than wrong content.
- Suggested wording: "...the bursts do not scale exactly, and what ends the range depends on the medium."
Refuted:
- Open questions should also name issue #36 (Orbits, PR #37). Refuted. The line has never listed every open issue (#3 and #40 were never named), and it points readers to the issue list. Issue #38 asks for Orbits to be listed as a published study once #37 merges, not as an open question in this PR.
- The PR should reference #38 so that GitHub links them. Refuted. #38's body already names PR #33, so GitHub already shows a cross-reference on this PR's timeline. A "Refs #38" line would only add the reverse link and is optional.
Verdict: merge
Generated by Claude Code
The snapshot-overwrite finding was incorrect: PR 34 changed no critical-study files. This review is withdrawn.
Critical-point study: wording fixes left over from #33's reviews
This is a follow-up to #32. It applies the non-blocking findings of #32's independent re-review and updates the site's study lists now that #20 and #16 have landed.
Status:
critical/andtests/critical.mjsare byte-identical to 607265a, because Turbulence: where the cascade repeats, where it stops, and what cloud edges measure #34 changed no critical files.critical/onto a newer, trimmed version from Turbulence: where the cascade repeats, where it stops, and what cloud edges measure #34 or Orbits: is a galaxy a big solar system? Where Kepler's law holds, where rotation flattens, and what ends a Kepler region #37.critical/, and no branch or PR ref holds a newercritical/. Main's copy is shorter only because it predates this PR's additions.The study (
critical/,tests/critical.mjs)node critical/table.mjsprints the model's finite-size percolation beside these measurements, which were taken on the same system: an open L × L square, site percolation, crossing in one fixed direction.The site (
index.html,404.html,gravitational-atom/index.html)#studieslists the critical-point study, linking its folder on GitHub (the site has.nojekyll).#studiesentry and a footer link on all three pages, and leaves the open questions. This covers part of Site studies list is stale on main (missing quantum-paths, critical, and later studies) #38.python3 scripts/check_site.pyis clean.Checked
npm testpasses all 8 check files on Node 18, 20 and 22 at e1cd891. At 607265a it passed all 6, with identical output apart from the runtime line.🤖 Generated with Claude Code
https://claude.ai/code/session_01XfgH6WcwTueUFZKb6fS2s2