Skip to content

FIELD_CORRUPTION vs VALUE_DATE taxonomy collision: quantify, fix generator/scoring, correct the B2 narrative #16

Description

@caiotheodoro

Context

Part of the champion's "LOW-severity hole" — the finding that launched the whole B2 retraining study — is a generator artifact, not a capability gap. The malformed_date variant of FIELD_CORRUPTION writes a garbled date into statement.value_date, which is semantically indistinguishable from VALUE_DATE_MISMATCH unless the model has internalized the verifier's fixed priority order. Models get scored wrong for a defensible reading. B2 may have been partly chasing this artifact.

Evidence

  • forge/src/reconforge_forge/generator.py — FIELD_CORRUPTION variants; malformed_date targets statement.value_date. 12 of the 37 benchmark FIELD_CORRUPTION items are malformed_date (re-derive from the seed-777 pool by regenerating with the eval seed and counting variants).
  • Champion sends 11–12 FIELD_CORRUPTION items to VALUE_DATE_MISMATCH; DeepSeek sends 7 (confusion matrices in docs/validation/bench-eval-full-740.json / bench-deepseek-full.json).
  • Champion FIELD_CORRUPTION exact-type recall: 0.270 [0.133, 0.421] (n=37) — the worst class after DUPLICATE.
  • forge/src/reconforge_forge/verifier.py — fixed single-exception priority order (decision F1) is what makes the gold label FIELD_CORRUPTION rather than VALUE_DATE_MISMATCH.

Task

  1. Quantify precisely: for the seed-777 benchmark, list which FIELD_CORRUPTION items are malformed_date-on-value_date, and recompute per-type recall and R_w under a "collision-tolerant" scoring where FIELD_CORRUPTION↔VALUE_DATE_MISMATCH confusions on those items count as caught-and-typed-correct. Report both scorings.
  2. Decide the fix and record it in DECISIONS.md:
    • Generator fix (preferred): malformed_date corrupts a field that has no dedicated exception class (e.g. currency string garbling, reference format), so the collision disappears from future pools; or
    • Taxonomy fix: define the priority rule in the task prompt itself so the label is derivable from the input; or
    • Scoring fix: permanent dual-label acceptance for the ambiguous variant.
  3. Re-examine the B2 conclusion in BENCHMARK.md §B2: how much of the FIELD_CORRUPTION "improvement target" was this artifact? Add a corrective note.
  4. Note the interaction with the severity weights: these items are LOW-weight, so the R_w headline moves little — state the number rather than asserting it.

Acceptance criteria

  • Both scorings published; ambiguity resolved in generator/taxonomy/scoring with a DECISIONS entry.
  • B2 section carries the corrective note.

Cost tier

T1-cheap — regeneration of the eval pool locally + re-scoring committed exports; no model runs.

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/benchmark-validityMetric, CI, contamination, taxonomy soundness

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions