A. harness_Burr3_v24.py on v2.4b (ppl_run_v1)
rows: Burr | C = 2.00 | K = 1.00 | S = 1.00 | x₀ = 1.00 / pdf = 0.5000 (a height), P(X ≤ x₀) = 0.5000 / μ = 1.571, no variance (K×C ≤ 2) | K×C = 2.00
PASS 1a title row   Burr | C = 2.00 | K = 1.00 | S = 1.00 | x₀ = 1.00
PASS 1b readout vs scipy   pdf = 0.5000 (a height), P(X ≤ x₀) = 0.5000
PASS 1c status: mean, no variance, K×C   μ = 1.571, no variance (K×C ≤ 2) | K×C = 2.00
PASS 1d markers vs scipy   ['mode 0.58', 'median 1.00', 'mean 1.57']
PASS 1e soft keys   [['C', 'K', 'S', 'x₀', 'View', 'Quit']]
PASS 1f C highlighted (box at x 31..99)   [[31.0, 0.0, 99.0, 11.0, 16729344.0, 16773340.0]]
PASS 1g nothing below 216   205.0
PASS 1h rows fit at 6 px/char   []
PASS 1i result string   Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 1.00) = 0.5000; values in EP_BURR_*
   ghost LINE_Ps per frame: [0, 206, 0]
PASS 2a C 2.00 -> 2.25
PASS 2b ghost drawn after the step
PASS 2c ghost gone after the next action
PASS 2d markers follow C
   C per frame: [2.0, 1.75, 1.5, 1.25, 1.0, 0.75, 0.5, 0.5]
PASS 3a C stops at 0.50 (K×C = 0.5)   [2.0, 1.75, 1.5, 1.25, 1.0, 0.75, 0.5, 0.5]
PASS 3b refused step said on row 2   step refused: K×C must stay ≥ 0.5
PASS 3c status shows the floor   no mean (K×C ≤ 1) | K×C = 0.50 (floor)
PASS 3d heavy-tail hatch (PIXON_P pattern) and its message   287
PASS 3e cap said on the plot
PASS 3f no mean marker when K×C <= 1
PASS 3g ghost not drawn after a refused step
PASS 3h K×C = 1.5 (C = 1.5): mean, no hatch
PASS 4a S highlighted   [[167.0, 0.0, 235.0, 11.0, 16729344.0, 16773340.0]]
PASS 4b S = 1.25 and the median scales   Burr | C = 2.00 | K = 1.00 | S = 1.25 | x₀ = 1.00
   x0 per frame: [1.0, 1.0, 0.96, 1.98, 4.36, 4.4]  x labels during / after: ['12', '14'] ['12', '14']
PASS 5a x0 follows the finger   [1.0, 1.0, 0.96, 1.98, 4.36, 4.4]
PASS 5b snapped on lift (grid 0.1)   4.4
PASS 5c readout vs scipy after the drag
PASS 6a tap on the S-curve with C chosen (acts on the lift): p = 0.900 -> x0 = 3.00   p = 0.900 → x₀ = 3.00
PASS 6b P(X ≤ x0) after it
PASS 6c drag up the S-curve to 0.975: p = 0.975 → x₀ = 6.24   p = 0.975 → x₀ = 6.24
PASS 6d tap the right-hand axis at 0.5 -> the median   p = 0.500 → x₀ = 1.00
   C per frame: [2.0, 2.0, 2.0, 2.5, 2.5]  x labels before / during / after: ['12', '14'] ['12', '14'] ['7', '8']
PASS 7a under 8 px it is still a tap-in-waiting (C unchanged)   [2.0, 2.0, 2.0, 2.5, 2.5]
PASS 7b past 8 px: C = 2 + 0.01*50   [2.0, 2.0, 2.0, 2.5, 2.5]
PASS 7c window held during the drag
PASS 7d ghost during the drag and on the lift frame
PASS 7e window refitted on the lift
PASS 7f markers vs scipy at C = 2.5
   K per frame: [1.0, 1.0, 1.0, 0.5, 0.25, 0.25]
PASS 8a K stops at 0.25 (K×C = 0.50)   [1.0, 1.0, 1.0, 0.5, 0.25, 0.25]
PASS 9a S = 1.02^35 = 2.00   Burr | C = 2.00 | K = 1.00 | S = 2.00 | x₀ = 1.00
   view 4: ['grey = normal, same μ and σ', 'its P(X < 0) = 0.0207']
PASS 10a fitted normal drawn in grey
PASS 10b its P(X < 0) = 0.0207   its P(X < 0) = 0.0207
PASS 10c status: both moments vs scipy   μ = 0.806, σ = 0.395 | K×C = 6.00
PASS 10d the normal is cached (one fill: ~N NORMALD calls)   279
PASS 10e K×C <= 2: the view says so instead
PASS 11a help page
PASS 11b help lines fit at 6 px/char   []
PASS 11c 0 twice: S chosen   [[167.0, 0.0, 235.0, 11.0, 16729344.0, 16773340.0]]
PASS 11d menu Quit returns the summary   Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 1.00) = 0.5000; values in EP_BURR_*
PASS 11e help held despite the menu's left-over OK (stale-key mode)   []
   mean label: mean 100.02 →  scipy mean 100.02
PASS 12a mean past the window: named at the right edge with an arrow
PASS 12b mode 0 for C <= 1
   b3_bpdf-free check: pages 4

C. v2.4a: no "=" before a relation; no "0.0000" for a P that is not 0 (harness v3e)
PASS C1 Burr3(2,1,1,0.005), v2.4: ['pdf = 0.0100 (a height), P(X ≤ x₀) = < 0.0001'] | Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 5.00ᴇ-3) = < 0.0001; values in EP_BURR_*   (['pdf = 0.0100 (a height), P(X ≤ x₀) = < 0.0001'], 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 5.00ᴇ-3) = < 0.0001; values in EP_BURR_*')
PASS C1 Burr3(2,1,1,0.005), v2.4a: ['pdf = 0.0100 (a height), P(X ≤ x₀) < 0.0001'] | Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 5.00ᴇ-3) < 0.0001; values in EP_BURR_*   (['pdf = 0.0100 (a height), P(X ≤ x₀) < 0.0001'], 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 5.00ᴇ-3) < 0.0001; values in EP_BURR_*')
PASS C1 Burr3(2,1,1,30), v2.4: ['pdf = < 0.0001 (a height), P(X ≤ x₀) = 0.9989'] | Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 30.00) = 0.9989; values in EP_BURR_*   (['pdf = < 0.0001 (a height), P(X ≤ x₀) = 0.9989'], 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 30.00) = 0.9989; values in EP_BURR_*')
PASS C1 Burr3(2,1,1,30), v2.4a: ['pdf < 0.0001 (a height), P(X ≤ x₀) = 0.9989'] | Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 30.00) = 0.9989; values in EP_BURR_*   (['pdf < 0.0001 (a height), P(X ≤ x₀) = 0.9989'], 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 30.00) = 0.9989; values in EP_BURR_*')
PASS C1 Burr3(25,1,1,0.3), v2.4: ['pdf = < 0.0001 (a height), P(X ≤ x₀) = < 0.0001'] | Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.30) = < 0.0001; values in EP_BURR_*   (['pdf = < 0.0001 (a height), P(X ≤ x₀) = < 0.0001'], 'Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.30) = < 0.0001; values in EP_BURR_*')
PASS C1 Burr3(25,1,1,0.3), v2.4a: ['pdf < 0.0001 (a height), P(X ≤ x₀) < 0.0001'] | Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.30) < 0.0001; values in EP_BURR_*   (['pdf < 0.0001 (a height), P(X ≤ x₀) < 0.0001'], 'Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.30) < 0.0001; values in EP_BURR_*')
PASS C1 Burr3(25,1,1,0.2), v2.4: ['pdf = < 0.0001 (a height), P(X ≤ x₀) = 0.0000'] | Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.20) = 0.0000; values in EP_BURR_*   (['pdf = < 0.0001 (a height), P(X ≤ x₀) = 0.0000'], 'Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.20) = 0.0000; values in EP_BURR_*')
PASS C1 Burr3(25,1,1,0.2), v2.4a: ['pdf < 0.0001 (a height), P(X ≤ x₀) < 0.0001'] | Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.20) < 0.0001; values in EP_BURR_*   (['pdf < 0.0001 (a height), P(X ≤ x₀) < 0.0001'], 'Burr3: C = 25.00, K = 1.00, S = 1.00, P(X ≤ 0.20) < 0.0001; values in EP_BURR_*')
PASS C1 Burr3(2,1,1,1), v2.4: ['pdf = 0.5000 (a height), P(X ≤ x₀) = 0.5000'] | Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 1.00) = 0.5000; values in EP_BURR_*   (['pdf = 0.5000 (a height), P(X ≤ x₀) = 0.5000'], 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 1.00) = 0.5000; values in EP_BURR_*')
PASS C1 Burr3(2,1,1,1), v2.4a: an ordinary readout and summary are unchanged   (['pdf = 0.5000 (a height), P(X ≤ x₀) = 0.5000'], 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 1.00) = 0.5000; values in EP_BURR_*')
PASS C1 view 4 Burr3(10,1,1,1): v2.4 ['its P(X < 0) = < 0.0001'] -> v2.4a ['its P(X < 0) < 0.0001']
PASS C1 view 4 Burr3(3,2,1,1): v2.4 ['its P(X < 0) = 0.0207'] -> v2.4a ['its P(X < 0) = 0.0207']
PASS C2 C 25, x₀ 0.2: EP_BURR_CDF holds the computed value, 0 (1 + 0.2^25 is 1 in the last digit; SciPy 3.4e-18); the screen says "< 0.0001"
PASS C3 224 calls (C, K, S, x₀): every readout row and summary identical to v2.4 once its "= <" and exact-0 CDF are written the v2.4a way (84 needed it)   []
PASS C4 b3_Eq: "< 0.0001" -> " < 0.0001", "> -0.0001" -> " > -0.0001", "0.5000" -> " = 0.5000", "" -> " = ": [' < 0.0001', ' > -0.0001', ' = 0.5000', ' = ']
PASS C5 the code lines that changed are exactly the 6 listed (and b3_Eq's 7): -[] +[]
PASS C5 the new names b3_Eq and eqS are not built-ins (case ignored); b3_Eq carries the b3_ tag
PASS C5 version strings: the banner, the help page title, the "What changed in v2.4a" paragraph
PASS C5 no // comment inside an open bracket: []
PASS C5 no INSTRING in v2.4a's code; b3_Eq reads LEFT(eqS, 1) only inside IF DIM(eqS) > 0
   scientific fixed decimals: 1 in the v2.4a runs of part C, 1 in v2.4's; e.g. [('Burr3(2,1,1,0.005)', 0.005, 2, '5.00ᴇ-3')]
PASS C6 no NEW scientific fixed decimal: the 232 v2.4a runs print exactly those v2.4 prints for the same calls (1: x₀ below 0.01 in the summary, STRING(x₀, 2, 2), outside this pass)   [('Burr3(2,1,1,0.005)', 0.005, 2, '5.00ᴇ-3')]
B. verify_Burr3.py (v2.4's formula mirror, unchanged): ['4972 checks passed, 0 failed']
PASS B verify_Burr3.py passes: ['4972 checks passed, 0 failed']

D. v2.4b: B1 (the pdf and CDF in logs), B2 (ROUND before STRING, b3_Fx), B3 (no root sign), B4 (the LOCAL MAKELIST counter) (harness v3e)
   review check_Burr3.py on v2.4b: 290 checks, 0 failed []
   the same on v2.4a: 290 checks, 11 failed:
      FAIL  B5 the help page once (0)
      FAIL  C4 Burr3(30, 30, 1, 5): the program never forms the pdf denominator (1 + z)^(K+1) (1E706 at the window's edge): the run completes in the harness (doub
      FAIL  C4 Burr3(100, 100, 1, 1): the program never forms the pdf denominator (1 + z)^(K+1) (1E613 at the window's edge): the run completes in the harness (do
      FAIL  C4 Burr3(20, 25, 1, 10): the program never forms the pdf denominator (1 + z)^(K+1) (1E552 at the window's edge): the run completes in the harness (dou
      FAIL  C4 Burr3(3, 400, 1, 10): the program never forms the pdf denominator (1 + z)^(K+1) (1E1276 at the window's edge): the run completes in the harness (do
      FAIL  C5 S driven to its 0.01 floor by the keys: no scientific E on screen (title, markers, summary 'Burr3: C = 2.00, K = 1.00, S = 0.01, P(X ≤ 0.15) = 0.99
      FAIL  C6 Burr3(1.01, 1, 1, 1) prints no scientific E
      FAIL  C6 Burr3(1, 100, 1, 1) prints no scientific E
      FAIL  C6 Burr3(2, 1, 1, 0.005) prints no scientific E
      FAIL  D2 version string on screen: ['v2.4a']
      FAIL  D4 no root sign in executable code (house rule: ^.5) [(476, 'msd := √(mvar);')]
PASS D1 the review's check_Burr3.py passes in full on v2.4b (290 checks, 0 failed)   []
PASS D1 regression: on v2.4a the same script fails the 9 checks the review found (C4 x 4: B1; C5, C6 x 3: B2; D4: B3) and the two version expectations besides (help title, D2): {'B5': 1, 'C4': 4, 'C5': 1, 'C6': 3, 'D2': 1, 'D4': 1}   ['B5 the help page once (0)', "C4 Burr3(30, 30, 1, 5): the program never forms the pdf denominator (1 + z)^(K+1) (1E706 at the window's edge): the run completes in the harness (doubles to 1.8E308, inside the Prime's 1E500) and EP_BURR_PDF = burr12.pdf", "C4 Burr3(100, 100, 1, 1): the program never forms the pdf denominator (1 + z)^(K+1) (1E613 at the window's edge): the run completes in the harness (doubles to 1.8E308, inside the Prime's 1E500) and EP_BURR_PDF = burr12.pdf", "C4 Burr3(20, 25, 1, 10): the program never forms the pdf denominator (1 + z)^(K+1) (1E552 at the window's edge): the run completes in the harness (doubles to 1.8E308, inside the Prime's 1E500) and EP_BURR_PDF = burr12.pdf", "C4 Burr3(3, 400, 1, 10): the program never forms the pdf denominator (1 + z)^(K+1) (1E1276 at the window's edge): the run completes in the harness (doubles to 1.8E308, inside the Prime's 1E500) and EP_BURR_PDF = burr12.pdf", "C5 S driven to its 0.01 floor by the keys: no scientific E on screen (title, markers, summary 'Burr3: C = 2.00, K = 1.00, S = 0.01, P(X ≤ 0.15) = 0.9956; values in EP_BURR_*')", 'C6 Burr3(1.01, 1, 1, 1) prints no scientific E', 'C6 Burr3(1, 100, 1, 1) prints no scientific E', 'C6 Burr3(2, 1, 1, 0.005) prints no scientific E', "D2 version string on screen: ['v2.4a']", "D4 no root sign in executable code (house rule: ^.5) [(476, 'msd := √(mvar);')]"]
   S at its 0.01 floor by the keys, then a tap (the mode label)
      v2.4a: ['mode 5.77ᴇ-3', 'mode 6.66ᴇ-3', 'mode 8.32ᴇ-3']
      v2.4b: ['S = 0.01', 'mode 0.01']
PASS D2 S at its 0.01 floor by the keys, then a tap (the mode label): v2.4a printed ['mode 5.77ᴇ-3', 'mode 6.66ᴇ-3', 'mode 8.32ᴇ-3']; v2.4b prints ['mode 0.01', 'S = 0.01'] and no scientific form   []
   Burr3(1.01, 1, 1, 1): the mode leaves 0 as C passes 1
      v2.4a: ['mode 5.24ᴇ-3']
      v2.4b: ['mode 0.01']
PASS D2 Burr3(1.01, 1, 1, 1): the mode leaves 0 as C passes 1: v2.4a printed ['mode 5.24ᴇ-3']; v2.4b prints ['mode 0.01'] and no scientific form   []
   Burr3(1, 100, 1, 1): the median
      v2.4a: ['median 6.96ᴇ-3']
      v2.4b: ['mean 0.01', 'median 0.01']
PASS D2 Burr3(1, 100, 1, 1): the median: v2.4a printed ['median 6.96ᴇ-3']; v2.4b prints ['median 0.01', 'mean 0.01'] and no scientific form   []
   Burr3(2, 1, 1, 0.005): x0 in the title
      v2.4a: ['x₀ = 5.00ᴇ-3']
      v2.4b: ['x₀ = 0.01']
PASS D2 Burr3(2, 1, 1, 0.005): x0 in the title: v2.4a printed ['x₀ = 5.00ᴇ-3']; v2.4b prints ['x₀ = 0.01'] and no scientific form   []
   Burr3(2, 1, 0.001, 0.0004): a scale below 0.005
      v2.4a: ['S = 1.00ᴇ-3', 'mean 1.57ᴇ-3', 'median 1.00ᴇ-3', 'mode 5.77ᴇ-4']
      v2.4b: ['S < 0.01', 'mean < 0.01', 'median < 0.01', 'mode < 0.01', 'x₀ < 0.01']
PASS D2 Burr3(2, 1, 0.001, 0.0004): a scale below 0.005: v2.4a printed ['S = 1.00ᴇ-3', 'x₀ = 4.00ᴇ-4']; v2.4b prints ['S < 0.01', 'x₀ < 0.01', 'mode < 0.01', 'median < 0.01', 'mean < 0.01'] and no scientific form   []
   Burr3(3, 2, 0.0001, 0.0001): the moments on the status row
      v2.4a: ['S = 1.00ᴇ-4', 'mean 8.06ᴇ-5', 'median 7.45ᴇ-5', 'mode 6.59ᴇ-5']
      v2.4b: ['μ < 0.001, σ < 0.001']
PASS D2 Burr3(3, 2, 0.0001, 0.0001): the moments on the status row: v2.4a printed ['μ = 8.061ᴇ-5, σ = 3.953ᴇ-5']; v2.4b prints ['μ < 0.001, σ < 0.001'] and no scientific form   []
PASS D2 the summary to Home, Burr3(2, 1, 1, 0.005): v2.4a 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 5.00ᴇ-3) < 0.0001; values in EP_BURR_*' -> v2.4b 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 0.01) < 0.0001; values in EP_BURR_*'   ('Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 5.00ᴇ-3) < 0.0001; values in EP_BURR_*', 'Burr3: C = 2.00, K = 1.00, S = 1.00, P(X ≤ 0.01) < 0.0001; values in EP_BURR_*')
PASS D2 the summary to Home, Burr3(2, 1, 0.001, 0.0004): v2.4a 'Burr3: C = 2.00, K = 1.00, S = 1.00ᴇ-3, P(X ≤ 4.00ᴇ-4) = 0.1379; values in EP_BURR_*' -> v2.4b 'Burr3: C = 2.00, K = 1.00, S < 0.01, P(X ≤ x₀) = 0.1379 with x₀ < 0.01; values in EP_BURR_*'   ('Burr3: C = 2.00, K = 1.00, S = 1.00ᴇ-3, P(X ≤ 4.00ᴇ-4) = 0.1379; values in EP_BURR_*', 'Burr3: C = 2.00, K = 1.00, S < 0.01, P(X ≤ x₀) = 0.1379 with x₀ < 0.01; values in EP_BURR_*')
/usr/local/lib/python3.13/dist-packages/scipy/stats/_continuous_distns.py:1325: RuntimeWarning: overflow encountered in power
  return np.log(c) + np.log(d) + sc.xlogy(c - 1, x) + sc.xlog1py(-d-1, x**c)
   b3_bpdf: 1402 points against mpmath (327 in the tail branch, z > e^100), worst relative 4.3e-13; 1380 against burr12.pdf (104 tail), worst 1.3e-13; 458 below 1E-300 return 0 (as the Prime returns 0 below 1E-499)
PASS D3 B1: b3_bpdf (in logs) = the Burr XII pdf to 4.3e-13 relative at 1402 points, C 0.5 to 400, K 0.01 to 400, S 0.01 to 7, x from 1E-6 S to 1000 S; 327 of them in the tail branch (ln z > 100); = scipy burr12.pdf to 1.3e-13 at 1380 (104 tail)
PASS D3 B1: b3_bcdf (in logs) = 1 - (1 + z)^(-K) to 3.7e-14 absolute over the same grid
   Burr3(30, 30, 1, 5): v2.4a Unsupported: ^ between a number and a number is not covered; v2.4b ran ['pdf < 0.0001 (a height), P(X ≤ x₀) = 1.0000']
PASS D3 B1: Burr3(30, 30, 1, 5) runs to the end; EP_BURR_PDF, EP_BURR_CDF and the mean = mpmath / burr12; the pdf readout never "0.0000" (v2.4a: stopped)
   Burr3(100, 100, 1, 1): v2.4a Unsupported: ^ between a number and a number is not covered; v2.4b ran ['pdf < 0.0001 (a height), P(X ≤ x₀) = 1.0000']
PASS D3 B1: Burr3(100, 100, 1, 1) runs to the end; EP_BURR_PDF, EP_BURR_CDF and the mean = mpmath / burr12; the pdf readout never "0.0000" (v2.4a: stopped)
   Burr3(20, 25, 1, 10): v2.4a Unsupported: ^ between a number and a number is not covered; v2.4b ran ['pdf < 0.0001 (a height), P(X ≤ x₀) = 1.0000']
PASS D3 B1: Burr3(20, 25, 1, 10) runs to the end; EP_BURR_PDF, EP_BURR_CDF and the mean = mpmath / burr12; the pdf readout never "0.0000" (v2.4a: stopped)
   Burr3(3, 400, 1, 10): v2.4a Unsupported: ^ between a number and a number is not covered; v2.4b ran ['pdf < 0.0001 (a height), P(X ≤ x₀) = 1.0000']
PASS D3 B1: Burr3(3, 400, 1, 10) runs to the end; EP_BURR_PDF, EP_BURR_CDF and the mean = mpmath / burr12; the pdf readout never "0.0000" (v2.4a: stopped)
   Burr3(20, 20, 1, 1): v2.4a ran; v2.4b ran ['pdf = 0.0002 (a height), P(X ≤ x₀) = 1.0000']
PASS D3 B1: Burr3(20, 20, 1, 1) runs to the end; EP_BURR_PDF, EP_BURR_CDF and the mean = mpmath / burr12; the pdf readout never "0.0000" (v2.4a: ran)
   Burr3(50, 50, 1, 1): v2.4a ran; v2.4b ran ['pdf < 0.0001 (a height), P(X ≤ x₀) = 1.0000']
PASS D3 B1: Burr3(50, 50, 1, 1) runs to the end; EP_BURR_PDF, EP_BURR_CDF and the mean = mpmath / burr12; the pdf readout never "0.0000" (v2.4a: ran)
PASS D3 B1: Burr3(30, 30, 1, 5) -- the pdf at x0 = 5 is about 1E-628, below the Prime's smallest real; it comes back 0 and the readout says "pdf < 0.0001" ('pdf < 0.0001 (a height), P(X ≤ x₀) = 1.0000'); EP_BURR_PDF holds the computed 0
PASS D3 Burr3(123.25, 456.5, 1, 1): 'K×C = 56263.62' from x 236 ends by x 320 at 6 px a character (v2.4a stopped in b3_bpdf; from x 248 it would end at 332); "K×C = 2.00" still starts at 248
PASS D4 224 ordinary calls (C 0.5 to 25, K 0.25 to 2, S 1 and 3.5, x0 0.05 to 40): every text v2.4b draws, and its summary, is v2.4a's, character for character   []
PASS D4 Burr3(3, 2, 1, 1) through the five views and seven keys: every text as v2.4a
PASS D4 Burr3(2, 1, 1, 1) through the five views and seven keys: every text as v2.4a
   MAKELIST caches: v2.4a [('b3Pdf', 'X'), ('b3Cdf', 'X'), ('b3Nrm', 'X'), ('b3Gh', 'X')]; v2.4b [('b3Pdf', 'b3I'), ('b3Cdf', 'b3I'), ('b3Nrm', 'b3I'), ('b3Gh', 'b3I')]
PASS D5 B4: v2.4b's four caches count with the LOCAL b3I (v2.4a: Home's X, which MAKELIST overwrote on the Prime); in the harness all four fill and Home's X is 7 before and after
   routines byte-identical to v2.4a: b3_Drain, b3_Eq, b3_Label, b3_NiceNum, b3_WaitAny, b3_fmtp, b3_lngamma
   changed: ['Burr3', 'b3_Help', 'b3_bpdf']; added: ['b3_Fx', 'b3_bcdf']; removed: []
PASS D6 the routines that differ from v2.4a are Burr3, b3_bpdf (B1) and b3_Help (its title), and the new b3_bcdf (B1) and b3_Fx (B2); the other 7 are byte-identical
PASS D6 b3_Help differs from v2.4a only in its title line
   inside Burr3: 26 code lines removed, 32 added
PASS D6 inside Burr3 every code line that changed is a B1 (the CDF through b3_bcdf), B2 (b3_Fx), B3 (^0.5) or B4 (MAKELIST) site, the pdf readout's IFTE, the K x C position or the summary's x0 slot (26 removed, 32 added): -[] +[]
PASS D7 the new names b3_bcdf, b3_Fx, b3L, fxV, fxD, fxR, b3XS, b3XT are not built-ins (case ignored); the helpers carry the b3_ tag and are defined once, before Burr3
PASS D7 version strings: the banner, the help page title, a "What changed in v2.4b" paragraph, and Roger's DISCLAIMER line beside the distribution terms; no code line names v2.4a
PASS D7 no // comment inside an open bracket []
PASS D7 B3: no root sign in the code; every LOCAL line holds at most 6 names (largest 5); no INSTRING; no MAKELIST counts with K or X
   STRING(x, 2, d) without ROUND in v2.4b: K*C (K x C: 0.5 or more (the floor)), b3P (p on the inverse row: clamped to 0.005 or more), fxR (b3_Fx: ROUND(x, d) itself, so 0 or at least 10^-d), pv (b3_fmtp: reached only when |pv| >= 10^-d), thr (b3_fmtp: the floor itself, 10^-d), xv (an x tick label: a multiple of a 1-2-5 step with d = -FLOOR(LOG(step))), yv (a y tick label: the same)
PASS D7 every bare STRING(x, 2, d) left in v2.4b is one of ['K*C', 'b3P', 'fxR', 'pv', 'thr', 'xv', 'yv'], each unable to print the scientific form
   v2.4b: 245 harness runs in part D, 0 distinct scientific STRING results: []
PASS D8 no scientific STRING result in any of the 245 v2.4b runs of part D   []

ALL CHECKS PASSED
