The service stops scheduling work itself; the cluster does (homelab PR follows).
NewPOST /api/v1/encyclopedia/run (Write policy): syncs, then runs the encyclopedia. 200 with the summary; 502 when the run fails or the text model stopped it (e.g. the API spend limit), so the CronJob's Job fails visibly; 503 when the encyclopedia is disabled. The run is not cancelled when the caller hangs up, only on shutdown.
RemovedEncyclopediaBackgroundService and Encyclopedia:RunAt/TimeZone.
Sync: the 30-min interval loop is gone; SyncBackgroundService keeps the startup sync and the webhook trigger. The interval becomes a CronJob calling the existing POST /api/v1/sync. Wiki:Sync:IntervalSeconds/RetrySeconds removed.
Merge order: this first; the homelab PR (CronJobs, scheduler API key, network policy) after Flux rolled this image. Between the two merges no scheduled encyclopedia/interval sync runs; the webhook still syncs on every push.
Tests: 541 pass (Host 140: the scheduler tests replaced by endpoint tests for 401, 503, 200-after-sync, 502 on failure, 502 on model stop).
The service stops scheduling work itself; the cluster does (homelab PR follows).
- **New** `POST /api/v1/encyclopedia/run` (Write policy): syncs, then runs the encyclopedia. 200 with the summary; 502 when the run fails or the text model stopped it (e.g. the API spend limit), so the CronJob's Job fails visibly; 503 when the encyclopedia is disabled. The run is not cancelled when the caller hangs up, only on shutdown.
- **Removed** `EncyclopediaBackgroundService` and `Encyclopedia:RunAt`/`TimeZone`.
- **Sync:** the 30-min interval loop is gone; `SyncBackgroundService` keeps the startup sync and the webhook trigger. The interval becomes a CronJob calling the existing `POST /api/v1/sync`. `Wiki:Sync:IntervalSeconds`/`RetrySeconds` removed.
Merge order: this first; the homelab PR (CronJobs, scheduler API key, network policy) after Flux rolled this image. Between the two merges no scheduled encyclopedia/interval sync runs; the webhook still syncs on every push.
Tests: 541 pass (Host 140: the scheduler tests replaced by endpoint tests for 401, 503, 200-after-sync, 502 on failure, 502 on model stop).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
The service no longer schedules work itself. POST /api/v1/encyclopedia/run
syncs and runs the encyclopedia; it answers 502 when the run fails or the
text model stopped it, so a CronJob shows a failed run as a failed Job.
The sync loop keeps its startup sync and the webhook trigger; the 30-min
interval is a CronJob calling POST /api/v1/sync.
Removed: EncyclopediaBackgroundService, Encyclopedia RunAt/TimeZone,
Wiki:Sync IntervalSeconds/RetrySeconds.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The service stops scheduling work itself; the cluster does (homelab PR follows).
POST /api/v1/encyclopedia/run(Write policy): syncs, then runs the encyclopedia. 200 with the summary; 502 when the run fails or the text model stopped it (e.g. the API spend limit), so the CronJob's Job fails visibly; 503 when the encyclopedia is disabled. The run is not cancelled when the caller hangs up, only on shutdown.EncyclopediaBackgroundServiceandEncyclopedia:RunAt/TimeZone.SyncBackgroundServicekeeps the startup sync and the webhook trigger. The interval becomes a CronJob calling the existingPOST /api/v1/sync.Wiki:Sync:IntervalSeconds/RetrySecondsremoved.Merge order: this first; the homelab PR (CronJobs, scheduler API key, network policy) after Flux rolled this image. Between the two merges no scheduled encyclopedia/interval sync runs; the webhook still syncs on every push.
Tests: 541 pass (Host 140: the scheduler tests replaced by endpoint tests for 401, 503, 200-after-sync, 502 on failure, 502 on model stop).
🤖 Generated with Claude Code