feat(mobile,#292): NLI Subject-Weighting (Lever 2) #293

Closed
admin-mrrm wants to merge 1 commit from feat/292-nli-subject-weighting into main
Owner

Closes #292

Was

Betreff wird im NLI-Premise verdoppelt (max 100 Zeichen), damit der stärkste Signalträger nicht vom langen Body verdünnt wird.

Warum

Lever 2 der manuellen NLI-Kalibrierung (#268). Lever 1 (Label-Wording, #290) führte zu Regression (64% → 13%) und wurde verworfen. Subject-Weighting ist eine konservative, lokale Änderung am Premise — keine API-/Schema-Änderung, keine Per-Label-Templates.

Was nicht

  • Keine Änderung an Hypothesen-Template
  • Keine API-Schema-Änderung
  • Sehr lange Betreffe (>100) werden nicht verdoppelt — würde Body zu sehr verdrängen

Test

  • 6 neue Unit-Tests in model-manager.spec.ts für buildPremise()
  • 47/47 Mobile-Tests grün, typecheck sauber
  • Manueller A/B-Test gegen .tmp/nli-debug.pre-290.jsonl (64% Baseline) steht aus
Closes #292 ## Was Betreff wird im NLI-Premise verdoppelt (max 100 Zeichen), damit der stärkste Signalträger nicht vom langen Body verdünnt wird. ## Warum Lever 2 der manuellen NLI-Kalibrierung (#268). Lever 1 (Label-Wording, #290) führte zu Regression (64% → 13%) und wurde verworfen. Subject-Weighting ist eine konservative, lokale Änderung am Premise — keine API-/Schema-Änderung, keine Per-Label-Templates. ## Was nicht - Keine Änderung an Hypothesen-Template - Keine API-Schema-Änderung - Sehr lange Betreffe (>100) werden nicht verdoppelt — würde Body zu sehr verdrängen ## Test - 6 neue Unit-Tests in `model-manager.spec.ts` für `buildPremise()` - 47/47 Mobile-Tests grün, typecheck sauber - Manueller A/B-Test gegen `.tmp/nli-debug.pre-290.jsonl` (64% Baseline) steht aus
feat(mobile,#292): Subject 2× im Premise für stärkeren NLI-Anker
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
262d93f2be
Das Mail-Subject ist semantisch das stärkste Einzelsignal für die
Kategorisierung — typische Mails tragen die Kategorie quasi im Subject
("Ihre Rechnung", "Versandbestätigung"). Bisher floss das Subject genau
einmal als erste Zeile der Premise ein und wurde bei langen Mails durch
Body-Footer im 500-Zeichen-Cap stark verdünnt.

Änderungen:

- Helper `buildPremise(subject, bodyText)` in model-manager.ts, der das
  Subject 2× voranstellt (mit Längen-Cap >100 Zeichen, damit der Body
  bei ungewöhnlich langen Subjects nicht aushungert)
- mail-batch-categorizer.ts benutzt buildPremise statt manueller
  Konkatenation
- 6 neue Tests: Subject doppelt, Longline-Cap, null/empty/whitespace-
  Handling

Im Gegensatz zu Lever 1 (#290, verworfen) ist diese Änderung NLI-
modell-neutral: keine Hypothesen-Asymmetrie, keine Snippet-Längen-Drift,
nur ein anderes Gewichtungsverhältnis im Premise.

Tests: 47/47 mobile grün, typecheck sauber.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
admin-mrrm closed this pull request 2026-05-15 00:15:35 +02:00
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Required
Details

Pull request closed

Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!293
No description provided.