A. harness_Burr3_v24.py on v2.4a (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']

ALL CHECKS PASSED
