Repository navigation
Expand file tree
/
Copy pathgraph-candidate.yaml
More file actions
83 lines (73 loc) · 2.07 KB
/
Copy pathgraph-candidate.yaml
File metadata and controls
83 lines (73 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# The sub-graph one fanout candidate runs.
#
# A candidate is just a run: its own directory, its own manifest, its own lock,
# its own workspace. That is why nothing here had to be made parallel-safe --
# candidates never write to the same files, so the dispatcher, the manifest and
# the resume path all work unchanged.
#
# It starts at code (the plan was made and approved once, on the trunk) and ends
# at END rather than write: assembling the output is the join's job, once there
# is a winner.
version: 1
entry: code
defaults:
agent: claude_code
model: claude-opus-5
timeout_seconds: 900
# Tighter than the trunk graph: with N candidates running, a generous repair
# budget multiplies by N. Two attempts, then this candidate is out of the race.
limits:
fix:
max_attempts: 2
on_exceeded: give_up
nodes:
code:
impl: aeg.nodes.code
kind: agentic
tools:
allowed: [Read, Write, Edit, MultiEdit, Glob, Grep]
disallowed: [WebFetch, WebSearch]
test:
impl: aeg.nodes.test
kind: deterministic
timeout_seconds: 600
config:
command: ["{python}", "-m", "pytest", "-q"]
coverage_report: coverage.xml
review:
impl: aeg.nodes.review_sonar_cli
kind: deterministic
timeout_seconds: 900
config:
scanner: tools/sonar-scanner-7.3.0.5189-windows-x64/bin/sonar-scanner.bat
host_url: http://localhost:9000
token_file: infra/.sonar-token
# One Sonar project per candidate. Analysing every candidate under a
# single key would have them overwrite each other's results, and the join
# would then rank them on whichever finished last.
project_key: aeg-candidate-{run_id}
qualitygate_timeout: 300
fix:
impl: aeg.nodes.fix
kind: agentic
tools:
allowed: [Read, Write, Edit, MultiEdit, Glob, Grep]
disallowed: [WebFetch, WebSearch]
give_up:
impl: aeg.nodes.give_up
kind: deterministic
END:
kind: terminal
edges:
code:
done: test
test:
pass: review
fail: fix
review:
pass: END
fail: fix
fix:
done: test
give_up:
done: END