swarm-controller: the review classifier reads a diff with 200 lines of context
The classifier read the forge's PR `.diff`, whose context is fixed at 3 lines. A block moved into a glue module lost its enclosing gate (a `config = lib.mkIf …` 13 to 191 lines up in the misfired moves #5199, #5200, #5201), so the glue restating that gate read as a new condition. The controller now builds the diff itself: it lists the PR's changed files, reads each at the merge base and at the head through the git tree and blob API with the token it already holds, and diffs them with 200 lines of context. It sends the forge's `.diff` instead when the PR changes more than 100 files, the forge names no merge base, or the wide diff is over 256 KiB, and the posted review then says so with the reason. Fixes #5227
This commit is contained in:
parent
2ab8be61a2
commit
2b6d480d9c
8 changed files with 517 additions and 18 deletions
|
|
@ -55,7 +55,7 @@ pub struct TryOut {
|
|||
pub head_sha: String,
|
||||
/// Oldest first.
|
||||
pub commits: Vec<Commit>,
|
||||
/// The PR's unified diff, as the forge serves it.
|
||||
/// The PR's unified diff from its merge base to its head.
|
||||
pub diff: String,
|
||||
pub classifications: Vec<Classification>,
|
||||
/// The model every classification runs on, as claude's `--model` takes it.
|
||||
|
|
|
|||
Loading…
Reference in a new issue