60 lines
3.0 KiB
Markdown
60 lines
3.0 KiB
Markdown
# CodeRabbit 103: Selected Scheduling Corrections
|
|
|
|
**Status:** complete
|
|
**Branch:** `opencode/sched-verify-plan`
|
|
**Base under review:** current `HEAD` (`898a250c` at plan start)
|
|
**Scope:** selected findings from `random shit/rabbitreview/103.txt`; no merge,
|
|
push, main-worktree edits, ORM, client-page redesign, broad DTO changes, or
|
|
valid Python 3.14 syntax rewrites.
|
|
|
|
## Invariants
|
|
|
|
- Every schedule mutation is a synchronous compound operation executed while
|
|
the complete `FileScheduleStore.transaction()` is held. Its async public
|
|
method only delegates; no arbitrary coroutine is awaited under the store's
|
|
`threading.RLock`.
|
|
- History interval identity is based on aware UTC endpoints. A half-specified
|
|
or naive interval is rejected; an entry with no interval keeps its existing
|
|
created-time identity.
|
|
- Event-loop lock retries back off briefly without changing cancellation-safe
|
|
cleanup, task registration, or shutdown joining.
|
|
- Existing crash ordering, revision checks, admission authority, and
|
|
no-replay recovery semantics remain unchanged.
|
|
|
|
## Work sequence
|
|
|
|
- [x] Reproduce the selected test weaknesses and inspect current callers,
|
|
then add red-first regression coverage for API/poll transaction ordering,
|
|
interval identity, and the selected test-boundary hazards.
|
|
- [x] Refactor schedule mutations into synchronous transaction-wrapped
|
|
operations while preserving public async signatures and behavior. Verify
|
|
concurrent admin/poll behavior and existing torn-write tests.
|
|
- [x] Normalize and validate history interval identity; add equivalent-offset,
|
|
invalid-endpoint, and duplicate-prevention tests.
|
|
- [x] Add nonzero asynchronous lock backoff and rerun lifecycle, shutdown,
|
|
deadlock, cancellation, and settlement pins.
|
|
- [x] Move pure `walk_expression_paths` traversal to the shared input-binding
|
|
model layer, update imports/docs/tests, apply `expected_revision >= 1`,
|
|
consistent `OccurrenceKind` identity annotations, and PEP 604 dispatch
|
|
unions.
|
|
- [x] Harden selected pagination, protocol, durability, subprocess, timer,
|
|
and controlled revision-race tests. Keep test-only cleanup separate from
|
|
production correctness.
|
|
- [x] Correct the four selected documentation statements and lint every
|
|
changed Markdown file.
|
|
- [x] Run focused suites, Ruff, formatting, basedpyright, and diff-check;
|
|
obtain a fresh independent review when available; re-review confirmed fixes
|
|
and interactions before final handoff.
|
|
- [x] Archive this completed plan under `docs/historical/superpowers/plans/`
|
|
and update any live links if needed.
|
|
|
|
## Verification targets
|
|
|
|
Focused checks include `tests/wf_api/test_schedules.py`,
|
|
`tests/scheduling/test_history_reconcile.py`, `tests/scheduling/test_poll.py`,
|
|
`tests/scheduling/test_lifecycle.py`, `tests/scheduling/test_lock_identity.py`,
|
|
`tests/wf_api/test_resume_attempt.py`, `tests/wf_transport_rpc_http/`,
|
|
`tests/artifacts/test_store.py`, and `tests/core/test_input_sources.py`, plus
|
|
the existing lifecycle/resume/shutdown/recovery pins. Full-repository failures
|
|
will be compared with the actual feature base before being called pre-existing.
|