fix(page): read a hyphenated compound as the word it is a compound of (#443)
`NAMES_TEXT_FORM` is boundary-tested so that `hand-written` and `rubber-stamped` are read; `TEXT_NOUN`
and `QUALIFIER` are token-exact. `printed` was only in the token-exact pair, so which prefix a model
wrote decided whether the page survived: `The machine-printed notes are visible.` was a page with notes
on it delivered empty, while `hand-printed notes` were seen through an entry of their own.
Three call sites, the last two one fix in two places:
- `printed` joins `NAMES_TEXT_FORM`. The bare token already affirmed through `AFFIRMED_NOUN`, so this
moves only compounds. `hand-?printed` stays: `handprinted` written solid has no boundary inside it.
- `qualifies` replaces `QUALIFIER.has` in `definiteBefore` and at both of `exceptiveOrLocativeObject`'s
reads of the object — the exclusion must skip a compound as it skips its stem, and the walk must keep
going past it to the noun behind, or `from the machine-printed heading` breaks where `from the printed
heading` affirms.
- `modifierForm` still asks `QUALIFIER.has`, a limit argued structurally: both guards that read it SKIP a
subject, and the other twelve qualifiers are in no name-for-text list, so no read arrives holding one.
MEASURED, and the second figure is round 1 of the review asking for the eleven words the first missed:
10 frames x 4 (bare, compound) pairs = 24 of 40 disagreeing with their own stem on base, 0 now; then 13
qualifiers x 3 prefixes x 4 frames = 156 cells, 75 disagreeing on base, 0 now, every one of the 75 moving
TO the stem's answer. 36 toward a declaration, 39 toward a refusal — no safe side. 33 of the 36 are the
definite-`image` reading, already true of the bare word; the other 3 are the terminal-object exclusion.
WHAT THE ISSUE ASKED FOR IS NOT WHAT THIS DOES. #437 argued no compound rule can be right, because `The
pre-printed form is empty.` ought to declare while `The pre-typed notes are visible.` ought to refuse.
The noun behind the modifier is already read; what is not read is `empty`. Six absence complements behind
a copula are taken as affirmations of their own subject while `absent` and `missing` are read as denials,
and the bare-stem `The printed form is empty.` was already reported on main and before #431. That is
#442, filed with its grid. So this buys parity with the STEM, not a claim the stem is right.
One pinned test row changed sides for that reason: `The pre-printed form is empty; no handwritten
entries.` is pinned as a refusal now, beside its bare stem, because the pin recorded a hyphen escaping a
token-exact list rather than a decision about blank forms.
THE CORPUS IS SILENT AND THAT IS AN EMPTY DENOMINATOR, not a measured zero: of 3,747 page replies with a
log, 4 write such a compound at all and all 4 are replies whose HTML carries content, so none reaches the
blank read on either arm. Replayed, 0 of 3,747 verdicts move.
Three review rounds. Round 1 raised the eleven unmeasured qualifiers and the `hand-printed`/`handprinted`
divergence, whose comment claimed a redundancy that is really a divergence; round 2 caught a rationale
sentence quoting 36 for a claim that holds of 33, corrected in all three copies of the figure.
Closes #437
Co-Authored-By: bbertucc <bbertucc@users.noreply.github.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>