Date: 2026-08-28
Repository: MSKazemi/idkmesh
The project owner instructed: Continue.
The standing project rule is to preserve substantive collaboration publicly in the repository and to prefer bounded, executable, independently reviewable progress over untested expansion.
Issue #157 records the Phase B2 first-five benchmark burn and the Task 001 calibration result:
While this continuation was beginning, concurrent PR #164 merged EvaluatorPlan v0.3 and verifier 0.2.0. v0.3 correctly preserved historical v0.2 semantics and introduced explicit added-line substring matching.
That concurrent implementation was therefore adopted rather than duplicated.
The post-burn Task 001 adversarial evidence demonstrates that added-substring presence alone is not sufficient for the calibrated transition objective.
A decoy can mention a safe API in an added line while leaving the unsafe mechanism untouched.
Changing v0.3 in place after this evidence would repeat the same semantic-integrity mistake the project is trying to prevent. The continuation therefore introduces another explicit version boundary instead.
EvaluatorPlan v0.4 / deterministic patch verifier 0.3.0 represents a textual transition as both:
required safe substring appears in an added line
AND
required unsafe substring appears in a removed line
v0.4 does not execute candidate code. It reuses:
and adds only the required removed-line substring observation.
Historical meanings remain distinct:
v0.2 / verifier 0.1.1 = exact full added lines
v0.3 / verifier 0.2.0 = added-line substrings
v0.4 / verifier 0.3.0 = added-line + removed-line substrings
A small deterministic fixture is used instead of rewriting the burned benchmark:
Correct replacement:
-unsafe_call(args.value)
+safe_call(args.value)
Goodhart decoy:
unsafe_call(args.value)
+<!-- safe_call( -->
The same correct patch is evaluated through v0.2, v0.3, and v0.4. The decoy is evaluated through v0.3 and v0.4.
Expected matrix:
correct: v0.2 reject, v0.3 support, v0.4 support
decoy: v0.3 support, v0.4 reject
This preserves the historical v0.3 weakness as evidence rather than hiding it.
schemas/evaluator-plan-v0.4.schema.jsonexperiments/transition_patch_verifier.pyexperiments/evaluator_plan_runner.py — canonical v0.4 routing only; v0.1–v0.3 meanings remain availableverification/fixtures/patch-transition-evaluator-plan-v0.4.jsonverification/fixtures/patch-transition/correct.patchverification/fixtures/patch-transition/decoy.patchtests/test_patch_evaluator_transition_v04.py.github/workflows/phase0-schema-check.ymldocs/specifications/EVALUATOR_PLAN_V0_4_TRANSITION_SEMANTICS.mdAdded+removed substring checks are stronger than added presence alone but are still static proxies.
They do not prove behavioral correctness or security. When a stronger behavioral/negative evaluator is warranted, it should be separately versioned, sandboxed, provenance-bound, and frozen before outcomes. Candidate code remains unexecuted by the v0.4 metadata-only backend.
This work grants no canonical-write, push, approval, merge, candidate-selection, or project-spending authority.
The change is intended to remain a reviewable pull request. The original Phase B2 first-five cohort and frozen evaluator plans remain untouched.