diff --git a/lib/github_feedback.py b/lib/github_feedback.py
index d729baf..52dbf2e 100644
--- a/lib/github_feedback.py
+++ b/lib/github_feedback.py
@@ -125,7 +125,8 @@ async def on_eval_complete(conn, forgejo_pr: int, *, outcome: str, review_text:
if outcome == "approved":
body = "**Evaluation: Approved**\n\nYour contribution passed automated review and is queued for merge."
if review_text:
- body += f"\n\n\nReview details
\n\n{review_text[:3000]}\n\n "
+ safe_text = review_text[:3000].replace("", "</details>")
+ body += f"\n\n\nReview details
\n\n{safe_text}\n\n "
elif outcome == "rejected":
body = "**Evaluation: Changes Requested**\n\n"
if issues:
@@ -133,7 +134,8 @@ async def on_eval_complete(conn, forgejo_pr: int, *, outcome: str, review_text:
for issue in issues:
body += f"- {issue}\n"
if review_text:
- body += f"\n\nFull review
\n\n{review_text[:3000]}\n\n "
+ safe_text = review_text[:3000].replace("", "</details>")
+ body += f"\n\nFull review
\n\n{safe_text}\n\n "
body += (
"\n\nThe pipeline will attempt automated fixes where possible. "
"If fixes fail, the PR will be closed — you're welcome to resubmit."
diff --git a/teleo-pipeline.py b/teleo-pipeline.py
index ba0080c..95f412b 100644
--- a/teleo-pipeline.py
+++ b/teleo-pipeline.py
@@ -47,12 +47,21 @@ async def stage_loop(name: str, interval: int, func, conn, breaker: CircuitBreak
workers = breaker.max_workers()
succeeded, failed = await func(conn, max_workers=workers)
if failed > 0 and succeeded == 0:
- breaker.record_failure()
+ try:
+ breaker.record_failure()
+ except Exception:
+ logger.warning("Stage %s: breaker write failed", name)
elif succeeded > 0:
- breaker.record_success()
+ try:
+ breaker.record_success()
+ except Exception:
+ logger.warning("Stage %s: breaker write failed", name)
except Exception:
logger.exception("Stage %s: unhandled error in cycle", name)
- breaker.record_failure()
+ try:
+ breaker.record_failure()
+ except Exception:
+ logger.warning("Stage %s: breaker write failed", name)
# Wait for interval or shutdown, whichever comes first
try: