Skip to content

fix(scheduler): make shadow scheduling read-only - #7

Merged
mattebad merged 1 commit into
mainfrom
recovery/rec-f05
Sep 13, 2026
Merged

mattebad merged 1 commit into
mainfrom
recovery/rec-f05

Conversation

@mattebad

Copy link
Copy Markdown
Owner

REC-F05 — initialization-free, mutation-free shadow scheduling

Baseline: d150b7861983b09f0d6e1060b2282c85f6694134 (merged PR #6).

Acceptance

  • CLI shadow and non-live run leave absent database paths/directories absent; use isolated query-only memory state.
  • Existing canonical state opens read-only; service construction/shadow do not seed flow rows, advance occurrences/clocks, claim runs, reserve actions, acquire leases, or start handlers.
  • Existing due rows still yield candidate diagnostics with no run ID.
  • Read-only state explicitly rejects mutation and real scheduler execution.
  • Real controls and execution retain explicit disabled-flow initialization and persisted gates. Includes the retained pnsctl real pulse caller cutover.
  • Escaped SQLite URI paths address the exact file; failed setup closes handles on Windows.

Verification (Windows, isolated Python 3.12)

  • python -m unittest tests.test_automation_service_canonical_authority tests.test_automation_service_cli tests.test_automation_service_scheduler_canonical tests.test_pnsctl_scheduler_pulse — 48 passed.
  • python scripts/check.py — 298 passed.
  • Existing affected CI selection — 114 passed (same modules retained in offline.yml).
  • python -m compileall -q automation_service safe_action_core scripts tasks tools — passed.
  • git diff --cached --check and git diff --check d150b7861983b09f0d6e1060b2282c85f6694134...HEAD — passed.
  • Disposable public-CLI/API smoke: absent shadow path remains absent; mutation and real pulse denied on isolated read-only state; literal # filename opens exact DB.

CI adds the focused tests to both Windows and Ubuntu jobs; hosted results remain the merge gate. Offline green is not native/scheduler/production acceptance. No device, native observation, production-state mutation, registration, enablement, or protected evidence changes. No merge requested.

Move initialization to explicit control and execution paths. Reject real pulses on observation-only state and preserve absent database paths.
@mattebad
mattebad merged commit 52a270b into main Sep 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant