You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
S4: docs — scheduler as the one schedule surface; verb-compat, deprecations, scoped break
- CHANGELOG: Added (lifecycle on SchedulerClient, reason=), Changed (scoped
breaking get/save/list_for_agent removal with one-line migrations; typed
get_schedule), Deprecated (AgentScheduleClient/ScheduleClient/
get_agent_schedule_client), Fixed (PUT-first with 405->GET fallback across
server families).
- docs/SCHEDULE.md: verb-compatibility note (OSS=PUT, Orkes=GET, transparent
fallback), pause reason= example (OSS-only storage), new Schedule Lifecycle
Helpers section (the six typed-error operations; reads/writes/lists stay on
the native methods).
- docs/agents/{advanced,api-reference,writing-agents}.md: schedule surface
documented on SchedulerClient; samples migrated off the removed wrappers;
deprecation guidance for the shim symbols.
- AGENTS.md §1.2: HAND-FIX policy — never regenerate scheduler_resource_api.py
without re-applying the marked fixes; the contract guard tests fail loudly.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-`MetricsSettings` gains `clean_directory` and `clean_dead_pids` for opt-in stale `.db` file cleanup (both default to `False`)
14
+
-`SchedulerClient` now carries the schedule lifecycle operations itself: `pause(reason=)`, `resume`, `delete`, `run_now`, `preview_next`, `reconcile` (declarative tri-state sync) — with typed errors (`ScheduleNotFound`, `InvalidCronExpression`, ...). `pause_schedule` gains an optional `reason=` (stored by OSS Conductor servers; ignored by Orkes servers)
14
15
15
16
### Changed
16
17
17
18
-**Multiprocessing start method now defaults to `spawn` on all platforms** (was `fork` everywhere except Windows). `fork` caused silently-restarting `SIGSEGV` worker subprocesses on macOS (exitcode `-11`) and fork-with-held-lock deadlocks on POSIX.
18
19
- Legacy metrics emit unchanged by default; no env var required
19
20
-`metrics_collector.py` is now a compatibility shim; `from conductor.client.telemetry.metrics_collector import MetricsCollector` continues to work
21
+
-**Breaking (scoped):** schedule client objects no longer expose the mapped `get`/`save`/`list_for_agent` wrappers — `SchedulerClient`'s native methods are the source of truth: `get(wire)` → `get_schedule(wire)`, `save(schedule, agent)` → `save_schedule(SaveScheduleRequest)`, `list_for_agent(agent)` → `get_all_schedules(workflow_name=agent)`. The module-level `schedules.list/get/save` functions (and their `ScheduleInfo` returns) are unchanged
22
+
-`get_schedule` returns a typed `WorkflowSchedule` (or `None` for missing schedules) instead of a raw camelCase dict, matching its declared annotation and [docs/SCHEDULE.md](docs/SCHEDULE.md); dict-consumers should switch to attribute access or `to_dict()`
23
+
24
+
### Deprecated
25
+
26
+
-`AgentScheduleClient`/`ScheduleClient` and `OrkesClients.get_agent_schedule_client()` — fully functional delegation shims over `SchedulerClient`; use `get_scheduler_client()`. Removal planned for the next major release
20
27
21
28
### Fixed
22
29
23
30
-`@worker_task` workers are now picklable, making the decorator path work with the `spawn`/`forkserver` start methods (fixes `TypeError: cannot pickle '_thread.lock' object` and `PicklingError: it's not the same object as ...`; issues #264, #271): `Worker.api_client` is created lazily in the worker process, runtime state (locks, pending async tasks, background loop) is excluded from pickling and rebuilt in the child, and decorated functions are pickled as importable references resolved in the child
24
31
-`TaskHandler.start_processes()` no longer hangs the interpreter when a worker fails to start (e.g., unpicklable state under `spawn`); it now cleans up already-started subprocesses and raises with actionable guidance
25
32
- Worker processes killed by a signal now log a diagnostic hint (signal number, `PYTHONFAULTHANDLER=1` guidance) instead of restarting silently
33
+
- Per-schedule pause/resume now work on both Conductor server families: the client sends `PUT` (the OSS Conductor dialect — the spec-generated `GET` failed there) and transparently falls back to `GET` on a 405 for Orkes servers, caching the working dialect per client instance
0 commit comments