Final planned OpenWorkflow application PR, following #69 and #70.
Replace refresh, pending-expiry, and calendar-repair timers/coalescing with native UTC schedules (every five minutes, hourly, and every ten minutes).
Await actual maintenance passes inside durable steps. Preserve expected provider-failure handling while letting local errors reach native retries.
Persist schedules through native worker startup, then independently enqueue all three startup passes. Preserve administrative pause state, one execution slot, and the default 30-second lease.
Share ordered shutdown across signals/config restarts: stop watching and HTTP admission, await actual worker stop and HTTP closure, then close queue and application databases. Cover partial startup failures and parked work.
Make the entrypoint readable as named startup phases, with implementation details in services/startup.ts and resource ownership/failure cleanup visible in main().
Document queue/outcome interpretation, public schedule management, and the drained grouped rollout; add unchanged web/CLI producer-contract regressions.
Commits
feat(worker): await native cron maintenance and stop resources in order
docs(worker): explain native maintenance and the drained grouped rollout
The entrypoint refactor is part of the first commit. No further implementation commits are planned for this PR, aside from review fixes if needed.
Validation
Full workspace typechecks, lint, coverage gates, and production builds passed.
296 worker tests, 21 jobs tests (100% coverage), 638 web tests, and 45 CLI tests passed; remaining shared-package suites passed.
23 browser tests passed with builds/browser validation run serially.
Worker gates rerun after the entrypoint extraction; 25 focused boot/lifecycle tests also passed.
Real-engine tests cover schedule upsert/pause/restart, UTC boundaries, overdue catch-up, startup plus cron, awaited completion, serialization/blocking, native default retries, and shutdown with active/parked work.
Synthetic current-engine rehearsal verified read-only refusal for unfinished/unknown states, public schedule management, and WAL-aware paired backup/restore on copies. Rehearsal artifacts stay ignored; no old-engine fixtures or upgrade integration test.
Slow active maintenance can delay appointment jobs and probes at concurrency one. Repeated requests each receive a pass; there is no coalescer or latency reservation. Worker stop waits for active passes to finish or park, not for the queue to drain.
Do not deploy intermediate images or replay unfinished old histories through changed workflow graphs. Stop producers, let the old worker drain all unfinished work, stop it, and take consistent paired app/queue backups before the grouped web/worker/CLI rollout. If draining cannot complete, halt for an explicit operator decision rather than deleting work. Release/version/tag and deployment still require separate authorization. See docs/deployment.md#grouped-workflow-rollout.
Closes #67.
## Summary
Final planned OpenWorkflow application PR, following #69 and #70.
- Replace refresh, pending-expiry, and calendar-repair timers/coalescing with native UTC schedules (every five minutes, hourly, and every ten minutes).
- Await actual maintenance passes inside durable steps. Preserve expected provider-failure handling while letting local errors reach native retries.
- Persist schedules through native worker startup, then independently enqueue all three startup passes. Preserve administrative pause state, one execution slot, and the default 30-second lease.
- Share ordered shutdown across signals/config restarts: stop watching and HTTP admission, await actual worker stop and HTTP closure, then close queue and application databases. Cover partial startup failures and parked work.
- Make the entrypoint readable as named startup phases, with implementation details in `services/startup.ts` and resource ownership/failure cleanup visible in `main()`.
- Document queue/outcome interpretation, public schedule management, and the drained grouped rollout; add unchanged web/CLI producer-contract regressions.
## Commits
1. `feat(worker): await native cron maintenance and stop resources in order`
2. `docs(worker): explain native maintenance and the drained grouped rollout`
The entrypoint refactor is part of the first commit. No further implementation commits are planned for this PR, aside from review fixes if needed.
## Validation
- Full workspace typechecks, lint, coverage gates, and production builds passed.
- 296 worker tests, 21 jobs tests (100% coverage), 638 web tests, and 45 CLI tests passed; remaining shared-package suites passed.
- 23 browser tests passed with builds/browser validation run serially.
- Worker gates rerun after the entrypoint extraction; 25 focused boot/lifecycle tests also passed.
- Real-engine tests cover schedule upsert/pause/restart, UTC boundaries, overdue catch-up, startup plus cron, awaited completion, serialization/blocking, native default retries, and shutdown with active/parked work.
- Synthetic current-engine rehearsal verified read-only refusal for unfinished/unknown states, public schedule management, and WAL-aware paired backup/restore on copies. Rehearsal artifacts stay ignored; no old-engine fixtures or upgrade integration test.
- Correctness/readability reviews completed; named-value-before-argument/return cleanup verified.
## Operating notes
Slow active maintenance can delay appointment jobs and probes at concurrency one. Repeated requests each receive a pass; there is no coalescer or latency reservation. Worker stop waits for active passes to finish or park, not for the queue to drain.
Do not deploy intermediate images or replay unfinished old histories through changed workflow graphs. Stop producers, let the old worker drain all unfinished work, stop it, and take consistent paired app/queue backups before the grouped web/worker/CLI rollout. If draining cannot complete, halt for an explicit operator decision rather than deleting work. Release/version/tag and deployment still require separate authorization. See `docs/deployment.md#grouped-workflow-rollout`.
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.
Closes #67.
Summary
Final planned OpenWorkflow application PR, following #69 and #70.
services/startup.tsand resource ownership/failure cleanup visible inmain().Commits
feat(worker): await native cron maintenance and stop resources in orderdocs(worker): explain native maintenance and the drained grouped rolloutThe entrypoint refactor is part of the first commit. No further implementation commits are planned for this PR, aside from review fixes if needed.
Validation
Operating notes
Slow active maintenance can delay appointment jobs and probes at concurrency one. Repeated requests each receive a pass; there is no coalescer or latency reservation. Worker stop waits for active passes to finish or park, not for the queue to drain.
Do not deploy intermediate images or replay unfinished old histories through changed workflow graphs. Stop producers, let the old worker drain all unfinished work, stop it, and take consistent paired app/queue backups before the grouped web/worker/CLI rollout. If draining cannot complete, halt for an explicit operator decision rather than deleting work. Release/version/tag and deployment still require separate authorization. See
docs/deployment.md#grouped-workflow-rollout.