feat(evidence): reuse exact validation evidence - #129
Conversation
Nobodyworld
left a comment
There was a problem hiding this comment.
Connector review of exact head 2766d428b6917872fd5be0465baa2b2cd011e3f3 found two actionable blockers before PR #129 can be marked ready.
-
Fail-closed source consistency is incomplete (
server/execution/service.py,_validated_reuse_candidate). Candidate lookup requires a succeeded/fresh source run, but final structural validation does not require the joined source work order to besucceededand does not reject inconsistent fresh-run provenance columns (reused_from_run_id,source_evidence_fingerprint, or retained candidate metadata). A malformed/inconsistent database row can therefore pass more of the exact-source path than the issue's fail-closed contract permits. Require source run/work-order/provenance consistency explicitly and add regressions proving each inconsistency is skipped in favor of an older valid candidate or yields unavailable. -
The Windows junction test does not reach junction verification (
client/python/tests/test_execution_worker_evidence.py,test_reuse_rejects_junctioned_source_artifact). It changes only the candidate artifact path whileresult.jsonstill contains the original evidence, so the verifier exits atsource_result_identity_mismatchbefore_assert_no_reparse_ancestryexamines the junction. Rebuild the matching marker-bound result/evidence/candidate for the junction path and assert the bounded unsafe-artifact disposition produced by the filesystem check. Preserve the POSIX symlink proof.
Also reconcile .agent/execplans/011_exact_evidence_reuse.md: its Progress and Outcomes still say push/hosted validation are pending. Record the final hosted IDs in the PR review record or explain the non-self-referential evidence convention in the plan while marking delivery complete.
No broader product change is requested. Preserve never, allow_exact, require_exact, the existing lease model, and all current trust boundaries. Keep the PR draft and unmerged.
Nobodyworld
left a comment
There was a problem hiding this comment.
Final connector re-review of exact head 410ab710785699b02a93f304fbb868ffdeb01a7a is complete.
The two blockers from review 4831588385 are resolved:
- Candidate validation now requires mutually consistent succeeded work-order/run state, fresh provenance with no source linkage or retained candidate metadata, and authoritative joined-row refresh. Seven malformed-source variants skip closed to an older valid exact source or return unavailable without mutating malformed rows.
- The Windows junction regression rebuilds matching marker-bound evidence and candidate metadata, reaches the junction-aware safe-path check, and asserts
source_artifact_unsafe; it no longer exits at an earlier identity mismatch.
The living ExecPlan uses the established non-self-referential workflow convention. Exact corrected-head workflows are green: Commitlint 30663586952 and CI 30663586953; lint, typecheck, test, security, Secrets audit, Link check, Coverage, and Browser UI tests all succeeded. No review threads remain.
No remaining technical, security, documentation, public-hygiene, or validation blocker was found. GitHub does not permit self-approval by the PR author, so this verdict is recorded as a COMMENT review. PR #129 may be marked ready, but must remain unmerged until a separate exact-head owner authorization.
Completed
Issue #121 was completed by owner-authorized squash merge of this PR.
Delivered behavior
neverremains the compatible default and executes fresh.allow_exactreuses only after exact identity matching and source-worker marker/artifact proof; failed proof falls back fresh at most once under the same live lease.require_exactnever invokes validation and returns a bounded non-success result when exact verified evidence is unavailable.Final evidence
git diff --checkpassed;Review corrections
Initial connector review
4831588385identified two narrow blockers. Both were resolved before merge:source_artifact_unsafe.This merge does not add cost routing, MCP, browser/RPA workers, automatic approval, automatic merge, or artifact-byte transfer.