The eligibility filter required every form's regularity tag to equal
"regular", but the data uses four labels:
- regular (179 forms — curated paradigm verbs)
- ordinary (50,992 forms — pattern-following verbs like hablar, comer)
- irregular (8,653)
- orto (176 — orthographic spelling changes like busqué)
Result was a 27-combo eligible pool, ~26 of which were -ir verbs in
present tense — every Full Table prompt landed on the same handful of
verbs.
Pulled the rule into a SharedModels function (FullTableEligibility) so
it's testable in isolation. Accepts "regular" + "ordinary" (both mean
"follows the pattern"); rejects "irregular" and "orto". 9 unit tests
cover the matrix including edge cases (incomplete forms, mixed labels,
unknown values).
PracticeSessionService.makePromptIfFullyRegular now delegates to
FullTableEligibility, sorting forms by personIndex so the regularity
array lines up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>