Date: 2026-08-28
The current IDKMesh critical path had converged on one missing verification capability:
independently evaluate a real repository patch/result bundle from the canonical node without creating another verifier architecture or executing candidate code.
The canonical foundations already existed:
experiments/local_verifier.py from PR #72;The canonical node branch #34 produces:
changes.patch
stdout.txt
stderr.txt
result-manifest.json
with worker-declared SHA-256 values and worker-reported changed paths. Those claims are useful provenance, but they are not independent acceptance evidence.
Do not revive closed PR #61’s second verifier/ package and do not overload EvaluatorPlan v0.1’s JSON-specific fields with fake patch configuration.
Instead:
VerificationResult v0.1 canonical;idkmesh-local-verifier canonical;unified_diff backend;experiments/evaluator_plan_runner.py;verify_patch_candidate() backend inside experiments/local_verifier.py;The resulting trust chain remains:
WorkUnit
-> untrusted ResultManifest
-> verifier-owned EvaluatorPlan
-> canonical local verifier backend
-> VerificationResult
-> human/integration decision
The patch fixture uses the same validator shape as the canonical node smoke:
result-manifest-schema;independent-review.The patch backend emits those exact IDs as required VerificationResult checks. The EvaluatorPlan runner fails closed if the selected backend’s implemented validator IDs do not exactly equal the WorkUnit-required IDs.
This prevents a backend from claiming success while silently substituting a different verification contract.
The backend does not trust worker extension fields such as changed_paths or policy_violation_count as acceptance evidence.
It independently reconstructs:
allowed_paths / forbidden_paths / filesystem-write authority;Absolute/traversal paths and candidate-root symlinks fail closed. Candidate code is never executed.
A deterministic patch fixture family was added before code so the implementation had an external success target:
SECURITY.md patch with the expected semantic marker;The worker ResultManifests for the first three are self-consistent and report success. The independent evaluator must create the distinction.
The v0.2 plan remains metadata-only and verifier-owned, but makes the backend explicit:
backend.type = unified_diff
verifier.adapter = deterministic-patch-verifier
It binds:
EvaluatorPlan v0.1 remains unchanged for exact-JSON fixtures.
The Evaluator Plan Binding workflow was extended with a separate patch-self-test while preserving the existing v0.1 JSON self-test.
The new matrix requires:
This work does not:
A future verifier-owned test/static-analysis/sandbox backend will require a separately reviewed execution boundary.
This branch is intentionally stacked on PR #90 because new evaluator functionality must inherit the corrected output-authority boundary: generated verification evidence is restricted to ignored root results/ and cannot overwrite canonical tracked repository state.
After #90 merges, this patch backend should be rebased/retargeted to main before integration.
After CI and independent review:
main;No self-merge or autonomous integration is performed in this turn.