RERUN_LOG.txt -- re-runs of 9 October 2026 (Python 3.13.5, mpmath 1.3.0, numpy 2.5.2, scipy 1.18.1, sympy 1.14.0; macOS, one laptop;
one process at a time, nice -n 10)

PART 1.  Log of 'sh run_quick.sh', run from an extracted copy of the archive (before this log was added to it).
         Each program is followed by the comparison of its new output with the recorded one.

python: Python 3.13.5
== writing_stage (the exact program of the note)
  check_note.py: exit 0, 34 s
    TOTAL failures: 0      (33 s)
    writing_stage/check_note_output.txt: identical
  make_figures.py: exit 0, 3 s
    writing_stage/make_figures_output.txt: identical
    writing_stage/figures_pgf.tex: identical
    writing_stage/fig_C12.dat: identical
    writing_stage/fig_Q8.dat: identical
    writing_stage/fig_Z16.dat: identical
== original (the programs with which the results were first obtained)
  kn_exact.py: exit 0, 10 s
    original/outputs/kn_exact.txt: identical
  explore1.py: exit 0, 3 s
    original/outputs/explore1.txt: identical
  explore2_slope.py: exit 0, 0 s
    original/outputs/explore2_slope.txt: identical
  limit_p1.py: exit 0, 1 s
    original/outputs/limit_p1.txt: identical
  highprec_check.py: exit 0, 0 s
    original/outputs/highprec_check.txt: identical
  hypercube.py: exit 0, 5 s
    original/outputs/hypercube.txt: identical
  hypercube_bound.py: exit 0, 1 s
    original/outputs/hypercube_bound.txt: identical
  expander_steps.py: exit 0, 1 s
    original/outputs/expander_steps.txt: identical
  families.py: exit 0, 29 s
    original/outputs/families.txt: identical up to running times
== independent_run (the programs of the independent verification run)
  t1_kn_exact.py: exit 0, 1 s
    independent_run/out/t1_kn_exact.txt: identical
  misc_checks.py: exit 0, 2 s
    independent_run/out/misc_checks.txt: identical
  shape_other.py: exit 0, 17 s
    independent_run/out/shape_other.txt: identical
  extras.py: exit 0, 84 s
    independent_run/out/extras.txt: identical
  expander.py 5 7 11 13 17 23 31: exit 0, 4 s
    independent_run/out/expander_small.txt: identical
  expander.py 53: exit 0, 19 s
    independent_run/out/expander_53.txt: identical up to running times
  stress.py exh: exit 0, 7 s
    independent_run/out/stress_exh.txt: identical
  stress.py rnd 101 400: exit 0, 4 s
    independent_run/out/stress_rnd_101.txt: identical
  stress.py rnd 102 400: exit 0, 4 s
    independent_run/out/stress_rnd_102.txt: identical
  stress.py rnd 103 400: exit 0, 4 s
    independent_run/out/stress_rnd_103.txt: identical
  stress.py rnd 104 400: exit 0, 3 s
    independent_run/out/stress_rnd_104.txt: identical
  stress.py rnd 105 400: exit 0, 4 s
    independent_run/out/stress_rnd_105.txt: identical
  main_checks.py 0 12: exit 0, 1 s
    independent_run/out/main_00_12.txt: identical
  main_checks.py 12 24: exit 0, 9 s
    independent_run/out/main_12_24.txt: identical up to running times
  main_checks.py 24 25: exit 0, 35 s
    independent_run/out/main_24_25.txt: identical up to running times
  main_checks.py 25 33: exit 0, 4 s
    independent_run/out/main_25_33.txt: identical
  main_checks.py 33 46: exit 0, 9 s
    independent_run/out/main_33_46.txt: identical up to running times
  hypercube.py: exit 0, 46 s
    independent_run/out/hypercube.txt: identical
== summary: 0 output(s) different or missing, 0 program(s) with a non-zero exit code

PART 2.  The slow program, run separately from a copy of the package:
  independent_run/code/stress_followup.py: exit 0, 686 s
    independent_run/out/stress_followup.txt: identical

PART 3.  Before the archive was built, all programs of original/ and independent_run/ had been run once from a
         working copy, in the same way; running times in seconds:
  original/kn_exact.py | exit 0 | 10 s
  original/explore1.py | exit 0 | 3 s
  original/explore2_slope.py | exit 0 | 0 s
  original/limit_p1.py | exit 0 | 1 s
  original/highprec_check.py | exit 0 | 0 s
  original/hypercube.py | exit 0 | 7 s
  original/hypercube_bound.py | exit 0 | 1 s
  original/expander_steps.py | exit 0 | 0 s
  original/families.py | exit 0 | 28 s
  independent/t1_kn_exact.py | exit 0 | 2 s
  independent/misc_checks.py | exit 0 | 1 s
  independent/shape_other.py | exit 0 | 17 s
  independent/extras.py | exit 0 | 85 s
  independent/expander.py small | exit 0 | 4 s
  independent/expander.py 53 | exit 0 | 19 s
  independent/stress.py exh | exit 0 | 7 s
  independent/main_checks 0 12 | exit 0 | 1 s
  independent/main_checks 12 24 | exit 0 | 9 s
  independent/main_checks 25 33 | exit 0 | 4 s
  independent/main_checks 33 46 | exit 0 | 9 s
  independent/hypercube.py | exit 0 | 46 s
  independent/stress.py rnd 101 400 | exit 0 | 4 s
  independent/stress.py rnd 102 400 | exit 0 | 3 s
  independent/stress.py rnd 103 400 | exit 0 | 4 s
  independent/stress.py rnd 104 400 | exit 0 | 4 s
  independent/stress.py rnd 105 400 | exit 0 | 3 s
  independent/stress_followup.py | exit 0 | 686 s
  independent/main_checks 24 25 | exit 0 | 35 s
  All outputs were identical to the recorded ones, or identical up to the fields which record running times
  (expander_53.txt, main_12_24.txt, main_24_25.txt, main_25_33.txt, main_33_46.txt).

Not produced by a program of the package: independent_run/out/summary_table.md (a table assembled from the files
main_*.txt) and original/outputs/families_stdout.txt (the standard output of families.py with one line 'exit=0').


PART 4.  Second independent verification run (9 October 2026): log of 'sh run_quick.sh', run once more from an
         extracted copy of the archive as it was before that run (the programs and recorded outputs of
         writing_stage/, original/ and independent_run/ are unchanged since then).

python: Python 3.13.5
== writing_stage (the exact program of the note)
  check_note.py: exit 0, 40 s
    TOTAL failures: 0      (40 s)
    writing_stage/check_note_output.txt: identical up to running times
  make_figures.py: exit 0, 4 s
    writing_stage/make_figures_output.txt: identical
    writing_stage/figures_pgf.tex: identical
    writing_stage/fig_C12.dat: identical
    writing_stage/fig_Q8.dat: identical
    writing_stage/fig_Z16.dat: identical
== original (the programs with which the results were first obtained)
  kn_exact.py: exit 0, 12 s
    original/outputs/kn_exact.txt: identical
  explore1.py: exit 0, 3 s
    original/outputs/explore1.txt: identical
  explore2_slope.py: exit 0, 0 s
    original/outputs/explore2_slope.txt: identical
  limit_p1.py: exit 0, 1 s
    original/outputs/limit_p1.txt: identical
  highprec_check.py: exit 0, 1 s
    original/outputs/highprec_check.txt: identical
  hypercube.py: exit 0, 5 s
    original/outputs/hypercube.txt: identical
  hypercube_bound.py: exit 0, 1 s
    original/outputs/hypercube_bound.txt: identical
  expander_steps.py: exit 0, 0 s
    original/outputs/expander_steps.txt: identical
  families.py: exit 0, 30 s
    original/outputs/families.txt: identical up to running times
== independent_run (the programs of the independent verification run)
  t1_kn_exact.py: exit 0, 1 s
    independent_run/out/t1_kn_exact.txt: identical
  misc_checks.py: exit 0, 2 s
    independent_run/out/misc_checks.txt: identical
  shape_other.py: exit 0, 20 s
    independent_run/out/shape_other.txt: identical
  extras.py: exit 0, 102 s
    independent_run/out/extras.txt: identical
  expander.py 5 7 11 13 17 23 31: exit 0, 5 s
    independent_run/out/expander_small.txt: identical up to running times
  expander.py 53: exit 0, 25 s
    independent_run/out/expander_53.txt: identical up to running times
  stress.py exh: exit 0, 9 s
    independent_run/out/stress_exh.txt: identical
  stress.py rnd 101 400: exit 0, 5 s
    independent_run/out/stress_rnd_101.txt: identical
  stress.py rnd 102 400: exit 0, 4 s
    independent_run/out/stress_rnd_102.txt: identical
  stress.py rnd 103 400: exit 0, 5 s
    independent_run/out/stress_rnd_103.txt: identical
  stress.py rnd 104 400: exit 0, 5 s
    independent_run/out/stress_rnd_104.txt: identical
  stress.py rnd 105 400: exit 0, 5 s
    independent_run/out/stress_rnd_105.txt: identical
  main_checks.py 0 12: exit 0, 1 s
    independent_run/out/main_00_12.txt: identical up to running times
  main_checks.py 12 24: exit 0, 11 s
    independent_run/out/main_12_24.txt: identical up to running times
  main_checks.py 24 25: exit 0, 45 s
    independent_run/out/main_24_25.txt: identical up to running times
  main_checks.py 25 33: exit 0, 5 s
    independent_run/out/main_25_33.txt: identical up to running times
  main_checks.py 33 46: exit 0, 12 s
    independent_run/out/main_33_46.txt: identical up to running times
  hypercube.py: exit 0, 51 s
    independent_run/out/hypercube.txt: identical
== summary: 0 output(s) different or missing, 0 program(s) with a non-zero exit code

  The slow program, run separately from the same copy:
  independent_run/code/stress_followup.py: exit 0, 798 s
    independent_run/out/stress_followup.txt: identical


PART 5.  Second independent verification run: log of 'sh run_all.sh' in independent_run_2/, run from an extracted
         copy of the archive with the final programs and recorded outputs (before this part of the log was added;
         only texts of the package were corrected afterwards).

python: Python 3.13.5
  a_target.txt: exit 0, 12 s; identical
  b_complete.txt: exit 0, 21 s; identical
  c_limit.txt: exit 0, 17 s; identical
  d_lower.txt: exit 0, 30 s; identical
  e_expander.txt: exit 0, 6 s; identical
  f_zero.txt: exit 0, 6 s; identical
  g_remarks.txt: exit 0, 3 s; identical
  h_enumeration_owngrid.txt: exit 0, 0 s; identical
  h_enumeration_grid23.txt: exit 0, 1 s; identical
  h_enumeration_fine.txt: exit 0, 7 s; identical
  i_flagged.txt: exit 0, 0 s; identical
  j_symmetric.txt: exit 0, 20 s; identical
  k_twelve.txt: exit 0, 0 s; identical
== summary: 106 checks passed, 0 failed; 0 output(s) different or missing, 0 program(s) with a non-zero exit code
