Commit graph

9 commits

Author SHA1 Message Date
yoni
00fcb4c93a fix: classify distinct check failures correctly 2026-09-28 12:41:23 +00:00
yoni
df313c1438 refactor fix preparation gates 2026-09-28 12:13:19 +00:00
yoni
c510f58ef3 fix: retry transient verifier inconclusive results 2026-09-28 01:53:04 +00:00
yoni
a41000d5bf Retry unchanged repairs when verification changes 2026-09-25 21:57:34 +00:00
yoni
d02b74c3c0 Preserve explicit blocked repair outcomes 2026-09-25 21:12:49 +00:00
yoni
9d525ade7f Add bounded fix verification feedback loop 2026-09-25 21:08:38 +00:00
yoni
be1c2e4767 Withhold automatic fixes when repairs exceed the recorded draft
Repair can change files beyond the candidate's draft edits while the
manifest still verifies. Comparing the applied draft hashes against the
final manifest now demotes the result to ready_with_gaps, so SARIF and
other auto-apply consumers never offer a fix that omits verified
changes.
2026-09-25 07:15:11 +00:00
yoni
49eca20a1a Harden fix preparation against review findings
- Resolve edit/anchor/manifest paths and require workspace containment so
  committed symlinks cannot redirect reads or writes outside the checkout.
- Treat unreadable or non-UTF-8 anchor targets as missing instead of
  raising, and never let candidate anchoring block report persistence.
- Enforce the declared command policy: subprocess env is an allowlist plus
  credentials_allowed, and commands run in a network namespace (unshare)
  when network_allowed is false, or are rejected when isolation is
  unavailable.
- Require a clean worktree in addition to a matching HEAD commit so
  pre-existing uncommitted changes are not attributed to the fix.
- Expand untracked directories into per-file manifest entries.
- Surface failed optional checks as gaps instead of silent readiness.
- SARIF fixes emit only the verified candidate (digest must match the
  recorded fix_candidate), not the stale draft locations.
2026-09-25 06:50:29 +00:00
yoni
f23afb438e Add verified fix preparation engine 2026-09-25 05:16:06 +00:00