feat(evidence): add exact-SHA validation evidence#120
Conversation
Connector handoff checkpointRepository coordination is complete through current head Completed through the connector:
Current blocker:
Local continuation requirements:
The issue #114 contract and |
Local handoff blocker: stale pytest temp directoryThe Codex starting checks matched the canonical branch and SHAs, but stopped because the repository-root path This path is not product source. The completed worker ExecPlan already records the full suite as passing while explicitly excluding the unreadable permitted Disposition:
No GitHub branch, PR, issue, or code state changed as a result of this local-only blocker. PR #120 remains open, draft, unmerged, and based on |
|
Local continuation remains blocked before any repository edit. The mandatory safety checks passed, but Windows denied ownership transfer for the stale repository-root The cleanup script stopped before Required operator action: open PowerShell as Administrator, remove only the exact non-reparse, untracked |
Local implementation checkpoint — quota-blocked, nothing new pushedCodex stopped before committing or pushing incomplete issue #114 implementation because its execution quota was exhausted. Verified remote state
Local-only state reported by Codex
Required continuationPreserve the existing dirty worktree exactly. Do not reset, clean, stash, switch branches, rebase, or discard files. On resume, verify the expected local/remote relationship, rerun the blocked focused tests with the necessary Windows execution permissions, complete validation, update the living ExecPlan, commit the remaining coherent implementation, push only the existing branch, and keep this PR draft and unmerged for connector review. |
Nobodyworld
left a comment
There was a problem hiding this comment.
Connector review at effa3271fbe5afe2ba2ca5f53ea42089cddb7f8e confirms the implementation scope, exact-SHA identity binding, fixed trusted argv, evidence containment/hashing/retention, compact endpoint, two server-backed executions, and fully green hosted matrix.
One acceptance boundary remains before this PR should be marked ready:
The server must independently reject absolute local paths in worker-submitted compact evidence and terminal result text.
The trusted worker currently redacts Windows/POSIX paths before building summaries, and the end-to-end test confirms the normal worker-produced API response contains no local paths. However, the server-side ExecutionEvidence/ExecutionCompletionIn contracts still accept arbitrary bounded strings in fields such as step summary, terminal_reason, and result_summary. An authenticated malformed or buggy worker can therefore submit a local absolute path that the server persists and returns through /api/execution/runs, or submit it inside evidence returned by /api/execution/runs/{run_id}/evidence.
Required narrow correction:
- Put the absolute-local-path detection policy in a server-owned shared helper.
- Reject Windows and POSIX absolute-local-path shapes recursively across compact evidence free-text fields.
- Apply the same rejection to completion
result_summaryand other terminal free-text returned by run APIs. - Keep relative artifact/log references valid.
- Add direct schema/API regressions that submit malformed worker payloads; do not only assert that the normal worker happened to redact them.
- Preserve current worker redaction as defense in depth.
- Rerun focused evidence/API tests and the complete hosted matrix.
Keep the PR draft and unmerged until this server-side output invariant is proven.
Nobodyworld
left a comment
There was a problem hiding this comment.
Final connector review completed at e938d3fdc3937babb4f13d3a7980a6c704b8cebd.
The prior server-output blocker is resolved:
- absolute local path detection is server-owned and recursive;
- Windows drive, UNC,
file:URI, and rooted POSIX path forms are rejected; - safe relative artifact/log paths and common non-local URIs remain valid;
- malformed worker completion/evidence payloads fail before persistence;
- corrupt persisted run/evidence text fails closed without echoing the path;
- worker redaction remains defense in depth;
- deterministic fingerprint and exact-SHA evidence behavior remain intact.
The follow-up is limited to two commits and six files beyond the previously reviewed head. The branch remains 15 commits ahead and zero behind its exact base. Final Commitlint 29901539272 and CI 29901539178 are successful, including lint, typecheck, tests, security, secrets audit, links, strict browser UI, and coverage.
No connector-review blockers remain for issue #114. The PR is suitable to leave draft status and enter normal review/merge gating. Do not merge without owner authorization.
|
Additional independent evidence from documentation PR #123 confirms the ownership-loss race fixed in this PR is real and remains present on current PR #123 final-head CI run The documentation changes do not touch worker code. Gitleaks, links, lint/pre-commit, Mypy, and security passed on that run; only the known nondeterministic cancellation regression failed. PR #123 has therefore been returned to draft and explicitly blocked behind this PR rather than duplicating the runtime fix. PR #120 itself remains unchanged at |
Summary
Delivers issue #114 from the exact merged-worker base and adds the first complete deterministic exact-SHA validation workflow.
Trusted manifest:
Implemented
GET /api/execution/runs/{run_id}/evidence.Server output safety
The final connector-review follow-up adds a server-owned absolute-local-path policy independent of worker redaction:
file:URIs, and rooted POSIX paths in compact evidence;Direct malformed-worker schema and API tests prove rejected payloads are not persisted or returned.
Validation
Final SHA workflows:
29901539272— success;29901539178— success.The complete hosted matrix passed:
Recorded local evidence:
pip-audit: no known vulnerabilities;3a8422b70e15133be064094e46358c22a661a929and1bb9bc24daadd3d46064323a76a25ff353b6ea65.Local-only limitation: the shared interpreter retains its unrelated pre-existing
opencv-python/ NumPypip checkconflict. Hosted Python 3.11 validation is fully green.Boundaries
This PR does not add artifact-byte upload/download, GitHub integration, MCP, cost routing, evidence reuse, a known-baseline registry, RPA, arbitrary commands, or repository writes.
Full logs and artifact bytes remain local. Normal APIs expose only strict compact metadata, safe relative references, and hashes.
Closes #114.