Skip to content

Commit cd3a9c4

Browse files
committed
fix: address all remaining low-severity audit issues
1 parent cc7c873 commit cd3a9c4

4 files changed

Lines changed: 22 additions & 8 deletions

File tree

internal/evolution/engine.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,10 @@ func New(repoPath string, logger *slog.Logger) *Engine {
108108
}
109109
tid := generateTraceID()
110110
tools := iteragent.DefaultTools(repoPath)
111-
skills, _ := iteragent.LoadSkills([]string{filepath.Join(repoPath, "skills")})
111+
skills, err := iteragent.LoadSkills([]string{filepath.Join(repoPath, "skills")})
112+
if err != nil {
113+
slog.Warn("failed to load skills, agent will run without them", "err", err)
114+
}
112115
e := &Engine{
113116
repoPath: repoPath,
114117
repo: repo,
@@ -154,6 +157,8 @@ func (e *Engine) loadPRState() {
154157
}
155158
var state PRState
156159
if err := json.Unmarshal(data, &state); err != nil {
160+
e.logger.Warn("pr_state.json is corrupted, clearing it", "err", err)
161+
os.Remove(path)
157162
return
158163
}
159164
e.prNumber = state.PRNumber
@@ -368,8 +373,11 @@ func (e *Engine) handlePRReviewAndMerge(ctx context.Context, p iteragent.Provide
368373
result.PRURL = e.prURL
369374
_ = e.appendLearningJSONL(firstLine(extractCommitMessage(output)), "evolution", "", "")
370375
e.appendJournal(result, output, p.Name(), true)
376+
e.clearPRState()
371377

372-
_ = e.switchToMain(ctx)
378+
if err := e.switchToMain(ctx); err != nil {
379+
e.logger.Warn("failed to switch to main after merge", "err", err)
380+
}
373381
}
374382

375383
// auditLog appends a tool call or error to .iterate/audit.jsonl for debugging.

internal/evolution/journal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (e *Engine) appendJournal(result *RunResult, output, provider string, succe
7474
newContent := header + entry + rest
7575

7676
if err := os.WriteFile(path, []byte(newContent), 0o644); err != nil {
77-
e.logger.Warn("failed to write journal", "err", err)
77+
e.logger.Error("failed to write journal", "err", err, "path", path)
7878
}
7979
}
8080

internal/evolution/phases.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,10 @@ func (e *Engine) runTaskAttempt(ctx context.Context, p iteragent.Provider, task
247247

248248
// loadImplementContext prepares the system prompt for implementation using cached tools and skills.
249249
func (e *Engine) loadImplementContext() (string, []iteragent.Tool, *iteragent.SkillSet) {
250-
identity, _ := os.ReadFile(filepath.Join(e.repoPath, "docs/IDENTITY.md"))
250+
identity, err := os.ReadFile(filepath.Join(e.repoPath, "docs/IDENTITY.md"))
251+
if err != nil {
252+
e.logger.Warn("failed to load IDENTITY.md, agent will run without identity context", "err", err)
253+
}
251254
systemPrompt := buildSystemPrompt(e.repoPath, string(identity))
252255
return systemPrompt, e.tools, e.skills
253256
}

scripts/evolution/evolve.sh

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@ acquire_lock() {
2222
if [[ -n "$OLD_PID" ]] && kill -0 "$OLD_PID" 2>/dev/null; then
2323
LOCK_AGE=$(( $(date +%s) - $(stat -c %Y "$PID_FILE" 2>/dev/null || echo 0) ))
2424
if [[ $LOCK_AGE -lt $LOCK_TIMEOUT ]]; then
25-
log "ERROR: Another evolution running (PID $OLD_PID, age ${LOCK_AGE}s)"
25+
log "ERROR: Another evolution running (PID $OLD_PID, age ${LOCK_AGE}s) — aborting"
2626
exit 1
27+
else
28+
log "WARNING: Stale lock found (PID $OLD_PID, age ${LOCK_AGE}s) — killing and continuing"
29+
kill "$OLD_PID" 2>/dev/null || true
2730
fi
2831
fi
2932
rm -f "$PID_FILE"
@@ -37,9 +40,9 @@ release_lock() {
3740

3841
trap release_lock EXIT
3942

40-
mkdir -p "${REPOPATH}/.iterate"
41-
mkdir -p "${REPOPATH}/memory"
42-
mkdir -p "${REPOPATH}/docs"
43+
mkdir -p "${REPOPATH}/.iterate" || { echo "ERROR: failed to create .iterate dir"; exit 1; }
44+
mkdir -p "${REPOPATH}/memory" || { echo "ERROR: failed to create memory dir"; exit 1; }
45+
mkdir -p "${REPOPATH}/docs" || { echo "ERROR: failed to create docs dir"; exit 1; }
4346
acquire_lock
4447

4548
log "=== iterate evolution cycle started ==="

0 commit comments

Comments
 (0)