Skip to content

revert(lexicon): remove multi-word phrase support - #48

Merged
elecnix merged 1 commit into
mainfrom
fix/drop-phrases
Aug 9, 2026
Merged

revert(lexicon): remove multi-word phrase support#48
elecnix merged 1 commit into
mainfrom
fix/drop-phrases

Conversation

@elecnix

@elecnix elecnix commented Aug 9, 2026

Copy link
Copy Markdown
Owner

Reverts the phrase half of #45. Reopens #40.

Why

Phrases do not work, and three attempts did not change that.

Over the real corpus they were 84% of all adjudications (65,792 of 78,437 entries) and 75% of all hits (28,179 against the word lexicon's 9,350), and the output was noise.

Tightening the prompt, then adding a deterministic rule suppressing any phrase whose component word had already fired, cut the volume hard — flag rate 6.66% → 1.65%, hits 28,179 → 1,525. But what survived was still not idiomatic:

praise      | accepted or          frustration | after another
praise      | accepted feedback    frustration | again for
frustration | aach wbaagb          frustration | admin's mock

top hits: first quality x111 · end your x69 · re check x43 · an explicit x26

The premise was wrong, not the tuning. Adjacent word pairs in running prose are overwhelmingly not fixed expressions, and no judge reliably finds the rare real ones among tens of thousands of candidates. Lowering the noise floor does not turn a bad candidate set into a good one.

What remains

The parts that measurably work:

  • single-word judgement — 3.6% flag rate, producing stuck, pedantically, salty, liar, hell, masterful, 🍾
  • paralinguistic markers — shouting, ???, elongation; no model required

What is lost

laisse tomber and trop lent — the multilingual idioms that motivated #40. They are real, and #40 is reopened. A future attempt needs a different mechanism: a curated idiom seed list, or statistical n-gram selection, rather than per-pair LLM adjudication of every adjacent word pair. DESIGN.md records the withdrawal and the measurements so the next attempt does not restart from the same assumption.

Test plan

  • npm test424 passing (phrase-specific tests removed).
  • node --import tsx test/integration/test-commands.ts21 passing.
  • npx tsc --noEmit clean.

🤖 Generated with Claude Code

Phrases do not work, and three attempts did not change that.

Over the real corpus they were 84% of all adjudications (65,792 of 78,437
entries) and 75% of all hits (28,179 against the word lexicon's 9,350), and the
output was noise. Tightening the prompt and then adding a deterministic rule that
suppressed a phrase whose component word had already fired cut the volume hard —
flag rate 6.66% → 1.65%, hits 28,179 → 1,525 — but what survived was still not
idiomatic:

  praise      | accepted or          frustration | after another
  praise      | accepted feedback    frustration | again for
  frustration | aach wbaagb          frustration | admin's mock

  top hits: first quality x111 · end your x69 · re check x43 · an explicit x26

The premise was wrong rather than the tuning. Adjacent word pairs in running
prose are overwhelmingly not fixed expressions, and no judge reliably finds the
rare real ones among tens of thousands of candidates. Reducing the noise floor
does not turn a bad candidate set into a good one.

What remains is what measurably works: single-word judgement (3.6% flag rate,
producing `stuck`, `pedantically`, `salty`, `liar`, `masterful`, 🍾) and the
lexicon-free paralinguistic markers, which need no model at all.

`laisse tomber` and `trop lent` are genuinely lost. They are real, and #40 is
reopened for them — but a future attempt needs a different mechanism, such as a
curated idiom seed list or statistical n-gram selection, not per-pair LLM
adjudication of every adjacent word pair.

DESIGN.md records the withdrawal and why, so the next attempt starts from the
measurements rather than from the same assumption.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@elecnix
elecnix merged commit cffe952 into main Aug 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant