[checkpoint] Make CritPt global batching checkpoint-safe
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.2k
- Forks
- 349
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 324
Description
Parent
Child of #3223 and #3024.
Shared state
resources_servers/critpt/app.py owns process-global pending submissions, execution membership, futures/waiters, submission/batch counters, API-key cursor, and optional disk cache.
Proposed capability
Persist logical pending submissions/IDs, memberships, monotonic counters, key cursor, and committed cache identity. Rebuild runtime futures and locks, remove retired attempts, and avoid resubmitting committed batches.
Do not serialize futures, locks, credentials, waiters, or raw external handles. Capability reporting must distinguish coordinated-global, drain-only, and restart-only semantics from ordinary per-session export/restore.
Acceptance criteria
- Restore a partially filled batch and a persisted-before-fire batch without duplicate submission or cross-attempt contamination.
- Prepare accounts for every accepted shared operation and fails closed at its deadline.
- Process replacement leaves no stale waiter, batch member, metric interval, or actor reference.
- Duplicate prepare/restore/resume is idempotent or rejected deterministically.
- Cold restart and failure cleanup are covered.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with resources_servers/critpt/app.py and the parent issues #3223 and #3024 to map the process-global state and checkpoint boundaries. Use the acceptance criteria as the completion checklist, especially restore of partial and persisted-before-fire batches, replacement cleanup, idempotent resume, cold restart, and failure cleanup. Do not serialize runtime-only objects such as futures, locks, credentials, waiters, or external handles.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100