Skip to content

PARTIAL_MATCH construct validity: 32 eval items from 9 hard-coded string pairs shared with training — hold out variants #17

Description

@caiotheodoro

Context

PARTIAL_MATCH — the class that carries essentially the entire headline win (see the head-to-head rerun issue) — is generated from a tiny hard-coded lookup: 5 beneficiary variant pairs + 5 counterparty variant pairs. The 32 benchmark PARTIAL_MATCH items are drawn from just 9 distinct string pairs (e.g. CHASUS33XXX→CHASUS33), and the same pairs appear in the 134 PARTIAL_MATCH training examples. The champion may have learned "these 9 strings mean PARTIAL_MATCH" — a label convention lookup — rather than the concept "same entity, abbreviated/truncated form". As a benchmark class, it currently cannot distinguish the two.

Evidence

  • forge/src/reconforge_forge/generator.py:103-133BENEFICIARY_VARIANTS (5 pairs), COUNTERPARTY_VARIANTS (5 pairs).
  • Re-derive: extract the variant pair used by each of the 32 seed-777 PARTIAL_MATCH items and each of the 134 training items; confirm the overlap is total (it is — 9 of the 10 pairs appear in eval, all present in training).
  • Champion PARTIAL_MATCH: 26/32 caught; DeepSeek: 5/32 (most DeepSeek "errors" are defensible alternative labels — see the rerun issue).

Task

  1. Extend the variant tables substantially (dozens of pairs across formats: SWIFT suffix stripping, legal-form abbreviations, diacritics, word-order, truncation) and partition variant pairs disjointly between train and eval pools — the generator gets a split-aware variant source. This makes PARTIAL_MATCH a generalization test instead of a memorization test.
  2. Regenerate training data and the benchmark PARTIAL_MATCH slice with held-out variants; re-evaluate the existing champion adapter on the new slice (cheap, local) to measure how much of the 26/32 was memorization vs concept.
  3. Publish the result either way: "champion holds at ~0.8 on unseen variants" is a strong claim upgrade; "champion drops to DeepSeek's level" is exactly the honest finding the repo's brand is built on.
  4. Version the dataset (v0.2.0) since task content changes; note in the ReconEval CHANGELOG.

Acceptance criteria

  • Train/eval variant pairs provably disjoint (a test asserts it).
  • Champion re-scored on held-out-variant PARTIAL_MATCH; number published with interval.
  • Dataset version bumped with changelog entry.

Dependencies

  • Interprets the head-to-head rerun result (theme/headline-integrity, T2): rubric fixes the label-definition confound; this issue fixes the memorization confound. Both are needed before the PARTIAL_MATCH win means what the blog says it means.

Cost tier

T1-cheap — generator work + local MLX re-eval of one slice (~32–100 tasks); no API cost unless DeepSeek is re-scored on the new slice (fold that into the T2 rerun).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cost/T1-cheapScripts or re-scoring from existing exportstheme/headline-integrityDoes the headline claim survive scrutiny

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions