The bug was that all the letters of each new word under consideration were checked to make sure that none of them was used previously to fill in a ? (or hyphen in my coding scheme):

FOR i = 1 TO LEN(w$) ch$ = MID$(w$, i, 1) IF MID$(proto(n), i, 1) = "-" THEN bldu$ = bldu$ + ch$ IF INSTR(hist, ch$) > 0 THEN good = 0: EXIT FOR NEXT i

So when the L in GOLFER was considered, the word was rejected based on L having been used as a fill-in in SUBTLE, even though the L wasn't in a fill-in position.

The bug is fixed by making the test conditional on the letter from the new word being in a fill-in position itself:

FOR i = 1 TO LEN(w$) ch$ = MID$(w$, i, 1) IF MID$(proto(n), i, 1) = "-" THEN bldu$ = bldu$ + ch$ IF INSTR(hist, ch$) > 0 THEN good = 0: EXIT FOR END IF NEXT i

Two additional solutions were found. In one, merely change SuBTLe to BuSTLe in brianjn's solution.

The other depends on the word MIXT (archaic per American Heritage, but not so labelled in Random House), HAVERING (chiefly British: equivocating, vacillating) and JUBILE (an obsolete version of jubilee):