Skip to content

refactor(grading): rename older-problem support to pre-existing problem - #138

Merged
kamui merged 5 commits into
mainfrom
t3code/issue-135-rename-pre-existing
Oct 14, 2026
Merged

kamui merged 5 commits into
mainfrom
t3code/issue-135-rename-pre-existing

Conversation

@kamui

@kamui kamui commented Oct 13, 2026

Copy link
Copy Markdown
Owner

Why

"Older problem" was ambiguous, and "credit" suggested a point system. The concept is now a pre-existing problem: a fault that was in the project before the change and that the change did not cause. A review raises one; that is its own kind of finding, shown and not scored. The support merged dormant in #137, and no grade or saved verdict holds its fields yet, so this is the cheapest moment to rename words and identifiers together.

This is a rename only. No rule, condition or default changes.

Scope

  • bench/tools/older_grading.py → pre_existing_grading.py (and its test); docs/older-problem-credit.md → docs/pre-existing-problems.md, with its four links.
  • Fields pre_existing_problems, pre_existing_candidate, pre_existing_problem_id, pre_existing_candidate_id; fingerprint input pre_existing_admissions; candidate kind pre-existing-problem; dimension pre-existing-admission; decision types pre-existing-admission, pre-existing-raise, pre-existing-grouping.
  • Audit strata pre-existing-raised, pre-existing-not-raised, pre-existing-unresolved, unit pre-existing-review, unit id infix #pre-existing:.
  • src/lib/scoring.ts, src/lib/data.ts, MethodologyViews.tsx, EvidenceDrawer.tsx: preExistingProblems, card fields raised in place of credits and catches, panel "Pre-existing problems raised".
  • ruling_record.read_before reads the records of the one round opened before the rename (older-admission, older-credit, older-grouping) under the current names, keyed on that round's opening pin. SavedRecordsTest reads through it.

Not touched: docs/research/**, bench/grading/rulings/**, bench/runs/**, saved assessments and audit records, the text in force (*.next.md), and the three proposal files bench/rubric/*.older-problems.v1.md, whose bytes are pinned as what earlier blind sessions read. docs/pre-existing-problems.md now says they cannot be pinned as they stand.

Tradeoffs

  • The alias is scoped to one round by its opening pin rather than accepting the old spellings everywhere. A later record in that still-open round could use the old spelling; an unconditional alias would be simpler and wider.
  • "Credit" stays where the structure is shared with known problems (credits.json, credit_subject, creditFact).
  • "Older faults" in docs/finding-threshold.md and the id prefix OP- stay: the first names an earlier scope ruling, the second is used as a group name by written records.

Blast Radius

Dormant support only: nothing on main holds a renamed field, all 198 batch fingerprints match main, and current records and schema examples validate unchanged. The three proposal files now disagree with the validator's field names, so activation must write new grader, rubric and rule files, which it does anyway.

Verification

  • bun run test: bench suite 988 tests, 1 failure, 18 skipped. The failure is test_codex_grading.test_catalog_preserves_native_model_instructions, the known host-only failure. The rest of the chain run separately: five self-tests pass, test:client passes, test:web 68 and 27 pass.
  • bun run typecheck (after bun run build), bun run verify:current, bun run verify:claims, bun run verify:import, python3 bench/tools/roster.py, bun run scorecard: pass. The scorecard prints "Pre-existing problems raised: unavailable (No approved pre-existing problems in this selection.)".
  • The 22 written records of the open round pass ruling_record.py and route through the alias, in a scratch copy outside the repository; the saved-records test was red on them before the alias reader and green after.
  • The pinned grader's example claim is refused by the validator as written and accepted with the two keys renamed, which is what the doc's new sentence warns of.
  • A second read-only review found the saved-records test and the doc sentence; both are fixed here. The panel was rendered from the fixture server-side, not viewed in a browser; the fixture does not reach the "candidates await admission" state.

Part of #135

kamui added 5 commits October 13, 2026 17:48
The owner decided on 2026-10-13 to call a fault that was in a project
before the pull request under review a pre-existing problem. No grade,
admitted problem or saved verdict holds the earlier field names yet, so
the fields, decision types, audit strata, candidate kind, module, doc and
panel take the new name now.

The three proposal files under bench/rubric keep their names and bytes:
earlier blind sessions read them and the proposed policy pins them.

Part of #135.
…at it earned credit

A pre-existing problem is not a point system: a review raises one, and
the scorecard shows the count without scoring it. The panel is
"Pre-existing problems raised", the doc is docs/pre-existing-problems.md
and the card's counts are named raised. The decision type is
pre-existing-raise, because pre-existing-raised is already an audit
stratum.

Credit rulings in credits.json and the two wording facts they share with
known problems keep their names.

Part of #135.
…r the current decision types

The admission round on the preparation branch for #135 opened at
32d5258 and holds before-records written as older-admission and
older-grouping. A before-record is written once and pinned by hash, so
it cannot be rewritten to the new names. read_before maps the three
earlier spellings to the current ones for a record that pins that
round's opening, and for no other record.

Part of #135.
…earlier decision types

SavedRecordsTest read each saved before-record as written, so it would
refuse older-admission and older-grouping once the round opened before
the rename lands on main, although read_before supports them.

Part of #135.
… stand

The three proposal files were read before the rename and tell graders to
write older_problems, older_candidate and kind older-problem, which
validation now refuses. Activation needs new versions written with the
current field names.

Part of #135.

@kamui kamui left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved (advisory) — no findings.

Reviewed 6f00a74. All 40 changed files reviewed, including schema/producer/consumer alignment, saved-ruling readers, frozen validator dependencies and explorer displays. No actionable findings.

Review details

Intent: Rename dormant older-problem support to pre-existing problems raised, while preserving grading and scoring behavior.

Issue fit: Fits the terminology-only scope of #135; activation, new policy versions and grading remain separate work.

Reviewed: 6f00a74 against merge-base 32d5258.

Checks:

  • Exact-head CI passes: 988 grading tests (18 skipped), five self-tests, 68 web tests, 27 export/evidence tests, client compatibility, current/claim/import validation, build and typecheck. The native-model-instructions test also passes in CI.
  • Locally: 117 focused Python tests pass across the initial run and affected ruling-test rerun after restoring hash-pinned dossier responses; 37 scoring tests and typecheck pass. The live fixture panel correctly shows raised, zero and unavailable results.
  • Compatibility checks cover all three legacy aliases, exact-pin refusal, unchanged saved bytes, v1/v2/v3 mapping and ordinary score isolation. The external 22-record round and the claimed all-198-fingerprint comparison were not independently reproduced; their absence does not leave the rename behavior untested.
  • Other PR-reported runs were treated as supporting assertions unless corroborated above; roster, scorecard, proposal-example and external-round output was not supplied. Published as a non-gating comment under the authenticated author identity.

@kamui
kamui merged commit 05c788b into main Oct 14, 2026
4 checks passed
@kamui
kamui deleted the t3code/issue-135-rename-pre-existing branch October 14, 2026 00:57
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