Commit graph

864 commits

Author SHA1 Message Date
Jonathan Singer
83176652f5 Run confirmed finding fixes as native agents in the scan sandbox 2026-09-30 12:55:01 -04:00
yoni
17894006b4 Keep an approved fix when only the PR text changes 2026-09-30 08:24:08 +00:00
yoni
ba6bbaf9c6 Include repair follow-ups in the readable review 2026-09-30 08:21:23 +00:00
yoni
e4f1fe6cfc Merge remote-tracking branch 'origin/main' into devin/1790308365-verified-fix-preparation 2026-09-30 08:18:59 +00:00
Jonathan Singer
868ba53927 Scope fix validation and warn on repeated commands 2026-09-30 03:47:36 -04:00
Jonathan Singer
77bd5dade5 Require an explicit fix handoff for source-backed findings 2026-09-30 03:40:21 -04:00
Ahmed Allam
ef272b8e0d chore(models): remove the model quality warning and its allowlists 2026-09-30 10:04:28 +03:00
Jonathan Singer
1c1a899b3c Focus fix agents and preserve completion evidence 2026-09-30 01:28:56 -04:00
Jonathan Singer
acf262f1c6 Keep fix outputs private and outside the source checkout 2026-09-30 01:07:43 -04:00
Jonathan Singer
d35197bea1 Move complete fix workflow into OSS and add strix fix CLI 2026-09-30 00:43:53 -04:00
Jonathan Singer
5badb2d541 Remove retired fix execution and proof machinery 2026-09-29 23:26:23 -04:00
Jonathan Singer
348fbf2608 Support native fix-agent assignments and final reviewed patches 2026-09-29 22:36:47 -04:00
Ian
9b72488c92 docs + unit test fix 2026-09-30 04:46:01 +03:00
Ian
c77bdd2c2a Disable by default 2026-09-30 04:46:01 +03:00
Ian
c814f6bf30 Made session IDs optional 2026-09-30 04:46:01 +03:00
Ian
a1658fe59b Scarf support 2026-09-30 04:46:01 +03:00
Ian
3fbccc6b1d Non-streaming path 2026-09-30 04:46:01 +03:00
Ian
c9aebc6c87 larger default block size 2026-09-30 04:46:01 +03:00
Ian
95fbd8d687 Openrouter sticky sessions for caching, with telemetry 2026-09-30 04:46:01 +03:00
Ahmed Allam
463b149bdb fix(budget): parked agents count as active; park never overwrites a stop
active_agents_except (finish_scan, wait_for_message) treats budget_paused as
active, so a root cannot finish the scan over a parked child. park_for_budget
only transitions a running agent, and the wake back to running happens under
the coordinator lock.
2026-09-30 03:13:40 +03:00
Ahmed Allam
d355838ea0 feat(budget): budget_policy=pause parks every agent at the limit until the operator resumes
Adds budget_policy: stop | pause to run_strix_scan / ReportUsageHooks /
AgentCoordinator, independent of interactive mode. Under pause the agents
get no budget warnings and no sub-agent reserve; each agent parks before
its next LLM call once spent >= limit or the scan is paused, sessions and
sandbox stay alive, and coordinator.resume_budget(max_budget_usd=...)
replaces the limit and wakes every parked agent without adding anything
to any session. coordinator.pause_budget() parks a running scan the same
way. In-flight calls are never cancelled, so spent may end above the
limit. Parked agents count as active for stop_agent.
2026-09-30 03:13:40 +03:00
Jonathan Singer
d184142377 Let fix reviewer own validation and completion 2026-09-29 17:59:58 -04:00
ian-at-strix
0ff9f8c324
feat(tui): animate the wait_for_agents indicator (#1383) 2026-09-29 14:39:07 -07:00
ian-at-strix
954bc0d527
perf(prompt): load requested skills after a cache point (#1382)
Siblings differ only in the skills they were spawned with, but those came
first in <specialized_knowledge>, so their prompts diverged at 39%. Shared
skills and the catalog now come first, and the requested skills follow a
cache point, so siblings share 93%.

The extra system message takes a fourth Claude breakpoint, so the Bedrock
tool_config one goes: the first system breakpoint already covers the tools.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 00:35:22 +03:00
ian-at-strix
e66c56c473
perf(llm): give Claude a cache point before the per-run scope (#1376)
* perf(llm): give Claude a cache point before the per-run scope

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(llm): split the system prompt at a generic <cache_point> marker

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 00:35:22 +03:00
ian-at-strix
50425c2c99
perf(prompt): put per-run scope at the end of the system prompt (#1375)
* perf(prompt): put per-run scope at the end of the system prompt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(prompt): assert scope renders once, after the shared prefix

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 00:35:21 +03:00
Jonathan Singer
43391ebefa Let repair and review agents own the fix workflow 2026-09-29 16:22:49 -04:00
Jonathan Singer
0faa7b7da1 Make fix handoffs actionable and require customer unit tests 2026-09-29 13:27:27 -04:00
alex s
6ae036e6c1
docs(skills): refresh framework behavior and security testing guidance (#1372) 2026-09-29 10:11:02 -07:00
Jonathan Singer
f03fd72d79 Simplify fix preparation around native tests and independent review 2026-09-29 11:49:00 -04:00
Jonathan Singer
85b3030816 Preserve partial fixes and require consistent execution evidence 2026-09-29 05:31:58 -04:00
yoni
791ef9106d fix: let independent evidence resolve repair timeout 2026-09-29 08:22:18 +00:00
Jonathan Singer
198a254be8 Make preparation history factory explicit for strict type checking 2026-09-29 03:56:52 -04:00
Jonathan Singer
f213a7da6a Require functional fix evidence and preserve partial preparation work 2026-09-29 03:53:31 -04:00
ian-at-strix
0c702723aa
fix(tui): suspend on ctrl+z (#1371)
Bubble Tea's raw mode clears ISIG, so ctrl+z reached the TUI as a key and
was ignored instead of stopping the job. Return tea.Suspend for it on every
screen, and re-enable mouse tracking on resume, since Bubble Tea's restore
brings back the alt screen but not the mouse mode.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-28 22:44:25 -04:00
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
Yash Aslekar
d6dd9dec26
fix(dev): make check-all non-mutating (#1360) 2026-09-27 17:47:20 -07: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
2b413da544 Keep prepared candidates and staleness consistent across revisions
A report revision whose locations can no longer form a candidate now
still supersedes any recorded preparation instead of leaving a ready
result pointing at superseded locations.

Preparation results carry the candidate that was actually verified so
SARIF emits the anchor-corrected edits rather than comparing the stored
draft's digest against a re-anchored one.
2026-09-25 07:06:21 +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
devin-ai-integration[bot]
ae38fe70cd
Fill in blank tool-call ids so strict providers accept the history (#1355) 2026-09-23 18:34:22 -07:00
alex s
4c1be22150
Let agents delete a vulnerability report they filed (#1354) 2026-09-23 17:25:23 -07:00
devin-ai-integration[bot]
56f7d45388
feat(llm): structured per-attempt provider request log with provider request ids (#1353) 2026-09-22 20:49:41 -07:00
yoni-at-strix
e158eab3f8
feat(mcp): initialize connections lazily (#1347)
* feat(mcp): initialize connections lazily

* fix(mcp): replace terminally dead sessions

* fix(mcp): improve targeted tool discovery

* fix(mcp): limit active tool fallback
2026-09-22 14:02:02 -04:00