diff --git a/docs/current_roadmap.md b/docs/current_roadmap.md index 4c69d4b0..eb3d3b4a 100644 --- a/docs/current_roadmap.md +++ b/docs/current_roadmap.md @@ -58,10 +58,12 @@ Reuse the scheduler, activation, lineage, and reducer-aware barrier machinery: - [`ADR-0006: explicit fork and topology-driven gather`](adr/0006-explicit-fork-and-topology-driven-gather.md) - [`Draft contract and verification gates`](superpowers/specs/2026-09-06-fork-gather-design.md) -Production planning remains gated on correlation analysis and merge-order -semantics. The draft records two reproduced reference-model defects and points -to archived runnable research; passing that prototype's tests is not approval -to copy it into the runtime. +Production planning remains gated on correlation analysis, merge-order +semantics, and closure of the draft's owner-completion, failure-cleanup, +scope-boundary, occurrence-state, and checkpoint-integration decisions. The +draft records two reproduced reference-model defects and points to archived +runnable research; passing that prototype's tests is not approval to copy it +into the runtime. The isolated [`reference verification plan`](superpowers/plans/2026-09-07-fork-gather-reference-verification.md) diff --git a/docs/deployment_scheduling.md b/docs/deployment_scheduling.md index 8cdc7809..d1f0ac29 100644 --- a/docs/deployment_scheduling.md +++ b/docs/deployment_scheduling.md @@ -141,9 +141,13 @@ and the Python client (`App` schedule methods) share these operations: ## Hypothetically used as follows -EXECUTABLE example (runs in CI as -`tests/examples/test_scheduled_deployment_example.py`; run it with -`uv run pytest -q tests/examples/test_scheduled_deployment_example.py`): +The complete runnable setup is covered by +[`tests/examples/test_scheduled_deployment_example.py`](../tests/examples/test_scheduled_deployment_example.py) +(run it with `uv run pytest -q tests/examples/test_scheduled_deployment_example.py`). +The abbreviated sequence below is illustrative rather than executable as +written because it elides setup details: + +ILLUSTRATIVE example (the runnable test above contains the complete setup): ```python server = build_local_static_workflow_server(root, schedules=True) @@ -168,8 +172,7 @@ page = await server.api.schedules.list_schedule_occurrences( await service.stop() ``` -ILLUSTRATIVE example (not executed; shows a cron week with an operator -pause — same calls, longer horizons): +Longer-horizon operator example (also illustrative and not executed): ```python # Monday: an hourly report, latest-wins catch-up, at most two at once. diff --git a/docs/superpowers/plans/2026-09-10-rabbitreview-103-remediation.md b/docs/superpowers/plans/2026-09-10-rabbitreview-103-remediation.md new file mode 100644 index 00000000..091b1982 --- /dev/null +++ b/docs/superpowers/plans/2026-09-10-rabbitreview-103-remediation.md @@ -0,0 +1,59 @@ +# CodeRabbit 103: Selected Scheduling Corrections + +**Status:** active +**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 + +- [ ] 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. +- [ ] 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. +- [ ] Normalize and validate history interval identity; add equivalent-offset, + invalid-endpoint, and duplicate-prevention tests. +- [ ] Add nonzero asynchronous lock backoff and rerun lifecycle, shutdown, + deadlock, cancellation, and settlement pins. +- [ ] 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. +- [ ] Harden selected pagination, protocol, durability, subprocess, timer, + and controlled revision-race tests. Keep test-only cleanup separate from + production correctness. +- [ ] Correct the four selected documentation statements and lint every + changed Markdown file. +- [ ] 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. +- [ ] 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. diff --git a/docs/thesis/system-design-implementation.md b/docs/thesis/system-design-implementation.md index 1d1df990..f812c0d3 100644 --- a/docs/thesis/system-design-implementation.md +++ b/docs/thesis/system-design-implementation.md @@ -1287,11 +1287,13 @@ that every suite was rerun during this document revision. ## Current Walkthrough Check -During this revision on September 7, 2026, the Python blocks in the report -walkthrough were executed in order against the example server configuration -with an isolated temporary store. An in-process client port substituted for -the HTTP connection. The check exercised discovery, graph construction, -validation, saving, deployment, execution, refresh, and trace inspection. +During this revision on September 7, 2026, an adapted version of the Python +blocks in the report walkthrough was executed as an in-process smoke check +against the example server configuration with an isolated temporary store. +The adapted check used an in-process client port in place of the displayed +HTTP connection; the walkthrough blocks were not executed unchanged. It +exercised discovery, graph construction, validation, saving, deployment, +execution, refresh, and trace inspection. The fixed fixture produced the expected title, three action items, and Markdown heading. A deliberate invalid output binding was rejected before diff --git a/docs/wf_api_architecture.md b/docs/wf_api_architecture.md index 269a4e75..d14e5fb5 100644 --- a/docs/wf_api_architecture.md +++ b/docs/wf_api_architecture.md @@ -249,6 +249,7 @@ WorkflowApi artifacts: WorkflowArtifactApi deployments: WorkflowDeploymentApi runs: WorkflowRunApi + schedules: WorkflowScheduleApi ``` These domain services are allowed to return `dict[str, Any]` payloads because