feat: dev-agent → supervisor escalation via escalations.jsonl
When dev-agent exhausts CI fix budget, writes escalation marker. Supervisor picks it up next poll and invokes claude -p to diagnose (flaky test? rate limit? real bug?) and decide: fix, close PR, or escalate to human.
This commit is contained in:
parent
6abe24f3a5
commit
64b464b01b
2 changed files with 11 additions and 1 deletions
|
|
@ -967,7 +967,10 @@ while [ "$REVIEW_ROUND" -lt "$MAX_REVIEW_ROUNDS" ]; do
|
|||
CI_FIX_COUNT=$(( ${CI_FIX_COUNT:-0} + 1 ))
|
||||
if [ "$CI_FIX_COUNT" -gt 2 ]; then
|
||||
log "CI failure not recoverable after ${CI_FIX_COUNT} fix attempts"
|
||||
notify "❌ PR #${PR_NUMBER} CI failed ${CI_FIX_COUNT}x: ${FAILED_STEP:-unknown}. Needs human attention."
|
||||
# Escalate to supervisor — write marker for factory-poll.sh to pick up
|
||||
echo "{\"issue\":${ISSUE},\"pr\":${PR_NUMBER},\"reason\":\"ci_exhausted\",\"step\":\"${FAILED_STEP:-unknown}\",\"attempts\":${CI_FIX_COUNT},\"ts\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" \
|
||||
>> "${FACTORY_ROOT}/factory/escalations.jsonl"
|
||||
log "escalated to supervisor via escalations.jsonl"
|
||||
break
|
||||
fi
|
||||
|
||||
|
|
|
|||
|
|
@ -267,6 +267,13 @@ done
|
|||
# =============================================================================
|
||||
# P4: HOUSEKEEPING — stale processes
|
||||
# =============================================================================
|
||||
# Check for dev-agent escalations
|
||||
ESCALATION_FILE="${FACTORY_ROOT}/factory/escalations.jsonl"
|
||||
if [ -s "$ESCALATION_FILE" ]; then
|
||||
ESCALATION_COUNT=$(wc -l < "$ESCALATION_FILE")
|
||||
p3 "Dev-agent escalated ${ESCALATION_COUNT} issue(s) — see ${ESCALATION_FILE}"
|
||||
fi
|
||||
|
||||
status "P4: housekeeping"
|
||||
|
||||
# Stale claude processes (>3h, not caught by P0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue