"""Reno scheduling engine — Phase 1 (Stage 2). A minimum-viable DAG scheduler: - Rules Engine: BOQ item -> activity + dependency drafts (template-driven). - DAG Service: persist graph + cycle check (Kahn) + topo sort + descendants. - Calendar Service: 24/7 stub (Stage 3 swaps the implementation). - Scheduling Engine: CPM forward pass -> immutable schedule_versions. NOTE: the brief targets Node+TS+Fastify+Postgres. Per project direction this is implemented in Python (FastAPI + Pydantic + pytest) on SQLite so it runs with no external services. See docs/03-phase1-notes.md for the full deviation log. """