alpha
Login
or
Join now
geofox.org
/
publisher
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
A small go app to cross-post/publish to various social platforms.
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
publisher
/
docs
/
at
main
1 folder
Geoffrey Richard
Automated failure recovery (Retrier) + observability + compose auto-grow (v1.2.0) (#7)
1mo ago
bd5c9b7b
superpowers
Automated failure recovery (Retrier) + observability + compose auto-grow (v1.2.0) (#7) * docs: design for automated failure recovery (Retrier) + observability Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: implementation plan for automated failure recovery (Retrier) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * dispatch: exponential backoff helper for auto-retry * dispatch: guard backoff against int64 overflow; clarify doc For large attempt counts (~63+) the old d *= 2 could overflow int64 to a negative value, causing the >= max check to never fire and returning a negative duration. Introduce a next variable and bail early when next <= 0 (overflow) or next >= max. Add a regression test case (attempt=100) and reword the doc comment to avoid "attempt-th attempt". Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * config: AUTO_RETRY_* and RETRIER_TICK settings (auto-retry on by default) * store: gave_up_at + relay retry_count columns; load last_attempt_at in GetPost * store: PostsNeedingRetry + MarkTargetGaveUp/MarkRelayGaveUp * store: clear gave_up_at on success; bump relay retry_count on rebroadcast * store: status=attention filter + AttentionCount * dispatch: Retrier worker — platform-level auto-retry with backoff Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * dispatch: log mark-gave-up errors; use strings.Join in retrier Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * dispatch: test Retrier give-up + alert-once * dispatch: Retrier relay-level auto-retry + give-up; load relay attempted_at Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * dispatch: relay loop style + relay not-due skip test Replace `for ti := range post.Targets { t := post.Targets[ti] }` with `for _, t := range post.Targets` in processPost's relay block to match the platform loop's style above it (t is only read, never addressed). Add TestRetrierRelayLevelSkipsNotDue: mirrors TestRetrierRelayLevelRetry but sets now() only 30s after seed (< 2m base backoff), verifying the relayDue gate holds and the down relay stays "failed" rather than being retried. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * dispatch: alert on immediate post delivery failure/partial Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * api: GET /api/posts/attention/count for the attention badge * main: start the Retrier and wire the dispatcher alerter Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * web: History attention filter chip + live count badge * web: per-target auto-retry status line in history detail Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs: document automatic failure recovery + AUTO_RETRY_* settings * retrier/web: nil-guard give-up alert, clarify relay cap, refresh badge after manual retry Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * web: auto-expand the compose field with content (capped, then scroll) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 month ago