Status: experimental Phase B1
Tracker: #5
Product milestone: #16
IDKMesh’s first real local node emits a repository candidate bundle rather than a JSON answer fixture:
changes.patch
stdout.txt
stderr.txt
result-manifest.json
The candidate patch is still an untrusted worker claim. The verifier must independently reconstruct evidence from the bytes in that bundle and must not accept the node’s own changed_paths, policy counters, or success status as proof.
This backend extends the existing canonical verification chain:
WorkUnit
-> ResultManifest
-> EvaluatorPlan
-> local_verifier backend
-> VerificationResult
-> human/integration decision
It does not create a second verifier package or a second VerificationResult protocol.
schemas/evaluator-plan-v0.2.schema.json defines the first explicit non-JSON evaluator backend.
The plan remains:
The v0.2 backend is:
backend.type = unified_diff
verifier.adapter = deterministic-patch-verifier
v0.1 remains the deterministic exact-JSON evaluator; it is not reinterpreted or overloaded with fake patch fields.
Patch-path authority comes from the WorkUnit, not the worker or EvaluatorPlan:
constraints.allowed_paths;constraints.forbidden_paths;permissions.filesystem_write.For the first fixture this is intentionally equivalent to the canonical node smoke boundary:
allowed: README.md
forbidden: .github/**, SECURITY.md
write: README.md
The evaluator independently parses the unified diff and checks every observed old/new path against those rules.
The first deterministic semantic check is deliberately narrow: the EvaluatorPlan specifies one or more exact lines that must appear as added hunk content.
This is not a universal semantic code reviewer. It is a verifier-owned acceptance fixture proving that:
The canonical node integration can bind the same backend to the harmless README smoke marker after #34/#37 is synchronized and accepted.
The backend independently reconstructs:
diff --git, ---, and +++ headers;/dev/null is treated as absence of one side, not a repository path;+ lines excluding file headers;succeeded;The evaluator deliberately ignores worker extensions such as changed_paths or policy_violation_count as acceptance evidence. Those values may be useful diagnostics, but the verifier recomputes the relevant facts.
For the first patch WorkUnit, the required validators are:
result-manifest-schema
independent-review
The patch backend emits those exact IDs as its required VerificationResult checks.
result-manifest-schema covers the schema-valid, exact-bound worker claim.
independent-review aggregates the independently observed artifact/log integrity, patch scope, verifier-owned semantic condition, and conservative worker-status gate.
The EvaluatorPlan runner rejects a backend when its implemented validator set does not exactly match the WorkUnit-required set.
patch-self-test uses self-consistent worker ResultManifests so the independent evaluator—not a malformed worker claim—creates the distinction:
SECURITY.md;The patch evaluator does not:
results/.A future test/static-analysis/sandbox backend may execute trusted verifier-owned tools against a controlled materialization, but that requires a separately reviewed execution boundary.
After this metadata-only backend is green and reviewed:
Do not expand to a universal patch evaluator before one real node candidate is replayable end to end.